Pusat dan sebaran

Memilih antara mean dan median serta memahami variansi dan simpangan baku sebagai ukuran sebaran.

Daftar isi

Ukuran pusat merangkum data menjadi satu angka yang mewakili, sedangkan ukuran sebaran menyatakan seberapa jauh nilai-nilainya menyebar dari pusat itu. Topik ini membandingkan mean (rata-rata) dan median pada data durasi tunggu pasien klinik yang termiring ke kanan, membaca ringkasan lima angka dari describe(), lalu menghitung variansi dan simpangan baku. Pemilihan ukuran ini bukan formalitas, karena keputusannya langsung mengubah kesimpulan yang disampaikan.

Mean dan median pada data termiring#

Mean dihitung dengan menjumlahkan seluruh nilai kemudian membaginya dengan banyaknya data. Median adalah nilai tengah setelah data diurutkan, dan pada data berjumlah genap, median menjadi rata-rata dari dua nilai tengahnya. Keduanya mewakili pusat data, tetapi cara menghitungnya membuat keduanya bereaksi berbeda terhadap nilai ekstrem.

Contohnya menggunakan durasi tunggu dua puluh pasien di satu klinik pada satu hari, dalam satuan menit. Data tunggu seperti ini lazimnya termiring ke kanan (right-skewed), yaitu banyak nilai kecil berkelompok di kiri dan beberapa nilai besar menarik ekornya ke kanan. Kode berikut menghitung mean dan median data tersebut dengan pandas.

python pusat-antrean.py
import pandas as pd

# durasi tunggu 20 pasien di satu klinik (menit), tercatat sepanjang satu hari
durasi = [5, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 12, 13, 14, 15, 18, 22, 28, 35, 52]
antrean = pd.Series(durasi, name="durasi")

print(f"mean  : {antrean.mean():.2f}")
print(f"median: {antrean.median():.2f}")
text Keluaran
mean  : 14.95
median: 10.50

Mean berada di 14,95 menit, sedangkan median hanya 10,50 menit. Selisih 4,45 menit ini disebabkan oleh dua nilai besar di ujung kanan, yaitu 35 dan 52 menit, yang ikut dijumlahkan ke dalam mean. Median tidak terpengaruh karena nilainya ditentukan oleh posisi tengah data, bukan oleh besarnya nilai ujung. Semakin panjang ekor kanan, semakin jauh mean tergeser dari median.

Pada data condong seperti ini, median lebih mewakili pasien tipikal. Angka median 10,50 menit berarti setengah pasien menunggu paling lama itu, sedangkan mean 14,95 menit lebih tinggi daripada pengalaman mayoritas pasien karena ditarik oleh kasus tunggu yang sangat lama. Keduanya tetap dihitung bersamaan, karena selisihnya justru menjadi indikator kecondongan yang mudah dihitung.

Ringkasan lima angka dengan describe()#

Metode describe() pada Series pandas menghasilkan ringkasan lima angka (five-number summary) yang diperkaya mean dan std. Baris count menyatakan banyaknya data, sedangkan baris mean dan std memuat ukuran pusat dan sebarannya. Baris min dan max memuat kedua ujungnya, dan tiga baris berlabel persen memuat kuartilnya. Kode berikut menerapkannya pada data durasi tunggu yang sama.

python deskripsi-lima-angka.py
import pandas as pd

# durasi tunggu 20 pasien di satu klinik (menit)
durasi = [5, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 12, 13, 14, 15, 18, 22, 28, 35, 52]
antrean = pd.Series(durasi, name="durasi")

print(antrean.describe().round(2))
text Keluaran
count    20.00
mean     14.95
std      11.60
min       5.00
25%       8.00
50%      10.50
75%      15.75
max      52.00
Name: durasi, dtype: float64

Keluaran tersebut terbaca sebagai berikut. Setengah pasien menunggu paling lama 10,50 menit karena baris 50% adalah median. Seperempat pasien tercepat menunggu tidak lebih dari 8,00 menit, sedangkan tiga perempat pasien menunggu tidak lebih dari 15,75 menit. Jarak dari kuartil pertama ke kuartil ketiga sebesar 7,75 menit menyatakan lebar sebaran pada separuh bagian tengah data, dan rentang minimum sampai maksimum yang mencapai 47,00 menit menegaskan ekor kanannya.

Ringkasan lima angka berlaku untuk kolom numerik apa pun. Jarak min ke 25% yang jauh lebih pendek daripada jarak 75% ke max menandakan ekor kanan yang panjang, konsisten dengan selisih mean dan median pada data yang sama. Banyak kolom sekaligus diringkas dengan memanggil describe() pada seluruh DataFrame, sehingga tabel ini menjadi inspeksi cepat sebelum histogram digambar.

Variansi dan simpangan baku#

Variansi (variance) mengukur sebaran sebagai rata-rata kuadrat jarak setiap nilai dari mean-nya. Simpangan baku (standard deviation) adalah akar kuadrat variansi, sehingga satuannya kembali ke satuan data aslinya. Baris std pada keluaran describe() sebelumnya adalah simpangan baku ini. Rumus variansi yang digunakan pandas membagi jumlah kuadrat jarak itu dengan n−1n - 1:

s2=∑i=1n(xi−xˉ)2n−1 s^2 = \frac{\sum_{i=1}^{n} (x_i - \bar{x})^2}{n - 1}

Pembagi n−1n - 1 digunakan karena data yang ada diperlakukan sebagai sampel, dan koreksi ini mencegah sampel meremehkan sebaran populasi aslinya. Kode berikut menghitung variansi dan simpangan baku data antrean. Perbandingannya sengaja menyertakan numpy karena pembagi keduanya mengikuti konvensi yang berbeda.

python sebaran-antrean.py
import numpy as np
import pandas as pd

# durasi tunggu 20 pasien di satu klinik (menit)
durasi = [5, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 12, 13, 14, 15, 18, 22, 28, 35, 52]
antrean = pd.Series(durasi, name="durasi")

variansi = antrean.var()  # pandas membagi dengan (n - 1)

print(f"variansi                 : {variansi:.2f}")
print(f"simpangan baku (pandas)  : {antrean.std():.2f}")
print(f"simpangan baku (numpy)   : {np.std(durasi):.2f}")
print(f"simpangan baku (ddof=1)  : {np.std(durasi, ddof=1):.2f}")
text Keluaran
variansi                 : 134.47
simpangan baku (pandas)  : 11.60
simpangan baku (numpy)   : 11.30
simpangan baku (ddof=1)  : 11.60

Simpangan baku 11,60 menit pada mean 14,95 menit menyatakan sebaran yang besar, dan hampir menyamai mean itu sendiri sebagai tanda data termiring. Sebagai acuan kasar pada distribusi yang kira-kira memusat, mayoritas nilai berada dalam satu simpangan baku dari mean, tetapi pada data termiring acuan ini hanya perkiraan. Baris terakhir keluaran menegaskan perbedaan konvensi, yaitu numpy yang membagi dengan nn memberi 11,30 menit, sedangkan pandas dan numpy dengan ddof=1 memberi 11,60 menit.

Satuan menit yang kembali pada simpangan baku membuat angka itu mudah dikaitkan dengan data aslinya. Variansi tetap digunakan di balik layar karena sifat matematisnya, sedangkan simpangan baku lebih sering dilaporkan. Keduanya ikut membesar ketika pencilan ada, karena setiap jarak dikuadratkan sehingga nilai ekstrem memberi kontribusi yang jauh lebih besar daripada nilai biasa.

Memilih ukuran yang tepat#

Pemilihan ukuran mengikuti bentuk data, dan tabel berikut merangkum kebiasaan yang lazim digunakan. Baris pertamanya berlaku ketika histogram tampak simetris tanpa nilai ekstrem. Dua baris terakhirnya berlaku ketika kecondongan atau pencilan ikut serta, dan situasi nyata sering bergabung di antara keduanya.

SituasiUkuran yang lebih tepatAlasannya
Data kira-kira simetris tanpa pencilanmeanmemanfaatkan seluruh nilai dan stabil ketika data bertambah
Data termiring atau berpencilanmediantidak tergeser oleh nilai ekstrem di ekor
Laporan pengalaman tipikal penggunamedianmenjabarkan kasus setengah-bawah dan setengah-atas secara langsung

Keputusan ini mengubah kesimpulan yang disampaikan. Kalimat “rata-rata tunggu 14,95 menit” dan kalimat “setengah pasien menunggu paling lama 10,50 menit” berasal dari data yang sama, tetapi kesannya berbeda. Klaim perbaikan layanan pun dapat terbalik, karena pengurangan satu kasus tunggu ekstrem menurunkan mean secara drastis tanpa mengubah pengalaman mayoritas pasien sedikit pun. Angka yang sama dapat mendukung dua cerita yang berlawanan apabila pemilihan ukurannya tidak dinyatakan.

Kebiasaan yang aman cukup sederhana. Tampilkan histogram terlebih dahulu, pilih ukuran sesuai bentuknya, kemudian nyatakan ukuran yang digunakan bersama artinya dalam kalimat lengkap. Apabila selisih mean dan median terasa nyata, laporkan keduanya beserta sebab kecondongannya, karena selisih itu sendiri merupakan informasi tentang bentuk data.

Ringkasan#

  • Mean menjumlahkan seluruh nilai sehingga tergeser oleh ekor, sedangkan median mengambil nilai tengah sehingga kebal nilai ekstrem.
  • Mean yang lebih besar dari median adalah tanda data termiring ke arah ekor yang panjang.
  • describe() menghasilkan kuartil, median, minimum, dan maksimum yang merangkum pusat dan sebaran dalam satu tabel.
  • Simpangan baku menyatakan sebaran dalam satuan data, dengan pembagi n−1n - 1 pada pandas dan pembagi nn pada numpy secara default.

Referensi#