Ukuran pemusatan (measures of central tendency) meringkas seluruh data menjadi satu bilangan yang menyatakan lokasi khasnya. Topik ini membahas tiga ukuran yang paling banyak digunakan, yaitu rata-rata (mean), median, dan modus, beserta perhitungannya dengan NumPy dan SciPy. Pembahasan utamanya adalah kondisi yang membuat masing-masing ukuran menyesatkan, khususnya pada data yang tidak simetris atau mengandung nilai ekstrem. Dua himpunan data yang dipakai sebagai contoh adalah nilai ujian statistika dan waktu tunggu pelanggan di loket.
Tiga ukuran pemusatan#
Rata-rata adalah hasil penjumlahan seluruh nilai dibagi banyaknya data. Median adalah nilai tengah setelah data diurutkan, sehingga separuh pengamatan berada di bawah nilainya. Modus adalah nilai yang paling sering muncul, dan pada data kontinu modus dibaca dari puncak histogram. Ketiganya disebut ukuran pemusatan karena sama-sama mencoba menyatakan lokasi khas data dengan satu bilangan.
Definisi rata-rata sampel dituliskan sebagai berikut. Penjumlahan pada pembilangnya mencakup setiap pengamatan tanpa kecuali.
Simbol menyatakan banyaknya data, sedangkan menyatakan pengamatan ke-i. Median dan modus tidak memiliki rumus serupa karena keduanya didefinisikan melalui pengurutan dan penghitungan, bukan melalui operasi aritmetika. Perbedaan perilaku ketiganya paling terasa ketika data mengandung nilai ekstrem. Median bergantung pada urutan data sehingga nilainya tidak berubah meskipun nilai terbesar diganti menjadi jauh lebih besar, sedangkan rata-rata bergantung pada setiap nilai sehingga perubahan satu pengamatan selalu menggesernya.
Perhitungan dengan NumPy dan SciPy#
Fungsi np.mean dan np.median dari NumPy menghitung rata-rata dan median, sedangkan scipy.stats.mode mencari modus beserta frekuensinya. Program berikut menghitung ketiga ukuran untuk nilai ujian statistika dari 15 siswa. Nilai ujiannya ditulis dalam keadaan terurut agar median mudah diperiksa secara manual.
import numpy as np
from scipy import stats
# Nilai ujian statistika dari 15 siswa
nilai = np.array([65, 70, 70, 72, 75, 75, 75, 78, 80, 80, 82, 85, 88, 90, 95])
print(f"Rata-rata : {nilai.mean():.4f}")
print(f"Median : {np.median(nilai):.4f}")
modus = stats.mode(nilai, keepdims=False)
print(f"Modus : {modus.mode} (muncul {modus.count} kali)")Rata-rata : 78.6667
Median : 78.0000
Modus : 75 (muncul 3 kali)Rata-rata yang terbaca adalah 78.6667, median 78.0000, dan modus 75 dengan tiga kemunculan. Median diperoleh dari pengamatan kedelapan pada data yang sudah terurut, karena 15 data menghasilkan satu nilai tengah tunggal. Ketiga ukuran berimpit pada data ini karena sebarannya cukup simetris tanpa nilai ekstrem.
Apabila banyaknya data genap, median didefinisikan sebagai rata-rata dari dua nilai tengah, dan np.median menerapkan definisi itu secara otomatis. Modus juga dapat berjumlah lebih dari satu ketika beberapa nilai sama-sama paling sering muncul, sedangkan stats.mode hanya mengembalikan nilai terkecil di antaranya. Perilaku stats.mode tersebut perlu diketahui agar frekuensi nilai lain yang sama banyaknya tidak luput dari laporan.
Ketika data tidak simetris#
Waktu tunggu pelanggan di satu loket memberi contoh data yang tidak simetris. Sebagian besar pelanggan dilayani dalam beberapa menit, tetapi satu gangguan sistem membuat satu pelanggan menunggu 58 menit. Program berikut membandingkan rata-rata dan median sebelum serta sesudah kejadian ekstrem itu masuk ke dalam data.
import numpy as np
rng = np.random.default_rng(42)
# Waktu tunggu 20 pelanggan di satu loket (menit)
waktu = np.round(rng.uniform(2, 10, size=20), 2)
# Satu pelanggan menunggu 58 menit karena gangguan sistem
waktu_ekstrem = np.append(waktu, 58.0)
print(f"Rata-rata sebelum gangguan : {waktu.mean():.4f} menit")
print(f"Median sebelum gangguan : {np.median(waktu):.4f} menit")
print(f"Rata-rata sesudah gangguan : {waktu_ekstrem.mean():.4f} menit")
print(f"Median sesudah gangguan : {np.median(waktu_ekstrem):.4f} menit")Rata-rata sebelum gangguan : 6.5900 menit
Median sebelum gangguan : 7.1000 menit
Rata-rata sesudah gangguan : 9.0381 menit
Median sesudah gangguan : 7.1500 menitPenambahan satu nilai 58.0 menit mengangkat rata-rata dari 6.5900 menjadi 9.0381 menit, sedangkan median hanya bergeser dari 7.1000 ke 7.1500 menit. Rata-rata tertarik ke arah nilai ekstrem karena nilainya ikut dijumlahkan, sedangkan median bertahan karena posisinya hanya ditentukan oleh urutan data. Pada data seperti ini, rata-rata seolah menunjukkan waktu tunggu yang tidak dialami mayoritas pelanggan, sehingga ukuran itu menyesatkan bila dilaporkan sendirian.
Pada distribusi yang menceng kanan, ketiga ukuran tidak lagi berimpit dan urutannya teratur. Modus menempati puncak, median bergeser ke kanannya, dan rata-rata menempati posisi paling dekat ke ekor. Gambar berikut memperlihatkan posisi tersebut pada satu kurva.
Memilih ukuran pemusatan#
Data yang simetris dan bebas dari nilai ekstrem membuat ketiga ukuran berdekatan, sehingga rata-rata menjadi pilihan wajar karena memanfaatkan seluruh informasi data. Data yang menceng atau berpotensi memuat nilai ekstrem membuat median lebih mewakili pengamatan tipikal. Modus menjadi pilihan utama pada data kategorikal karena merupakan satu-satunya ukuran yang bermakna untuk label. Melaporkan lebih dari satu ukuran juga wajar pada data yang menceng karena setiap ukuran menyimpan informasi yang berbeda.
Median menyatakan pengamatan tipikal, sedangkan rata-rata diperlukan ketika jumlah total menjadi penting, misalnya total waktu tunggu seluruh pelanggan dihitung dari rata-rata dikalikan banyaknya pelanggan. Modus menjawab pertanyaan tentang nilai yang paling lazim, misalnya durasi tidur yang paling umum di antara siswa. Tabel berikut merangkum pilihan tersebut.
| Situasi data | Ukuran yang lebih mewakili | Alasan |
|---|---|---|
| Simetris tanpa nilai ekstrem | rata-rata | memanfaatkan setiap nilai |
| Menceng atau memuat nilai ekstrem | median | tidak tertarik oleh ekor data |
| Kategorikal | modus | satu-satunya ukuran yang bermakna untuk label |
Ringkasan#
- Rata-rata dihitung dari seluruh nilai, median dari posisi tengah data terurut, dan modus dari frekuensi terbanyak.
- Satu nilai ekstrem menggeser rata-rata jauh, sedangkan median hampir tidak bergeser.
- Pada distribusi menceng kanan, urutannya adalah modus, median, lalu rata-rata.
- Data kategorikal hanya dapat diringkas dengan modus beserta frekuensinya.
Referensi#
- numpy.mean — NumPy — Dokumentasi fungsi rata-rata NumPy yang digunakan pada contoh.
- numpy.median — NumPy — Dokumentasi fungsi median NumPy beserta perilakunya pada jumlah data genap.
- scipy.stats.mode — SciPy — Dokumentasi fungsi modus SciPy yang mengembalikan nilai beserta frekuensinya.