Chapter Z-Score menghitung posisi relatif satu nilai terhadap kelasnya. Standardisasi data melangkah lebih jauh: rumus z yang sama diterapkan pada seluruh dataset sekaligus, sehingga seluruh nilai berpindah ke dunia baru — mean tepat 0, standar deviasi tepat 1. Mengapa repot-repot memindahkan data? Karena banyak pertanyaan analisis tersandung satu jebakan yang sama: menjumlahkan, membandingkan, atau menghitung jarak antara angka-angka yang satuan dan skalanya berbeda. Chapter ini menunjukkan tiga situasi yang menuntut standardisasi, membedah hasilnya pada data nilai sembilan siswa, lalu membandingkannya dengan normalisasi min-max yang sering dipertukarkan dengannya.
Standardisasi: Satu Rumus untuk Seluruh Data #
Standardisasi (z-score standardization) menerapkan rumus chapter sebelumnya ke setiap elemen dataset:
z_i = (x_i - x̄) / s untuk setiap data i = 1, 2, ..., nHasilnya adalah dataset baru yang terdiri dari z-score: nilai yang tadinya 68, 75, 75, hingga 97 kini berubah menjadi bilangan bebas satuan di sekitar nol. Dua sifat yang kita buktikan pada chapter Z-Score kini menjadi identitas resmi dataset hasil standardisasi — jumlah seluruh z nol, rata-ratanya 0, dan sebarannya tepat satu standar deviasi. Standardisasi juga sering disebut penskalaan z; keduanya satu proses, dan kata “standard” pada namanya merujuk pada satuan barunya: standar deviasi.
Terapkan pada data nilai sembilan siswa (mean 83.33, s 9.41 — semua nilai z dan minmax dibulatkan ke dua desimal):
| x | z | minmax |
|---|---|---|
| 68 | −1.63 | 0.00 |
| 75 | −0.89 | 0.24 |
| 75 | −0.89 | 0.24 |
| 81 | −0.25 | 0.45 |
| 84 | 0.07 | 0.55 |
| 88 | 0.50 | 0.69 |
| 90 | 0.71 | 0.76 |
| 92 | 0.92 | 0.83 |
| 97 | 1.45 | 1.00 |
Kolom z identik dengan tabel z-score pada chapter sebelumnya — memang harus begitu, karena keduanya memakai rumus dan data yang sama; kolom minmax dihitung dengan rumus rentang 0-1 yang segera kita bahas. Perbedaannya ada pada cara pandang: chapter Z-Score membaca tabel sebagai posisi tiap siswa, sedangkan standardisasi membacanya sebagai dataset baru yang siap dipakai untuk perhitungan lanjutan.
Kapan Standardisasi Dibutuhkan #
Tiga situasi paling umum menuntut standardisasi. Pertama, membandingkan variabel bersatuan berbeda: panitia seleksi yang menimbang skor psikotes (skala ratusan) dengan nilai rapor (skala 0-100) tidak bisa langsung menjumlahkan keduanya — setelah masing-masing variabel distandardisasi, posisi relatif tiap kandidat pada kedua variabel bisa dibandingkan atau dijumlahkan dengan adil.
Kedua, algoritma yang peka skala. K-nearest neighbors (KNN) menghitung jarak antar data — variabel berskala besar akan mendominasi jarak dan menenggelamkan variabel berskala kecil, padahal keduanya bisa sama pentingnya. Regresi berganda memakai standardisasi agar koefisien tiap variabel dapat dibandingkan: koefisien yang besar tak lagi sekadar mewarisi satuan yang besar. Praktik ini dibahas ulang saat kita sampai di Section Korelasi dan Regresi.
Ketiga, membangun indeks komposit. Indeks yang menggabungkan indikator berbeda satuan — misalnya indeks kualitas hidup yang menggabungkan capaian pendidikan, kesehatan, dan ekonomi — harus menyatukan seluruh komponen ke satu skala sebelum dirata-rata; standardisasi adalah salah satu jalur penyatuan yang paling lazim. Tanpa penyatuan skala, bobot tiap komponen ditentukan oleh satuannya, bukan oleh kepentingannya.
Standardisasi z-Score vs Normalisasi Min-Max #
Proses sekeluarga yang sering dipertukarkan dengan standardisasi adalah normalisasi min-max, yang memetakan data ke rentang 0 sampai 1:
standardisasi z : z = (x - x̄) / s
normalisasi min-max : m = (x - x_min) / (x_max - x_min)Pada data sembilan siswa, x_min = 68 dan x_max = 97 sehingga pembaginya 29: nilai 75 menjadi 7/29 ≈ 0.24, nilai 84 menjadi 16/29 ≈ 0.55, nilai 92 menjadi 24/29 ≈ 0.83 — angka lengkapnya muncul pada snippet Python di bawah. Keduanya sama-sama mengubah skala; pembedanya ada pada acuan dan sifat hasilnya:
| Aspek | Standardisasi z | Normalisasi min-max |
|---|---|---|
| Acuan | mean dan standar deviasi | nilai minimum dan maksimum |
| Hasil | sebaran di sekitar 0, sd tepat 1 | selalu berada di 0 sampai 1 |
| Arti nilai 0 | tepat sama dengan mean | nilai terkecil dataset |
| Peka outlier | s ikut membesar, z terjepit | min dan max ditentukan outlier, nilai lain terjepit |
| Cocok untuk | perbandingan posisi relatif, algoritma berbasis mean dan sebaran | kebutuhan rentang pasti 0-1, data bersih dari outlier |
Pilih standardisasi bila analisis membaca posisi relatif terhadap pusat sebaran — tema seluruh section ini. Pilih min-max bila rentang hasilnya memang harus dibatasi, misalnya sebagai input jaringan saraf atau sebagai skor tampilan, dan pastikan data bersih dari outlier karena satu nilai ekstrem menentukan kedua ujung skala. Keduanya sah; keduanya bukan sinonim.
Apa yang Tidak Berubah #
Standardisasi mengubah angka, tetapi tidak mengubah informasi struktural data. Urutan dan ranking terjaga utuh: karena s selalu positif, membagi seluruh deviasi dengan s tidak pernah membalik urutan — data terkecil tetap menghasilkan z terkecil, data terbesar menghasilkan z terbesar, dan seluruh peringkat di antaranya tetap pada posisinya. Pada tabel sembilan siswa, urutan z dari −1.63 naik ke 1.45 persis mengikuti urutan nilai dari 68 naik ke 97. Konsekuensinya praktis: median, persentil, dan seluruh ukuran berbasis urutan tetap mempertahankan maknanya setelah standardisasi.
Bentuk distribusi juga tidak berubah. Setiap nilai digeser dan dikalikan konstanta yang sama — mean dikurangkan dari semua, lalu semua dibagi s — sehingga histogram hasilnya berbentuk persis dengan histogram asalnya; yang berganti hanya label sumbunya. Data yang miring tetap miring, data bimodal tetap bimodal, dengan skewness yang tetap sama.
Standardisasi dan Normalisasi dengan Python #
Kedua transformasi dihitung sekaligus dari data yang sama, lalu sifat-sifatnya diuji:
import statistics
nilai = [68, 75, 75, 81, 84, 88, 90, 92, 97]
mean = statistics.mean(nilai)
s = statistics.stdev(nilai)
rentang = max(nilai) - min(nilai)
z_data = [(x - mean) / s for x in nilai]
for x, z in zip(nilai, z_data):
minmax = (x - min(nilai)) / rentang
print(f"{x:3d} z = {z:6.2f} minmax = {minmax:.2f}")
print(f"mean(z) = {statistics.mean(z_data):.2f}, stdev(z) = {statistics.stdev(z_data):.2f}")
print("urutan z sama dengan urutan x:", z_data == sorted(z_data))Output yang Dihasilkan:
68 z = -1.63 minmax = 0.00
75 z = -0.89 minmax = 0.24
75 z = -0.89 minmax = 0.24
81 z = -0.25 minmax = 0.45
84 z = 0.07 minmax = 0.55
88 z = 0.50 minmax = 0.69
90 z = 0.71 minmax = 0.76
92 z = 0.92 minmax = 0.83
97 z = 1.45 minmax = 1.00
mean(z) = 0.00, stdev(z) = 1.00
urutan z sama dengan urutan x: TrueMari kita bedah kode di atas:
- Baris 8-10 (dua transformasi): kolom kiri menghitung z dari
z_datadi baris 8; kolom kanan menghitung min-max dengan pembagirentang= 97 − 68 = 29, keduanya dicetak dua desimal. - Baris 12 (uji sifat standardisasi): mean z tercetak
0.00dan stdev z tercetak1.00— dua identitas standardisasi dalam praktik. - Baris 13 (uji urutan):
z_data == sorted(z_data)membandingkan daftar z dengan versi terurutnya dan menghasilkanTrue— data kita memang sudah terurut, dan standardisasi mempertahankannya. - Nilai minmax: ujung skala tepat 0.00 dan 1.00 sesuai definisi, sementara z tidak terikat rentang — nilai 68 mendapat −1.63 dan 97 mendapat 1.45.
Perilaku statistics.mean dan statistics.stdev terdokumentasi dalam dokumentasi statistics Python
; pembahasan resmi mengenai penskalaan variabel sebelum analisis dirangkum oleh NIST/SEMATECH e-Handbook
dan Penn State STAT 500
.
Kita kini mampu mengubah skala data sesuai kebutuhan analisis — mean 0 sebaran 1 bila posisi relatif yang dibutuhkan, rentang 0-1 bila batas pasti yang diinginkan. Tetapi seluruh pembahasan section ini masih bertumpu pada satu pertanyaan yang belum dijawab tuntas: bagaimana membaca sebaran seluruh data langsung dari datanya sendiri, tanpa merangkum dulu dan tanpa berasumsi bentuk? Jawabannya adalah distribusi empiris — topik chapter penutup section ini.