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
quantiledanprctile - Arah agregasi: per kolom
mean(A,1)vs per barismean(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:
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:
mean(v) : 5
median(v) : 4.5
mode(v) : 4Mari kita bedah baris-baris kode di atas:
- Baris 2 (
mean(v)): jumlah 40 dibagi 8 elemen menghasilkan 5 — pusat massa data. - Baris 3 (
median(v)): jumlah elemen genap (8), sehingga median adalah rata-rata dua nilai tengah: (4+5)/2 = 4.5. - Baris 4 (
mode(v)): nilai 4 muncul tiga kali — lebih sering dari nilai lain. Perilakumodesaat 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:
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:
std(v) : 2.13809
var(v) : 4.57143
range : 7
std(v,1) : 2Mari kita bedah baris-baris kode di atas:
- Baris 1 (
std(v)): simpangan baku versi SAMPEL — pembaginya N-1 = 7; inilah default MATLAB. - Baris 2 (
var(v)): varians = std kuadrat: 2.13809² ≈ 4.57143. - Baris 3 (
max(v) - min(v)): range 9 − 2 = 7 — ukuran sebaran yang hanya melihat dua ujung. - Baris 4 (
std(v, 1)): flag1mengganti pembagi menjadi N = 8 (versi POPULASI); hasilnya lebih kecil.
| Panggilan | Pembagi | Kapan dipakai |
|---|---|---|
std(v), var(v) | N − 1 | data adalah sampel dari populasi lebih besar (default) |
std(v, 1), var(v, 1) | N | data 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:
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:
Q1/Q2/Q3 : 1.75 3 5.5
prctile : 1.75 3 5.5Kedua 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:
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:
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.83Mari kita bedah hasil tersebut:
mean(A,1): rata-rata per kuartal di seluruh produk — kuartal 1 rata-rata (120+98+142)/3 = 120.mean(A,2): rata-rata per produk di kedua kuartal — produk pertama (120+135)/2 = 127.5.mean(A): tanpa dimensi eksplisit, MATLAB memilih dim pertama non-singleton — hasilnya identikmean(A,1).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:
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:
mean(data,1) mentah : NaN NaN
mean versi mask : 29.00Mari kita bedah baris-baris kode di atas:
- 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. - Baris 4-5 (
suhuValid):suhu(~isnan(suhu))memungut 7 nilai suhu yang valid; pola logical indexing ini bekerja di semua versi MATLAB dan Octave. - Baris 6 (
mean(suhuValid)): rata-rata 202.9/7 = 29 — angka yang jujur karena hanya menghitung data yang ada.
Tabel Ringkasan Fungsi #
| Fungsi | Menghitung | Contoh pada [2 4 4 4 5 5 7 9] |
|---|---|---|
mean(x) | rata-rata aritmetika | 5 |
median(x) | nilai tengah data terurut | 4.5 |
mode(x) | nilai paling sering muncul | 4 |
std(x) | simpangan baku sampel (N−1) | 2.13809 |
var(x) | varians sampel | 4.57143 |
min(x), max(x) | nilai terkecil, terbesar | 2, 9 |
max(x)-min(x) | range | 7 |
quantile(x, p) | kuantil ke-p (interpolasi) | quantile(x, 0.5) → 4.5 |
prctile(x, persen) | kuantil dalam persen | prctile(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.