Kolom berisi seribu angka belum menjawab apa pun sampai kita bertanya: berapa nilai yang khas? seberapa lebar sebarannya? berapa nilai terbesarnya? Statistical summary memampatkan dataset menjadi segelintir angka bermakna — ukuran pemusat, ukuran sebaran, kuartil — dan pola mask menjaga ringkasan tetap jujur saat data berlubang NaN. Cakupan chapter ini:

  • Ukuran pemusat: mean, median, mode
  • Ukuran sebaran: std, var, range (max - min)
  • Kuartil dengan quantile dan prctile
  • Arah agregasi: per kolom mean(A,1) vs per baris mean(A,2)
  • Versi NaN-safe dengan pola mask per kolom

Tiga Ukuran Pemusat #

Aturannya: mean menjumlahkan lalu membagi, median mengambil nilai tengah data terurut, dan mode melaporkan nilai yang paling sering muncul. Mekanismenya berbeda: mean peka terhadap nilai ekstrem karena setiap angka ikut dijumlahkan, sedangkan median hanya peduli posisi tengah sehingga satu nilai raksasa tidak menggesernya. Kita uji ketiganya pada delapan pengukuran sederhana:

matlab
v = [2 4 4 4 5 5 7 9];
fprintf('mean(v)   : %g\n', mean(v));
fprintf('median(v) : %g\n', median(v));
fprintf('mode(v)   : %g\n', mode(v));

Output yang Dihasilkan:

text
mean(v)   : 5
median(v) : 4.5
mode(v)   : 4

Mari kita bedah baris-baris kode di atas:

  1. Baris 2 (mean(v)): jumlah 40 dibagi 8 elemen menghasilkan 5 — pusat massa data.
  2. Baris 3 (median(v)): jumlah elemen genap (8), sehingga median adalah rata-rata dua nilai tengah: (4+5)/2 = 4.5.
  3. Baris 4 (mode(v)): nilai 4 muncul tiga kali — lebih sering dari nilai lain. Perilaku mode saat beberapa nilai seri dibahas lengkap di Chapter Unique Values dan Counting.

Ukuran Sebaran #

Dua dataset bisa punya mean sama tetapi karakter berbeda: [4 4 5 5 5 6 6] dan [0 1 5 9 10] sama-sama berpusat di 5 dengan sebaran yang jauh berbeda. std menghitung akar rata-rata simpangan kuadrat dari mean, var adalah kuadratnya, dan range cukup max dikurangi min:

matlab
fprintf('std(v)    : %g\n', std(v));
fprintf('var(v)    : %g\n', var(v));
fprintf('range     : %g\n', max(v) - min(v));
fprintf('std(v,1)  : %g\n', std(v, 1));

Output yang Dihasilkan:

text
std(v)    : 2.13809
var(v)    : 4.57143
range     : 7
std(v,1)  : 2

Mari kita bedah baris-baris kode di atas:

  1. Baris 1 (std(v)): simpangan baku versi SAMPEL — pembaginya N-1 = 7; inilah default MATLAB.
  2. Baris 2 (var(v)): varians = std kuadrat: 2.13809² ≈ 4.57143.
  3. Baris 3 (max(v) - min(v)): range 9 − 2 = 7 — ukuran sebaran yang hanya melihat dua ujung.
  4. Baris 4 (std(v, 1)): flag 1 mengganti pembagi menjadi N = 8 (versi POPULASI); hasilnya lebih kecil.
PanggilanPembagiKapan dipakai
std(v), var(v)N − 1data adalah sampel dari populasi lebih besar (default)
std(v, 1), var(v, 1)Ndata merekam seluruh populasi

Kuartil dengan quantile dan prctile #

Kuartil membelah data terurut menjadi empat bagian: Q1 (25% data di bawahnya), Q2 (median), Q3 (75% di bawahnya). Mekanismenya: quantile(x, p) mengurutkan data lalu menginterpolasi linear pada posisi fraksional p — untuk [1 2 3 4 10], posisi Q1 jatuh di antara elemen ke-1 dan ke-2 dengan hasil 1.75. prctile(x, 25) identik, hanya parameternya persen:

matlab
x = [1 2 3 4 10];
q = quantile(x, [0.25 0.5 0.75]);
fprintf('Q1/Q2/Q3  : %g %g %g\n', q);
fprintf('prctile   : %g %g %g\n', prctile(x, [25 50 75]));

Output yang Dihasilkan:

text
Q1/Q2/Q3  : 1.75 3 5.5
prctile   : 1.75 3 5.5

Kedua fungsi menghasilkan nilai yang persis sama; selisih Q3 − Q1 disebut interquartile range (IQR) — bahan utama deteksi outlier di Chapter Data Cleaning.

Arah Agregasi: Per Kolom vs Per Baris #

Pada matriks dataset — baris pengamatan, kolom variabel — arah agregasi harus eksplisit. Mekanismenya: mean(A,1) turun ke bawah tiap kolom (default, sama dengan mean(A)), mean(A,2) menyisir tiap baris, dan mean(A(:)) merata-ratakan seluruh elemen:

matlab
A = [120 135; 98 110; 142 150];   % 3 produk, 2 kuartal
fprintf('mean(A,1) per kolom : %.2f %.2f\n', mean(A,1));
fprintf('mean(A,2) per baris : %.2f %.2f %.2f\n', mean(A,2));
fprintf('mean(A) default     : %.2f %.2f\n', mean(A));
fprintf('mean(A(:)) semua    : %.2f\n', mean(A(:)));

Output yang Dihasilkan:

text
mean(A,1) per kolom : 120.00 131.67
mean(A,2) per baris : 127.50 104.00 146.00
mean(A) default     : 120.00 131.67
mean(A(:)) semua    : 125.83

Mari kita bedah hasil tersebut:

  1. mean(A,1): rata-rata per kuartal di seluruh produk — kuartal 1 rata-rata (120+98+142)/3 = 120.
  2. mean(A,2): rata-rata per produk di kedua kuartal — produk pertama (120+135)/2 = 127.5.
  3. mean(A): tanpa dimensi eksplisit, MATLAB memilih dim pertama non-singleton — hasilnya identik mean(A,1).
  4. mean(A(:)): A(:) meratakan matriks menjadi satu kolom (aturan column-major), lalu dirata-ratakan seluruhnya.

Fungsi lain mengikuti pola yang sama: median(A,1), std(A,1), min(A,[],1) semuanya menerima argumen dimensi. Aturan praktisnya: data per baris (pengamatan) diagregasi menurun kolom dengan dim 1.

Statistik yang Tahan NaN #

Satu NaN merusak mean dan median sekaligus — NaN menular ke hasil (perilaku yang dibahas tuntas di Chapter Missing Values dan NaN). Solusinya pola mask: logical array ~isnan(kolom) memilih hanya baris valid sebelum fungsi statistik menyentuhnya. Kita terapkan pada dataset pengukuran 8 hari yang tiap kolomnya berlubang:

matlab
data = [28 65; 26 70; 32 NaN; 30 68; 29 72; 31 58; 27 75; NaN 80];
fprintf('mean(data,1) mentah : %g %g\n', mean(data,1));   % NaN menular

suhu      = data(:, 1);
suhuValid = suhu(~isnan(suhu));
fprintf('mean versi mask     : %.2f\n', mean(suhuValid));

Output yang Dihasilkan:

text
mean(data,1) mentah : NaN NaN
mean versi mask     : 29.00

Mari kita bedah baris-baris kode di atas:

  1. Baris 2 (mean(data,1)): satu lubang di kolom suhu menular ke kolom itu, dan lubang di kolom kelembapan meracuni kolomnya sendiri — keduanya jadi NaN.
  2. Baris 4-5 (suhuValid): suhu(~isnan(suhu)) memungut 7 nilai suhu yang valid; pola logical indexing ini bekerja di semua versi MATLAB dan Octave.
  3. Baris 6 (mean(suhuValid)): rata-rata 202.9/7 = 29 — angka yang jujur karena hanya menghitung data yang ada.

Tabel Ringkasan Fungsi #

FungsiMenghitungContoh pada [2 4 4 4 5 5 7 9]
mean(x)rata-rata aritmetika5
median(x)nilai tengah data terurut4.5
mode(x)nilai paling sering muncul4
std(x)simpangan baku sampel (N−1)2.13809
var(x)varians sampel4.57143
min(x), max(x)nilai terkecil, terbesar2, 9
max(x)-min(x)range7
quantile(x, p)kuantil ke-p (interpolasi)quantile(x, 0.5) → 4.5
prctile(x, persen)kuantil dalam persenprctile(x, 50) → 4.5

Berkas contoh.m pada bagian bawah halaman menjalankan seluruh tabel di atas pada dataset dua kolom (suhu dan kelembapan) lengkap dengan kuartil, IQR, dan perbandingan arah agregasi.

Ringkasan #

Trio mean/median/mode menjawab “di mana pusatnya”, std/var/range menjawab “seberapa menyebar”, dan quantile/prctile memotret bentuk distribusi lewat kuartil. Pada matriks dataset, argumen dimensi menentukan arah agregasi — mean(A,1) per kolom untuk variabel, mean(A,2) per baris untuk pengamatan — dan pola mask x(~isnan(x)) menjaga semua statistik tetap valid di data berlubang. Setelah setiap kolom diringkas, langkah berikutnya adalah meringkas per KELOMPOK: inilah materi Chapter Grouping Data.