Statistika Deskriptif

mean, sd, median, quantile, dan pandangan robust terhadap pencilan.

Daftar isi

Statistika deskriptif merangkum sekumpulan data menjadi beberapa angka yang mudah dibaca. Topik ini memperkenalkan fungsi-fungsi dasarnya di R, yaitu mean, median, sd, var, quantile, IQR, dan summary, yang dijalankan pada satu vektor maupun pada data frame. Pembahasan ditutup dengan perbandingan mean dan median pada data yang memuat pencilan, sehingga keputusan memilih salah satunya punya dasar yang jelas. Data contohnya berupa nilai ujian siswa yang sepenuhnya dibuat untuk keperluan latihan.

Rata-rata, median, dan simpangan baku#

Rata-rata (mean) dihitung dengan menjumlahkan seluruh nilai lalu membaginya dengan banyaknya data. Notasi matematisnya dituliskan sebagai berikut, dengan nn menyatakan banyaknya data.

xˉ=1n∑i=1nxi \bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i

Median adalah nilai tengah data setelah data diurutkan, sedangkan simpangan baku (standard deviation) mengukur jarak tipikal antara setiap nilai dan rata-ratanya. Varians adalah kuadrat dari simpangan baku dan muncul di banyak rumus statistik lanjutan. Keempat besaran tersebut dihitung di R dengan fungsi mean(), median(), sd(), dan var(). Data contohnya berupa nilai ujian statistika dari dua belas siswa yang disimpan dalam vektor nilai. Paket tidyverse dimuat terlebih dahulu karena tibble dari paket tersebut digunakan pada contoh data frame.

r
library(tidyverse)

nilai <- c(72, 78, 65, 88, 90, 74, 81, 69, 85, 77, 80, 76)
text Keluaran
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.2.1     ✔ readr     2.2.0
✔ forcats   1.0.1     ✔ stringr   1.6.0
✔ ggplot2   4.0.3     ✔ tibble    3.3.1
✔ lubridate 1.9.5     ✔ tidyr     1.3.2
✔ purrr     1.2.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

Setiap fungsi dipanggil langsung pada vektor tersebut tanpa argumen tambahan.

r
mean(nilai)
median(nilai)
sd(nilai)
var(nilai)
text Keluaran
[1] 77.91667
[1] 77.5
[1] 7.464563
[1] 55.7197

Kelas ini memiliki nilai rata-rata 77,9 dan median 77,5. Kedua ukuran pusat memberikan angka yang hampir sama, tanda bahwa sebaran nilai tidak miring secara berlebihan ke satu sisi. Simpangan baku 7,46 berarti jarak tipikal antara satu nilai ujian dan rata-rata kelas sekitar 7,5 poin. Nilai varians 55,72 persis merupakan kuadrat dari 7,464563, sehingga kedua fungsi itu konsisten satu sama lain.

Kuantil dan ringkasan dengan summary()#

Kuantil (quantile) memotong data terurut pada probabilitas tertentu, misalnya kuartil pada 0,25, 0,50, dan 0,75. Rentang antarkuartil (interquartile range, IQR) adalah jarak antara kuartil ketiga dan kuartil pertama, yaitu rentang yang menampung 50 persen data di tengah. Fungsi min() dan max() melengkapi gambaran dengan batas ekstrem data. Keempat besaran itu dihitung pada vektor nilai berikut.

r
min(nilai)
max(nilai)
quantile(nilai)
IQR(nilai)
text Keluaran
[1] 65
[1] 90
  0%  25%  50%  75% 100% 
65.0 73.5 77.5 82.0 90.0 
[1] 8.5

Pemanggilan quantile(nilai) tanpa argumen probabilitas mengembalikan lima nilai pada 0%, 25%, 50%, 75%, dan 100%, yaitu nilai minimum, kuartil pertama, median, kuartil ketiga, dan nilai maksimum. IQR bernilai 8,5 karena 82 dikurangi 73,5. Angka itu berarti separuh siswa memperoleh nilai di antara 73,5 dan 82, rentang yang jauh lebih ramping daripada rentang penuh 65 sampai 90. Fungsi summary() memberikan angka-angka yang sama ditambah mean dalam satu pemanggilan pada satu vektor.

r
summary(nilai)
text Keluaran
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  65.00   73.50   77.50   77.92   82.00   90.00 

Pada data frame, summary() diterapkan per kolom. Kolom numerik menerima enam angka statistik, sedangkan kolom karakter dilaporkan dengan panjang dan tipe kelasnya. Data dua mata pelajaran dari delapan siswa berikut dibangun sebagai tibble lalu diringkas.

r
ujian <- tibble(
  siswa = c("Ali", "Budi", "Citra", "Dewi", "Eka", "Fajar", "Gita", "Hana"),
  matematika = c(72, 78, 65, 88, 90, 74, 81, 69),
  statistika = c(70, 82, 68, 85, 88, 71, 79, 74)
)
ujian
text Keluaran
# A tibble: 8 × 3
  siswa matematika statistika
  <chr>      <dbl>      <dbl>
1 Ali           72         70
2 Budi          78         82
3 Citra         65         68
4 Dewi          88         85
5 Eka           90         88
6 Fajar         74         71
7 Gita          81         79
8 Hana          69         74
r
summary(ujian)
text Keluaran
    siswa             matematika      statistika   
 Length:8           Min.   :65.00   Min.   :68.00  
 Class :character   1st Qu.:71.25   1st Qu.:70.75  
 Mode  :character   Median :76.00   Median :76.50  
                    Mean   :77.12   Mean   :77.12  
                    3rd Qu.:82.75   3rd Qu.:82.75  
                    Max.   :90.00   Max.   :88.00  

Ringkasan per kolom memperlihatkan bahwa kedua mata pelajaran memiliki mean yang sama, yaitu 77,12, tetapi sebarannya sedikit berbeda, misalnya pada kuartil pertama dan nilai maksimumnya. Kolom siswa tidak dihitung secara numerik dan hanya dilaporkan panjang serta tipenya. Pemeriksaan semacam ini biasanya menjadi langkah pertama setelah data siap, karena angka yang janggal pada Min. atau Max. langsung terlihat sebelum analisis diteruskan.

Pencilan dan ketahanan median#

Pencilan (outlier) adalah nilai yang jauh menyimpang dari pola data lainnya. Penyebabnya dapat berupa kesalahan pencatatan, misalnya angka 70 yang tertulis 700, ataupun kondisi yang memang berbeda dari kasus lainnya. Pencilan memengaruhi mean secara penuh karena setiap nilai ikut dijumlahkan dalam rumusnya, sedangkan median hanya bergantung pada posisi nilai di tengah data terurut. Sifat tahan terhadap pengaruh pencilan ini disebut robust, dan median dikenal sebagai ukuran pusat yang robust.

Dampak pencilan diperlihatkan pada vektor nilai. Kedua ukuran pusat dihitung pada data asli, kemudian dihitung ulang setelah satu kesalahan pengetikan menambahkan nilai 700 ke dalam data.

r
mean(nilai)
median(nilai)

nilai_typo <- c(nilai, 700)
mean(nilai_typo)
median(nilai_typo)
text Keluaran
[1] 77.91667
[1] 77.5
[1] 125.7692
[1] 78

Mean melompat dari 77,9 ke 125,8 karena satu nilai 700 dijumlahkan ke pembilang, sedangkan median hanya bergeser dari 77,5 ke 78. Median bergeser sedikit karena banyaknya data berubah dari dua belas menjadi tiga belas, sehingga posisi nilai tengahnya pindah satu tempat. Angka 125,8 tidak mewakili satu pun siswa karena tidak ada nilai yang mendekati besaran itu. Contoh ini menunjukkan bahwa median tetap dapat diandalkan ketika data belum bersih dari kesalahan entri.

Median lebih tepat dipilih apabila data miring atau memuat nilai ekstrem yang sah, misalnya pendapatan rumah tangga, harga rumah, atau durasi kunjungan pada sebuah situs. Pada data seperti itu, mean tertarik oleh ekor panjang sebarannya dan melaporkan angka yang tidak mewakili mayoritas kasus. Median juga lebih aman pada tahap pemeriksaan awal, sebelum kesalahan entri ditemukan dan diperbaiki. Sebaliknya, mean tetap tepat untuk data yang mendekati simetris dan bebas pencilan karena mean memanfaatkan informasi dari setiap nilai. Untuk deteksi pencilan berbasis kuartil, aturan praktis yang lazim menandai sebuah nilai sebagai pencilan apabila nilainya berada di luar rentang dari kuartil pertama (Q1) dikurangi 1,5 kali IQR sampai kuartil ketiga (Q3) ditambah 1,5 kali IQR, yaitu aturan yang digunakan pada diagram boxplot.

Ringkasan#

  • mean() dan sd() memanfaatkan setiap nilai sehingga sensitif terhadap pencilan, sedangkan median dan IQR hanya bergantung pada posisi data terurut sehingga robust.
  • quantile() mengembalikan nilai data terurut pada probabilitas tertentu, dan IQR adalah jarak antara kuartil ketiga dan kuartil pertama.
  • summary() memberikan enam angka ringkas pada satu vektor dan meringkas setiap kolom pada data frame.
  • Median dipilih untuk data miring atau yang memuat pencilan, sedangkan mean dipilih untuk data yang mendekati simetris.

Referensi#