Dataset yang digunakan dalam artikel ini adalah data set mtcars, dimana data set tersebut adalah bawaan pada RStudio yang berisi tentang spesifikasi kendaraan tahun 1970 seperti nama kendaraan, berat, jumlah silinder,dll.
Untuk mengetahui data tersebut maka tuliskan pada script atau console command berikut kemudian run dengan menekan ctr;+shift+enter.
Gambar script dan console
Pada artikel ini penulis menuliskan command di console. Untuk script artikel ini dapat di download RPubs. Pada artikel ini analisa deskriptif hanya dilakukan untuk menjelaskan pemusatan data dan sebaran data.
data("mtcars")
untuk mengecek dan mengobservasi data pada urutan awal sebanyak 6 data kita bisa menggunakan command berikut :
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
Berdasarkan command perintah tersebut diatas dapat dihasilkan data mobil dengan observasi data pertama adalah data MazdaRx4. Sedangkan spesifikasi mobil dapat dilihat pada kolom-kolom selanjutnya dimana terdapat 11 kolom dari mulai variabel mpg sampai dengan carb. Untuk mengetahui observasi data dengan urutan 6 terakhir kita dapat mengetik command berikut
tail(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.7 0 1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.9 1 1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.5 0 1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.5 0 1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.6 0 1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.6 1 1 4 2
untuk mempelajari lebih jauh mengenai dataset tersebut pembaca dapat mengetikkan command berikut :
?mtcars
informasi command tersebut adalah menampilkan jendela help seperti :
Gambar jendela help tentang mtcars
untuk mengetahui struktur dataset dapat mengetikkan command dibawah ini:
str(mtcars)
## 'data.frame': 32 obs. of 11 variables:
## $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
## $ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
## $ disp: num 160 160 108 258 360 ...
## $ hp : num 110 110 93 110 175 105 245 62 95 123 ...
## $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
## $ wt : num 2.62 2.88 2.32 3.21 3.44 ...
## $ qsec: num 16.5 17 18.6 19.4 17 ...
## $ vs : num 0 0 1 1 0 1 0 1 1 1 ...
## $ am : num 1 1 1 0 0 0 0 0 0 0 ...
## $ gear: num 4 4 4 3 3 3 3 4 4 4 ...
## $ carb: num 4 4 1 1 2 1 4 2 2 4 ...
Berdasarkan hasil command tersebut diketahui bahwa kesebelas variable merupakan variable numerik yang ditampilkan oleh tulisan num. Terdapat 32 observasi atau baris dan 11 variable atau kolom pada dataset.
Central Tendency / Statistik Deskripsi
Pada sesi kali ini penulis akan mengeksplorasi lebih jauh terkait ukuran pemusatan data pada mtcars seperti mean,median dan modus. Untuk mean dan median akan dieksplorasi lebih jauh pada variable berat (wt) sedangkan pada modus akan dieksplorasi pada variabel silinder(cyl) yang merupakan variabel dengan jenis nominal. Pada sesi ini penulis tidak merubah format dari variabel tersebut menjadi factor karena akan penulis jelaskan caranya pada artikel lain.Perhitungan mean dan median akan dilakukan dengan dua cara yaitu menggunakan cara manual dan menggunakan fungsi bawaan dari RStudio.
Pada sesi ini penulis ingin mengetahui berat rata-rata dari 32 mobil pada data tersebut. Nilai rata-rata pada data tersebut dapat dihitung menggunakan Persamaan 1.
$$ \[\begin{align} \overline{X}&= \frac {\sum_{i=1}^{n} X_i}{n } \end{align}\] $$
Pada persamaan 1 dijelaskan bahwa untuk menghitung nilai rata-rata berat mobil pada dataset mtcars kita perlu menjumlahkan seluruh berat mobil dibadi dengan total mobil atau jumlah observasi dari dataset tersebut (n=32). Untuk mencari mean digunakan command berikut
Pada command attach() bertujuan untuk selalu menyretakan seluruh data set pada setiap command yang akan dilakukan
attach(mtcars)
Dari rumus yang ada kita bisa membuat command dengan fungsi sum() yaitu menjumlahkan “value” dari variabel mt dibagi dengan jumlah row dari data set mtcars, yang dapat di buat command sebagai berikut :
sum(wt)/nrow(mtcars)
## [1] 3.21725
Atau dalam bentuk rumus statistik adalah menggunakan command fungsi mean() pada variabel mt :
mean(wt)
## [1] 3.21725
Berdasarkan hasil perhitungan diperoleh nilai rata-rata sebesar 3,21725, pada perhitungan tersebut diperlukan command attach yang berguna untuk selalu menyisipkan dataset pada command selanjutnya. Dengan cara tersebut pada setiap command selanjutnya cukup menuliskan variabelnya saja.
Alternatif lainnya jika tidak menyertakan command attach() adalah menggunakan rangkaian command sebagai berikut :
sum(mtcars$wt)/nrow(mtcars)
## [1] 3.21725
mean(mtcars$wt)
## [1] 3.21725
Selain dapat menghitung mean menggunakan metode aritmatika biasa, fungsi mean() juga dapat digunakan untuk menghitung trimmed mean atau nilai rata-rata yang dihasilkan dengan memotong dataset pada ujung kanan dan kiri nilai rata-ratanya. Metode ini berguna jika pada dataset terdapat outlier.
Pada gambar tersebut trimmed mean diterapkan dengan memotong (trim) 25% data pada ujung kanan dan kiri mean. Pada artikel ini akan dilakukan hal yang sama dimana 5% dat akan dipotong pada ujung kanan dan kiri nilai rata-rata berat mobil. Untuk mengekspolr lebih jauh fungsi mean() dapat menjalankan command ?mean(). Command untuk melakukan hal tersebut adalah sebagai berikut:
mean(wt, trim=0.05)
## [1] 3.2005
Pada kode program dijelaskan bahwa trim 5% untuk memotong data pada ujung kiri dan ujung kanan. Berdasarkan hasil yang diperoleh, nilai rata-rata yang dihasilkan tidak berbeda signifikan dengan menggunakan metode mean aritmetik biasa. Hal ini bias terjadi jika pada data tidak ditemukan adanya outlier. Untuk memperkuat hal tersebut analisa lebih lanjut perlu dilakukan.
Median merupakan nilai tengah dari data yang telah diurutkan. Median merupakan salah satu indikator pusat data, dimana media cenderung lebih resistan terhadap adanya outlier pada data. Langkah-langkah menentukan median pada data antara lain :
Mengurutkan data dari yang terkecil ke yang terbesar atau sebaliknya.
Median merupakan nilai tengah dari data yang diurutkan yang membagi data menjadi dua observasi yang sama besar
Berdasarkan langkah tersebut pada r kita perlu mengurutkan data wt pada mtcars dan menyimpannya sebagai df untuk menerapkan perubahan tersebut. Command untuk melakukan hal tersebut adalah sebagai berikut:
Untuk melihar hasilnya pada exloprasi data sebanyak 6 yang atas dapat dilakukan sebagai berikut :
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
sedangkan untuk menentukan jumlah dari explorasi data menggunakan command sebagai berikut :
nrow(mtcars)
## [1] 32
Kemudian kita bisa menentkan letak baris dari median dengan rumus sebagai berikut :
nrow(mtcars)/2
## [1] 16
dari hasil yang ada dapat dilihat bahwa median terletak pada antara baris 16-17 karena jumlah observasi data adalah genap
Kemudian kita mengambil data dari mtcars pada baris ke 16 kolom ke 6 pada kolom wt
obs.16 = mtcars[16,6]
obs.16
## [1] 5.424
Kemudian kita mengambil data dari mtcars pada baris ke 17 kolom ke 6 pada kolom wt
obs.17 = mtcars[17,6]
obs.17
## [1] 5.345
Dari sini kita bisa mendapatkan median dengan command :
median_manual = (obs.16+obs.17)/2
median_manual
## [1] 5.3845
Kita bisa menentukan median dengan menggunakan rumus fungsi mendian() sebagai berikut :
median_fungsi = median(mtcars$wt)
median_fungsi
## [1] 3.325
Menentukan median dengan fungsi quartile sebagai berikut :
median_quantile = quantile(mtcars$wt,2/4)
median_quantile
## 50%
## 3.325
Fungsi tersebut adalah mengurtkan data dari yang terkecil kemudian di simpan pada df
Berdasarkan hasil komputasi yang diperoleh diketahui nilai median dari berat mobil adalah sebesar 3,325 x (1000) lbs atau 3325 lbs. Nilai ini tidak berbeda jauh dengan nilai mean yang mengindikasikan data simetris. untuk membuktikannya diperlukan uji lebih lanjut.
Untuk menentukan modus pada artikel ini akan dilakukan pada variabel cyl. Perlu diingat bahwa modus dapat digunakan dengan baik jika data kita ordinal atau numerik, namun pada latihan ini akan digunakan pada data numerik yaitu cyl. Hal ini dapat dilakukan mengingat data pada variabel silinder memimiliki nilai diskrit dengan jumlah terbatas yaitu 3, sehingga penentuan modus lebih mungkin dilakukan disbanding menentukan modus pada data kontinyu. Untuk menentukan jumlah silinder dengan frekuensi terbanyak yang dimiliki oleh mobil pada dataset tersebut dapat menggunakan command dibawah ini :
table(mtcars$cyl)
##
## 4 6 8
## 11 7 14
Berdasarkan hasil tersebut dapat disimpulkan bahwa jumlah silinder dengan frekuensi terbanyak pada mobil adalah 8 silinder.
Spread
Sebaran data akan dihitung menggunakan indikator range,IQR, varian dan standar deviasi untuk menghitung sebaran data berat mobil pada data mtcars.
Range mrtupakan selisih antara nilai terbesar dengan nilai terkecil. Adapun langkah-langkah menentukan nilai range antara lain:
Range = Nilai Maks - Nilai Min
Command untuk menghitung range adalah sebagai berikut:
Mendapatkan nilai minimum dengan fungsi min() :
minimum_data = min(mtcars$wt)
minimum_data
## [1] 1.513
Secara manual dengan menggunakan data yang telah diurutkan :
minimum_manual = mtcars[1,6]
minimum_manual
## [1] 2.62
Mendapatkan nilai maksimum dengan fungsi max() :
maksimum_data = max(mtcars$wt)
maksimum_data
## [1] 5.424
Secara manual dengan menggunakan data yang telah diurutkan :
maksimum_manual = mtcars[32,6]
maksimum_manual
## [1] 2.78
Untuk mendapatkan range dapat digunakan dengan fungsi range() :
range_fungsi = range(mtcars$wt)
range_fungsi
## [1] 1.513 5.424
Nilai yang dihasilkan adalah data minimum dan data maksimum. Untuk mendapat kan selisih dengan menghitung manual :
5.424-1.513
## [1] 3.911
Berdasarkan hasil perhitungan diperoleh nilai range berat kendaraan sebesar 3,911 x (1000) lbs atau 3911 lbs.
IQR merupakan indikator sebaran data yang dihitung berdasarkan selisih antara kuarti 3 (Q3) terhadap kuartil 1 (Q1). Adapun langkah-langkah menghitung nilai IQR antara lain:
IQR3 = Q3 - Q1
Command untuk menghitung IQR adalah sebagai berikut:
Q1 = quantile(mtcars$wt,1/4)
Q1
## 25%
## 2.58125
Menentukan Q1 menggunakan fungsi quantile().
Q3 = quantile(mtcars$wt,3/4)
Q3
## 75%
## 3.61
Menentukan Q3 menggunakan fungsi quantile(). Maka untuk menghitung IQR adalah sebagai berikut:
IQR = Q3 - Q1
IQR
## 75%
## 1.02875
Menggunakan cara lain adalah dengan menggunakan fungsi quantile()
quantile(mtcars$wt)
## 0% 25% 50% 75% 100%
## 1.51300 2.58125 3.32500 3.61000 5.42400
Menggunakan fungsi IQR(), maka command sebagai berikut :
IQR = IQR(mtcars$wt)
IQR
## [1] 1.02875
Berdasarkan hasil perhitungan diperoleh nilai IQR sebesar 1,02875.
Varian merupakan jumlah kuadrat deviasi observasi terhadap nilai mean dibagi dengan deraja kebebasannya. Semakin besar nilai varian maka semakin besar sebaran data dari mean. Persamaan 4 merupakan persamaan varian pada sampel.
$$ \[\begin{align} \ S^2 &= \frac {\sum_{i=1}^{n} (X_i - X{X})}{n-1} \end{align}\] $$
Command untuk menghitung varian adalah sebagai berikut:
Pertama mencara nilai rata-rata wt dengan fungsi mean() :
mean.wt = mean(mtcars$wt)
mean.wt
## [1] 3.21725
Mencara jumlah kuadrat deviasi dengan menggunakan rumus :
jumlah.kuadrat.dev = sum((mtcars$wt-mean.wt)^2)
jumlah.kuadrat.dev
## [1] 29.67875
Mencari nilai varian dengan rumus :
varian.manual = jumlah.kuadrat.dev / (nrow(mtcars)-1)
varian.manual
## [1] 0.957379
Cara mencari varian dengan fungsi varian() :
varian.fungsi = var(mtcars$wt)
varian.fungsi
## [1] 0.957379
Berdasarkan hasil perhitungan varian berat mobil sebesar 0,957379 x (1000 lbs)^2.
Standar deviasi pada dasarnya adalah akar dari varian yang dihitung berdasarkan Persamaan 5.
$$ \[\begin{align} \ S &=\sqrt \frac {\sum_{i=1}^{n} (X_i - X{X})^2}{n-1} \end{align}\] $$
Command untuk menghitung standar deviasi adalah sebagai berikut:
Mencari varian menggunakan fungsi var() :
varian.fungsi1 = var(mtcars$wt)
varian.fungsi1
## [1] 0.957379
Menghitung standart deviasi dengan manual :
sd.manual = sqrt(varian.fungsi1)
sd.manual
## [1] 0.9784574
Sdangkan untuk menghitung standart deviasi dengan fungsi sd()
sd.fungsi = sd(mtcars$wt)
sd.fungsi
## [1] 0.9784574
Berdasarkan hasil perhitungan diperoleh nilai standar deviasi berat mobil sebesar 0,9784574 x (1000) lbs atau 978,4574 lbs.
Statistika Deskriptif menggunakan fungsi summary()
Pendekatan lain Untuk melihat secara singkat mengenai statistik deskriptif, yaitu variabel mean, median, min, max dan kuartil, kita dapat menggunakan fungsi summary(). Dimana fungsi ini dapat digunakan pada seluruh variabel pada dataset yang mengandung data numerik maupun sebagian variabel pada dataset. Perintah command line pada analisa statistik deskriptif adalah sebagai berikut:
summary(mtcars)
## mpg cyl disp hp
## Min. :10.40 Min. :4.000 Min. : 71.1 Min. : 52.0
## 1st Qu.:15.43 1st Qu.:4.000 1st Qu.:120.8 1st Qu.: 96.5
## Median :19.20 Median :6.000 Median :196.3 Median :123.0
## Mean :20.09 Mean :6.188 Mean :230.7 Mean :146.7
## 3rd Qu.:22.80 3rd Qu.:8.000 3rd Qu.:326.0 3rd Qu.:180.0
## Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0
## drat wt qsec vs
## Min. :2.760 Min. :1.513 Min. :14.50 Min. :0.0000
## 1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000
## Median :3.695 Median :3.325 Median :17.71 Median :0.0000
## Mean :3.597 Mean :3.217 Mean :17.85 Mean :0.4375
## 3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000
## Max. :4.930 Max. :5.424 Max. :22.90 Max. :1.0000
## am gear carb
## Min. :0.0000 Min. :3.000 Min. :1.000
## 1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:2.000
## Median :0.0000 Median :4.000 Median :2.000
## Mean :0.4062 Mean :3.688 Mean :2.812
## 3rd Qu.:1.0000 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :1.0000 Max. :5.000 Max. :8.000
Atau kita bisa fokus pada satu variabel wt saja, sehingga command line yang digunakan adalah sebagai berikut :
summary(mtcars$wt)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.513 2.581 3.325 3.217 3.610 5.424
Statistika Deskriptif Menggunakan Paket Tidyverse Pembahasan lebih lengkap tentang analisa menggunakan paket tidyverse akan dibahas pada artikel lain dalam blog ini. tidyverse menyediakan sejumlah paket yang berguna untuk melakukan exploratory analysis. Salah satu paket yang digunakan dalam artikel kali ini adalah dplyr yang menyediakan fungsi-fungsi yang berguna dalam melakukan data manipulation. Jika dalam program r belum terinstall instalasi dapa dilakukan dengan mengetikkan command pada console:
install.packages(“tidyverse”)
Analisa statistika deskripti dapat dilakukan dengan menggunakan fungsi summarise(). Pada contoh kasus sebelumnya misalkan kita ingin mengetahui nilai pusat dan sebaran data pada dataset mtcars untuk melihat apakah terdapat perbedaan nilai pemusatan data dan sebaran data pada mobil dengan silinder berbeda. Untuk menjawab kasus tersebut penulis akan memanfaatkan fungsi group_by() untuk mengelompokkan data mobil berdasarkan jumlah silindernya. Command yang digunakan adalah sebagai berikut :
Berdasarkan hasil yang diperoleh dapat dilihat bahwa semakin banyak jumlah silinder pada mobil semakin berat mobil tersebut. Untuk membuktikan apakah nilai rata-rata tersebut berbeda secara signifikan satu sama lain diperlukan analisa lebih lanjut. Berdasarkan data perbandingan media terhadap nilai mean terlihat bahwa distribusi data mobil dengan silinder 4 dan 8 memiliki right-skewed distribution, sedangkan pada mobil dengan silinder 4 memiliki left-skewed distribution. Nilai mean cenderung akan bergeser sesuai dengan arah Panjang ekor distribusi yang terbentuk. Beradasarkan data tersebut diperoleh informasi bahwa sebaran data terbesar adalah pada distribusi mobil dengan silinder 8 yang ditunjukkan oleh nilai standar deviasi yang terbesar.
Referensi