Chapter Standar Deviasi menutup dengan pengenalan singkat z-score: nilai 97 milik siswa tertinggi kelas berdiri 1.45 standar deviasi di atas mean. Chapter ini membuka pokok itu tuntas. Z-score mengubah pertanyaan “berapa selisihnya” menjadi “berapa standar deviasi jaraknya” — perubahan satuan yang tampak sederhana tetapi berdampak luas, karena satuan standar deviasi bisa dibandingkan lintas kelas, lintas mata pelajaran, bahkan lintas satuan pengukuran yang sama sekali berbeda. Kita akan menghitung z-score seluruh kelas sembilan siswa, membuktikan dua sifat yang selalu berlaku, memakainya untuk perbandingan antar skala, lalu menerapkannya sebagai penyaring outlier kasar.
Z-Score: Jarak dalam Satuan Standar Deviasi #
Z-score sebuah nilai x dihitung dengan membagi selisih x terhadap mean dengan standar deviasi:
z = (x - x̄) / sPembilangnya adalah deviasi biasa — seberapa jauh x dari mean, dalam satuan data asli. Pembagian dengan s mengubah satuan itu menjadi “banyaknya standar deviasi”. Hasil akhirnya bebas satuan: z = 2 pada nilai Matematika dan z = 2 pada skor psikotes sama-sama berbunyi “dua standar deviasi di atas rata-rata kelompoknya”, meski satuan aslinya berbeda jauh. Tanda z mengikuti arah deviasi: z positif berarti nilai berada di atas mean, z negatif berarti di bawah mean, dan z = 0 berarti tepat di mean.
Contoh: Nilai Budi dan Nilai Terendah Kelas #
Kelas kita memiliki mean 83.33 dan s 9.41 (keduanya dibulatkan ke dua desimal, dari 750/9 dan 9.4074). Budi mendapat nilai 92, sedangkan nilai terendah kelas adalah 68. Z-score keduanya:
z Budi = (92 - 83.33) / 9.41 = 8.67 / 9.41 ≈ 0.92
z nilai 68 = (68 - 83.33) / 9.41 = -15.33 / 9.41 ≈ -1.63Nilai Budi berdiri 0.92 standar deviasi di atas mean — unggul, tetapi belum menjulur: masih di dalam rentang tipikal kelas. Nilai 68 berada 1.63 standar deviasi di bawah mean — cukup jauh, tetapi belum ekstrem; kita akan menetapkan ambang “ekstrem” pada bagian deteksi outlier. Perhitungan dengan angka mean dan s yang belum dibulatkan menghasilkan 0.9213 dan −1.6299 yang membulat ke angka yang sama, jadi pembulatan antara tidak menyesatkan di sini.
Z-Score Seluruh Kelas #
Satu rumus yang sama diterapkan pada seluruh kelas menghasilkan tabel posisi lengkap:
| Nilai x | z | Posisi terhadap mean |
|---|---|---|
| 68 | −1.63 | 1.63 s di bawah mean |
| 75 | −0.89 | 0.89 s di bawah mean |
| 75 | −0.89 | 0.89 s di bawah mean |
| 81 | −0.25 | 0.25 s di bawah mean |
| 84 | 0.07 | hampir tepat di mean |
| 88 | 0.50 | setengah s di atas mean |
| 90 | 0.71 | 0.71 s di atas mean |
| 92 | 0.92 | 0.92 s di atas mean (Budi) |
| 97 | 1.45 | 1.45 s di atas mean |
Semua z dibulatkan ke dua desimal. Tabel ini mengubah kelas menjadi peta ber-satuan seragam: seorang siswa dengan z −1.63 dan seorang lagi dengan z 1.45 tidak lagi dibaca sebagai “memiliki nilai 68 dan 97”, melainkan sebagai dua ujung sebaran tipikal kelas. Bandingkan kandungan informasinya — selisih mentah 29 poin tidak bermakna apa-apa tanpa konteks sebaran, sedangkan z langsung menyatakan posisi relatif. Catatan penting: nilai 84, yang sekaligus median kelas, berdiri di z ≈ 0.07 — hampir tepat di pusat, menegaskan kembali bahwa kelas ini hampir simetris.
Dua Sifat yang Selalu Berlaku #
Standarisasi lewat z-score selalu menghasilkan dua sifat pada dataset hasilnya:
jumlah z = Σ(x - x̄) / s = 0 / s = 0
mean z = 0
sd z = 1Jumlah z nol mengikuti langsung dari sifat deviasi yang sudah kita buktikan sejak chapter Mean: jumlah deviasi seluruh data terhadap mean selalu nol, karena setiap data di atas mean menyumbang deviasi positif yang jumlahnya persis meniadakan jumlah deviasi negatif data lain. Membagi nol dengan s (yang bukan nol) tetap menghasilkan nol. Standar deviasi z-sendiri menjadi 1 karena setiap deviasi sudah terbagi s: deviasi tipikal kelas, yang besarnya s, kini besarnya tepat satu. Kedua sifat ini berlaku untuk setiap dataset — bukan kebetulan khusus kelas kita — dan menjadi fondasi seluruh pembahasan standardisasi pada chapter berikutnya.
Menghitung Z-Score Kelas dengan Python #
Module statistics memadai untuk menghitung seluruh tabel sekaligus menguji kedua sifat:
import statistics
nilai = [68, 75, 75, 81, 84, 88, 90, 92, 97]
mean = statistics.mean(nilai)
s = statistics.stdev(nilai)
for x in nilai:
z = (x - mean) / s
print(f"{x:3d} z = {z:6.2f}")
zs = [(x - mean) / s for x in nilai]
print(f"jumlah z = {sum(zs):.2f}")
print(f"mean(z) = {statistics.mean(zs):.2f}")
print(f"stdev(z) = {statistics.stdev(zs):.2f}")Output yang Dihasilkan:
68 z = -1.63
75 z = -0.89
75 z = -0.89
81 z = -0.25
84 z = 0.07
88 z = 0.50
90 z = 0.71
92 z = 0.92
97 z = 1.45
jumlah z = 0.00
mean(z) = 0.00
stdev(z) = 1.00Mari kita bedah kode di atas:
- Baris 7-9 (loop z): setiap nilai dicetak bersama z-nya dengan format
{z:6.2f}— dua desimal pada lebar enam kolom — sehingga angka negatif dan positif tetap sejajar. - Baris 11 (kumpulan z): list comprehension menerapkan rumus yang sama ke seluruh data sekaligus, hasilnya identik dengan loop di atas.
- Baris 12-14 (tiga uji sifat):
sum(zs)mencetak0.00(jumlah persisnya hanya menyimpang dari nol sebesar orde 10^-15 akibat aritmetika float, tak terlihat pada dua desimal),statistics.mean(zs)mencetak0.00, danstatistics.stdev(zs)mencetak1.00.
Perilaku statistics.mean dan statistics.stdev terdokumentasi dalam dokumentasi statistics Python
. Penjelasan formal z-score beserta latihan soalnya tersedia gratis di Khan Academy
dan OpenIntro Statistics
.
Membandingkan Dua Mata Pelajaran #
Kekuatan sebenarnya z-score muncul saat membandingkan variabel yang skala atau sebarannya berbeda. Siti mendapat nilai 90 di Matematika dan 90 di Bahasa Indonesia — skor mentahnya sama, tetapi dua kelas itu bukan dunia yang sama. Kelas Matematika adalah kelas sembilan siswa kita (mean 83.33, s 9.41); kelas Bahasa Indonesia adalah kelas lima siswa dari chapter Standar Deviasi dengan data [84, 86, 88, 90, 92] (mean 88, s 3.16):
z matematika = (90 - 83.33) / 9.41 ≈ 0.71
z bahasa indonesia = (90 - 88) / 3.16 ≈ 0.63Kedua z dihitung dari nilai penuh lalu dibulatkan ke dua desimal — hasil yang sama diperoleh bila mean dan s masing-masing kelas dibulatkan lebih dulu. Nilai 90 di Matematika berdiri 0.71 standar deviasi di atas mean kelasnya, sedangkan di Bahasa Indonesia hanya 0.63. Selisihnya tipis, tetapi arahnya informatif: kelas Bahasa memiliki mean yang lebih tinggi (88) dan sebaran yang jauh lebih rapat (s 3.16), sehingga nilai yang sama terasa “lebih biasa” di sana. Tanpa z-score, perbandingan kedua kelas ini mustahil dilakukan dengan adil — selisih mentah 7 poin lawan 2 poin tidak memperhitungkan sebaran yang berbeda.
import statistics
matematika = [68, 75, 75, 81, 84, 88, 90, 92, 97]
bahasa = [84, 86, 88, 90, 92]
z_mat = (90 - statistics.mean(matematika)) / statistics.stdev(matematika)
z_bhs = (90 - statistics.mean(bahasa)) / statistics.stdev(bahasa)
print(f"z matematika = {z_mat:.2f}")
print(f"z bahasa = {z_bhs:.2f}")Output yang Dihasilkan:
z matematika = 0.71
z bahasa = 0.63Kode di atas memakai mean dan standar deviasi penuh dari tiap kelas, lalu mencetak dua z-score dengan pembulatan dua desimal — hasilnya persis hitungan manual sebelumnya. Format {z:.2f} pada kedua baris cetak menjaga tampilan tetap pendek dan stabil. Pola seperti ini — hitung z dua variabel, bandingkan — adalah kerangka dasar berbagai sistem penilaian yang menimbang capaian relatif, bukan capaian mentah.
Deteksi Outlier Kasar #
Z-score juga menjadi penyaring outlier yang paling ringkas cara menghitungnya: nilai dengan |z| melebihi 2 dicurigai, dan |z| melebihi 3 nyaris pasti ekstrem, karena pada sebaran lonceng data semacam itu hanya muncul sekitar 5 persen dan 0.3 persen dari populasi. Kelas kita aman: |z| terbesar adalah 1.63 milik nilai 68 — besar untuk ukuran sembilan siswa, tetapi tidak melampaui ambang. Contoh yang melampaui sudah kita kenal: pendapatan pedagang 400 (ribu Rp) pada data tujuh pedagang memiliki z = (400 − 147.14)/112.80 ≈ 2.24 — melampaui 2, sejalan dengan kesimpulan chapter Skewness bahwa satu nilai itu menarik seluruh distribusi ke arahnya. Aturan IQR dari chapter Rentang dan Interquartile Range memberi kesimpulan yang sama: Q3 = 130, IQR = 40, batas atas Q3 + 1.5 × IQR = 190, dan 400 jauh melampauinya.
Dengan z-score, posisi setiap data kini terbaca dalam satuan yang sama. Langkah berikutnya cukup natural: kenapa tidak mengubah seluruh dataset sekaligus menjadi z-score? Proses itulah standardisasi data — topik chapter berikutnya, lengkap dengan alasan kapan proses itu dibutuhkan dan apa yang tidak berubah karenanya.