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:

text
z_i = (x_i - x̄) / s     untuk setiap data i = 1, 2, ..., n

Hasilnya 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):

xzminmax
68−1.630.00
75−0.890.24
75−0.890.24
81−0.250.45
840.070.55
880.500.69
900.710.76
920.920.83
971.451.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:

text
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:

AspekStandardisasi zNormalisasi min-max
Acuanmean dan standar deviasinilai minimum dan maksimum
Hasilsebaran di sekitar 0, sd tepat 1selalu berada di 0 sampai 1
Arti nilai 0tepat sama dengan meannilai terkecil dataset
Peka outliers ikut membesar, z terjepitmin dan max ditentukan outlier, nilai lain terjepit
Cocok untukperbandingan posisi relatif, algoritma berbasis mean dan sebarankebutuhan 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:

python
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:

text
 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: True

Mari kita bedah kode di atas:

  1. Baris 8-10 (dua transformasi): kolom kiri menghitung z dari z_data di baris 8; kolom kanan menghitung min-max dengan pembagi rentang = 97 − 68 = 29, keduanya dicetak dua desimal.
  2. Baris 12 (uji sifat standardisasi): mean z tercetak 0.00 dan stdev z tercetak 1.00 — dua identitas standardisasi dalam praktik.
  3. Baris 13 (uji urutan): z_data == sorted(z_data) membandingkan daftar z dengan versi terurutnya dan menghasilkan True — data kita memang sudah terurut, dan standardisasi mempertahankannya.
  4. 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.