Statistik

Syntax PSPP Membuka File

PSPP merupakan software statistika yang open source, ringan tetapi sangat fungsional dan powerful. Ringan karena installer-nya hanya beberapa MB. Jauh lebih kecil daripada software sejenis yang proprietary. Fungsional dan powerful karena berbagai analisis dapat dilakukan dengan PSPP.

PSPP bisa dijalankan dengan tampilan text ataupun grafis. Uktuk memulai pspp tampilan text

$ pspp
PSPP>

Untuk membuka file, pada PSPP prompt

PSPP> get file='tulis-nama-filenya yang berekstensi sav'.

Bagian dalam tanda kutip adalah file yang akan dibuka.

Uji normalitas dengan python

Uji normalitas data dapat dilakukan dengan beberapa cara antara lain

  1. Visual dengan grafik salah satunya histogram
  2. Uji statistik seperti Kolmogorov-Smirnov atau Shapiro-Wilk

Berikut akan dilakukan uji normalitas atas data konsumsi bir tahun 2010. Data diambil dari https://github.com/fivethirtyeight/data/blob/master/alcohol-consumption/drinks.csv dengan pengubahan nama variabel menjadi lebih singkat.

Uji normalitas dengan histogram

Histogramnya

Dari histogram tersebut tampak dengan jelas bahwa histogram tidak simetris dengan skewness positif. Maka dapat disimpulkan data konsumsi bir ini tidak mengikuti distribusi normal.

Membuat histogram dengan python

Untuk membuat histogram dengan python dibutuhkan library pandas dan matplotlib dengan fungsi .hist() dan rangkaiannya seperti contoh histogram konsumsi bir berikut:

#!/usr/bin/python3

import pandas as pd
import matplotlib.pyplot as plt

# sumber data https://github.com/fivethirtyeight/data/blob/master/alcohol-consumption/drinks.csv
# dengan editing header variabel
alkohol = pd.read_csv("../dataset/drinks.csv")

# histogram
plt.hist(x='beer_servings', data=alkohol)
plt.xlabel('Kaleng')
plt.ylabel('Jumlah')
plt.title('Konsumsi bir tahun 2010 (kaleng)')
plt.tight_layout()
plt.show()

Hasilnya:

Median data dengan python

Misalkan akan dicari berapa median konsumsi alkohol perkapita? Jawabannya bisa diketahui dengan menggunakan fungsi describe() atau median() yang dimiliki pandas.

#!/usr/bin/env python3

import pandas as pd

# sumber data https://github.com/fivethirtyeight/data/blob/master/alcohol-consumption/drinks.csv
# dengan editing header variabel 
data = pd.read_csv("../dataset/drinks.csv")

# median
print('median konsumsi bir adalah ',data['beer_servings'].median(),'kaleng')
print('median konsumsi spirit adalah ', data['spirit_servings'].median())
print('median konsumsi anggur adalah ', data['wine_servings'].median(), 'gelas')
print('median konsumsi alkohol murni adalah ', data['pure_alcohol'].median(), 'liter')

Mean data dengan python

Misalkan akan dicari berapa rerata konsumsi alkohol perkapita? Jawabannya bisa diketahui dengan menggunakan fungsi describe() atau mean() yang dimiliki pandas.

#!/usr/bin/env python3

import pandas as pd

# sumber data https://github.com/fivethirtyeight/data/blob/master/alcohol-consumption/drinks.csv
# dengan editing header variabel 
data = pd.read_csv("../dataset/drinks.csv")

# mean
print('rerata konsumsi bir adalah ',data['beer_servings'].mean(),'kaleng')
print('rerata konsumsi spirit adalah ', data['spirit_servings'].mean())
print('rerata konsumsi anggur adalah ', data['wine_servings'].mean(), 'gelas')
print('rerata konsumsi alkohol murni adalah ', data['pure_alcohol'].mean(), 'liter')

Statistik deskriptif dengan python

Untuk menampilkan statistik deskriptif suatu data, bisa menggunakan fungsi describe() dari library yang dimiliki python yaitu pandas.

Berikut ini akan ditampilkan deskripsi data konsumsi alkohol dunia. Sumber data : https://github.com/fivethirtyeight/data/blob/master/alcohol-consumption/drinks.csv

Data tersebut memuat konsumsi alkohol perkapita dari 193 negara. Ada 4 variabel yaitu :

  1. beer_servings (konsumsi bir yang dinyatakan dalam kaleng)
  2. spirit_servings (konsumsi minuman beralkohol spirit; maaf, variabel ini masih belum penulis pahami sepenuhnya)
  3. wine_servings (konsumsi anggur yang dinyatakan dalam gelas)
  4. pure_alcohol (konsumsi alkohol murni yang dinyataksan dalam liter, nama variabel ini sudah penulis singkat)

Adapun deskripsi yang ditampilkan adalah :

Mengetahui struktur dataset

Untuk menampilkan informasi struktur dataset dapat menggunakan fungsi info() dari pandas.

Data diambil dari https://catalog.data.gov/dataset/alzheimers-disease-and-healthy-aging-data/

#!/usr/bin/env python3

import pandas as pd
data = pd.read_csv("Alzheimer_s_Disease_and_Healthy_Aging_Data.csv")
print(data.info())

Outputnya

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 178539 entries, 0 to 178538
Data columns (total 39 columns):
 #   Column                      Non-Null Count   Dtype  
---  ------                      --------------   -----  
 0   RowId                       178539 non-null  object 
 1   YearStart                   178539 non-null  int64  
 2   YearEnd                     178539 non-null  int64  
 3   LocationAbbr                178539 non-null  object 
 4   LocationDesc                178539 non-null  object 
 5   Datasource                  178539 non-null  object 
 6   Class                       178539 non-null  object 
 7   Topic                       178539 non-null  object 
 8   Question                    178539 non-null  object 
 9   Response                    0 non-null       float64
 10  Data_Value_Unit             178539 non-null  object 
 11  DataValueTypeID             178539 non-null  object 
 12  Data_Value_Type             178539 non-null  object 
 13  Data_Value                  120885 non-null  float64
 14  Data_Value_Alt              0 non-null       float64
 15  Data_Value_Footnote_Symbol  70619 non-null   object 
 16  Data_Value_Footnote         70619 non-null   object 
 17  Low_Confidence_Limit        120750 non-null  float64
 18  High_Confidence_Limit       120750 non-null  float64
 19  Sample_Size                 0 non-null       float64
 20  StratificationCategory1     178539 non-null  object 
 21  Stratification1             178539 non-null  object 
 22  StratificationCategory2     178539 non-null  object 
 23  Stratification2             178539 non-null  object 
 24  StratificationCategory3     0 non-null       float64
 25  Stratification3             0 non-null       float64
 26  Geolocation                 159375 non-null  object 
 27  ClassID                     178539 non-null  object 
 28  TopicID                     178539 non-null  object 
 29  QuestionID                  178539 non-null  object 
 30  ResponseID                  0 non-null       float64
 31  LocationID                  178539 non-null  int64  
 32  StratificationCategoryID1   178539 non-null  object 
 33  StratificationID1           178539 non-null  object 
 34  StratificationCategoryID2   178539 non-null  object 
 35  StratificationID2           178539 non-null  object 
 36  StratificationCategoryID3   0 non-null       float64
 37  StratificationID3           0 non-null       float64
 38  Report                      0 non-null       float64
dtypes: float64(12), int64(3), object(24)
memory usage: 53.1+ MB

Dari output tersebut dapat diketahui antara lain:

Menampilkan data baris terakhir python

Untuk menampilkan data baris terakhir dengan python dapat menggunakan fungsi tail() dari pandas. Tuliskan banyaknya baris yang akan ditampilkan (n) dalam tanda kurung. Kalau n tidak ditulis maka secara default n=5.

Data diambil dari https://catalog.data.gov/dataset/alzheimers-disease-and-healthy-aging-data/

import pandas as pd
data = pd.read_csv("Alzheimer_s_Disease_and_Healthy_Aging_Data.csv")

print(data.tail(7))

Output :

                                                 RowId  ...  Report
178532     2019~2019~9004~Q41~AGE~AGE_OVERALL~RACE~NAA  ...     NaN
178533  2019~2019~9002~Q41~AGE~AGE_OVERALL~GENDER~MALE  ...     NaN
178534            2019~2019~9002~Q42~AGE~5064~RACE~HIS  ...     NaN
178535          2019~2019~9003~Q42~AGE~65PLUS~RACE~ASN  ...     NaN
178536          2019~2019~9002~Q42~AGE~65PLUS~RACE~HIS  ...     NaN
178537            2019~2019~9003~Q42~AGE~5064~RACE~BLK  ...     NaN
178538            2019~2019~9004~Q42~AGE~5064~RACE~NAA  ...     NaN

[7 rows x 39 columns]

Dari output tersebut juga dapat diperoleh informasi jumlah baris dan kolomnya yaitu 178539 baris dan 39 kolom.

Menampilkan data baris pertama python

Untuk menampilkan data baris pertama dengan python dapat menggunakan fungsi head() dari pandas. Tuliskan banyaknya baris yang akan ditampilkan (n) dalam tanda kurung. Kalau n tidak ditulis maka secara default n=5.

Data diambil dari https://catalog.data.gov/dataset/alzheimers-disease-and-healthy-aging-data/

import pandas as pd
data = pd.read_csv("Alzheimer_s_Disease_and_Healthy_Aging_Data.csv")

print(data.head())

Output :

                                          RowId  ...  Report
0  2016~2016~12~Q27~AGE~AGE_OVERALL~GENDER~MALE  ...     NaN
1         2015~2015~66~Q43~AGE~5064~GENDER~MALE  ...     NaN
2         2018~2018~66~Q18~AGE~5064~GENDER~MALE  ...     NaN
3       2018~2018~66~Q34~AGE~5064~GENDER~FEMALE  ...     NaN
4     2015~2015~16~Q43~AGE~65PLUS~GENDER~FEMALE  ...     NaN

[5 rows x 39 columns]

Dari output tersebut juga dapat diperoleh informasi jumlah kolomnya, yaitu 39 yang tidak semua kolom ditampilkan.

Load dataset csv dengan python

Misalkan ada dataset dalam format csv. Data tersebut dapat di-load atau diimpor dengan python dengan library pandas. Berikut script untuk load file data.csv.

import pandas as pd
data = pd.read_csv("data.csv")

Library python untuk statistika

Beberapa library atau module python yang sering digunakan untuk statistika adalah

  1. numpy: digunakan untuk melakukan analisa data numerik dan perhitungan berbasis vektor atau matriks
  2. pandas: digunakan untuk melakukan pengolahan data tabular matplotlib: digunakan untuk melakukan ploting atau penggambaran grafik, dapat digunakan sebagai alat bantu dalam analisa data
  3. statsmodels: digunakan untuk melakukan uji hipotesa, eksplorasi data maupun pemodelan statistika
  4. scipy: digunakan untuk melakukan uji statistika, juga dapat digunakan untuk melakukan pemodelan statistika

Membuat file csv

File csv merupakan file yang umum digunakan sebagai file data. Mudah dalam pembuatannya. Begitu juga dengan aksesnya. Bisa dibuat dengan text editor, spreadsheet software maupun statistical software. Pada kesempatan kali ini tidak menggunakan statistical software seperti R.

Membuat file csv dengan text editor

Prinsip pembuatan adalah :

  1. Antar kolom dipisahkan oleh tanda koma (,)
  2. Kolom pertama (umumnya) sebagai header atau nama/judul kolom
  3. Antar baris dipisahkan oleh enter
  4. Angka dituliskan seperti biasanya
  5. Teks/string dituliskan dalam tanda kutip (" atatu ‘)

Contoh, data kasus malaria tahun 2019 terdiri atas 2 kolom, yaitu provinsi dan jumlah.

Dispersi Data dengan R

Dispersi atau ukuran penyebaran data menunjukkan seberapa bervariasi suatu data. Kali ini data yang digunakan diambil dari dataset ldeaths yang merupakan bagian dari UKLungDeaths. Dataset UKLungDeaths berisi data jumlah kematian akibat penyakit bronchitis, emphysema dan asma di Inggris dalam kurun waktu 1974-1979. Data ini disajikan berdasarkan bulan dan jenis kelamin. Secara total untuk kedua jenis kelamin ada di ldeaths, laki-laki mdeaths dan perempuan fdeaths.

Nilai minimal

min(ldeaths)
[1] 1300

Nilai maksimal

max(ldeaths)
[1] 3891

Range

range(ldeaths)
[1] 1300 3891

Varians

var(ldeaths)
[1] 371911.8

Standar deviasi

sd(ldeaths)
[1] 609.8457

Tendensi Sentral dengan R

Data yang digunakan :

> nilai
[1] 25 60 79 32 57 74 52 70 82 36 75 77 81 95 41 65 92 85 55 66 52 10 64 75 78
[26] 25 80 98 81 67 41 71 83 54 64 72 88 62 74 45 60 78 89 76 48 84 84 90 15 79
[51] 35 67 17 82 69 74 63 80 85 61

Mean

> mean(nilai)
[1] 65.31667

Rerata nilai adalah 65,31667.

Median

Cara 1 : menggunakan median()

> median(nilai)
[1] 70.5

Cara 2 : menggunakan quantile()

Karena median tak lain adalah kuartil 2 atau dengan kata lain posisinya di tengah-tengah atau pada posisi 50% maka

> quantile(nilai, 0.5)
 50% 
70.5

Median nilai adalah 70,5.

Modus

> names(which.max(table(nilai)))
[1] "74"

Modus adalah 74.

Kuartil 1

> quantile(nilai, 0.25)
  25% 
54.75

Kuartil 1 nya adalah 54,75.

Input Data R

Input data dalam R sangat mudah dan ada beragam cara, yaitu:

  1. Menuliskan dalam bentuk syntax. Data diinput sebagai vektor. Penulis lebih suka menggunakan cara ini apabila data tersebut 1 variabel saja dan banyaknya tidak lebih dari 30. Kadang juga penulis gunakan untuk data yang banyaknya kurang dari 100
  2. Melalui data frame. Data diinput ke dalam bentuk tabel. Baris tabel menunjukkan kasus sedangkan kolomnya adalah variabel. Cocok digunakan apabila lebih dari 1 variabel.
  3. Import dari file. Data dibuat tanpa menggunakan R dan disimpan ke dalam bentuk file. Data bisa dibuat menggunakan text editor (contoh vim, gvim, nano, pico, kate), aplikasi perkantoran (LibreOffice Calc dan Microsoft Excel) atau aplikasi statistik lainnya seperti SPSS, Minitab, dan Stata).

Pada kesempatan ini yang digunakan adalah cara pertama. Misalkan datanya adalah nilai ujian dari 60 mahasiswa sebagai berikut :