Rata-rata sampel metode belajar baru mencatat 82.7 sedangkan metode lama hanya 74.8. Selisih 7.9 poin itu bisa jadi efek metode yang sesungguhnya, tetapi bisa pula sekadar kebetulan sampling — dua sampel acak dari populasi yang sama pun hampir selalu menghasilkan mean yang berbeda. Hypothesis testing memberi kita kerangka untuk memutuskan secara terukur: rumuskan dugaan, tetapkan toleransi kesalahan, lalu bandingkan bukti dari data dengan ambang keputusan. Chapter ini merakit uji-t satu sampel dan dua sampel dari rumus dasarnya, lalu membandingkannya dengan fungsi ttest dan ttest2 dari Statistics Toolbox MATLAB.
Kerangka H0 dan H1 #
Uji hipotesis selalu bekerja dengan sepasang pernyataan. Hipotesis nol (H0) menyatakan status quo — tidak ada efek, tidak ada perbedaan — misalnya “mean isi kemasan sama dengan 250 mL” atau “kedua metode belajar menghasilkan mean populasi yang sama”. Hipotesis alternatif (H1) menyatakan klaim yang kita cari buktinya. Significance level alpha (lazimnya 0.05) adalah peluang kesalahan tipe I yang sanggup kita tanggung: peluang menolak H0 padahal H0 sebenarnya benar.
Mekanisme di balik layar: statistik uji dirancang agar nilainya mengikuti distribusi teoretis yang diketahui (distribusi-t, distribusi-F) ketika H0 benar. Semakin ekstrem nilai statistik, semakin tidak konsisten data dengan H0. Keputusannya biner — tolak H0 atau gagal tolak H0 — dengan konsekuensi kesalahan yang tidak simetris:
| Keputusan | H0 benar | H0 salah |
|---|---|---|
| Tolak H0 | Kesalahan tipe I (peluang = alpha) | Keputusan benar (power = 1 - beta) |
| Gagal tolak H0 | Keputusan benar | Kesalahan tipe II (peluang = beta) |
Menurunkan alpha mengecilkan peluang tipe I tetapi sekaligus memperbesar beta. Satu-satunya cara menurunkan keduanya sekaligus adalah menambah ukuran sampel. Diagram berikut merangkum alur keputusan uji:
One-Sample t-Test dari Rumus Dasar #
Masalah nyata: mesin pengisian minyak pelumas diklaim mengisi 250 mL per botol. Kita menimbang 16 botol sampel dan ingin menguji H0: mean populasi = 250 mL. Rumus uji-t satu sampel adalah t = (xbar - mu) / (s / sqrt(n)) — selisih mean sampel terhadap klaim, dibagi standard error mean. Pembagi sqrt(n) membuat semakin banyak sampel, semakin kecil keraguan sekitar xbar, sehingga selisih kecil pun menjadi signifikan.
v = [248.1 250.3 249.8 251.2 248.7 249.5 252.0 249.2 ...
248.4 250.1 249.9 250.6 249.3 248.9 251.0 249.7];
mu = 250; % nilai klaim pabrik
n = numel(v);
xbar = mean(v);
s = std(v);
t1 = (xbar - mu) / (s / sqrt(n));
tkrit1 = 2.131; % t(0.025, df = 15) dari tabel
fprintf('n = %d, xbar = %.4f, s = %.4f\n', n, xbar, s);
fprintf('t = %.4f (df = %d, t kritis = %.3f)\n', t1, n-1, tkrit1);
if abs(t1) > tkrit1
fprintf('Keputusan: tolak H0 - mean isi berbeda dari 250 mL\n');
else
fprintf('Keputusan: gagal tolak H0 - tidak ada bukti mean isi bukan 250 mL\n');
endOutput yang Dihasilkan:
n = 16, xbar = 249.7938, s = 1.0586
t = -0.7793 (df = 15, t kritis = 2.131)
Keputusan: gagal tolak H0 - tidak ada bukti mean isi bukan 250 mLMari kita bedah baris-baris kode di atas:
- Baris 7 (
t1 = (xbar - mu) / (s / sqrt(n))): menghitung berapa standard error mean xbar menyimpang dari klaim 250; s/sqrt(n) adalah keraguan sampling. - Baris 8 (
tkrit1 = 2.131): nilai kritis dua arah untuk alpha = 0.05 dengan df = n - 1 = 15, dikutip dari tabel distribusi-t. - Baris 12-16 (
if abs(t1) > tkrit1): keputusan membandingkan magnitudo — tanda negatif hanya berarti rata-rata sampel di bawah klaim, bukan bukti lebih lemah.
Nilai |t| = 0.78 jauh di bawah 2.131, jadi data 16 botol tidak memberi bukti bahwa mesin melenceng — meski xbar memang 249.79, selisih 0.21 masih wajar untuk keraguan sampling sebesar 0.26.
Two-Sample t-Test: Jalur Manual #
Dua kelompok siswa belajar dengan metode berbeda; kita menguji H0: mean kedua populasi sama. Variansi populasi diestimasi gabungan lewat pooled variance sp, lalu t = (m1 - m2) / (sp * sqrt(1/n1 + 1/n2)) dengan df = n1 + n2 - 2.
x = [78 82 85 79 83 88 84 80 86 81 84 82]; % nilai ujian, metode baru
y = [74 71 78 73 76 75 79 72 77 74 75 73]; % nilai ujian, metode lama
n1 = numel(x); n2 = numel(y);
m1 = mean(x); m2 = mean(y);
s1 = std(x); s2 = std(y);
% variansi gabungan (pooled variance)
sp = sqrt(((n1-1)*s1^2 + (n2-1)*s2^2) / (n1 + n2 - 2));
% statistik uji t dua sampel
t2 = (m1 - m2) / (sp * sqrt(1/n1 + 1/n2));
df = n1 + n2 - 2;
tkrit2 = 2.074; % t(0.025, df = 22) dari tabel
fprintf('Mean baru = %.4f, mean lama = %.4f\n', m1, m2);
fprintf('s baru = %.4f, s lama = %.4f, pooled sp = %.4f\n', s1, s2, sp);
fprintf('t = %.4f (df = %d, t kritis = %.3f)\n', t2, df, tkrit2);
if abs(t2) > tkrit2
fprintf('Keputusan: tolak H0 - kedua metode berbeda signifikan\n');
else
fprintf('Keputusan: gagal tolak H0\n');
endOutput yang Dihasilkan:
Mean baru = 82.6667, mean lama = 74.7500
s baru = 2.9336, s lama = 2.4168, pooled sp = 2.6877
t = 7.2151 (df = 22, t kritis = 2.074)
Keputusan: tolak H0 - kedua metode berbeda signifikanStatistik t = 7.22 berarti selisih 7.92 poin mencapai 7.2 kali keraguan sampling-nya — jauh melampaui nilai kritis 2.074, sehingga H0 ditolak.
Mari kita bedah baris-baris kode di atas:
- Baris 9 (
sp = sqrt(((n1-1)*s1^2 + ...)): variansi kedua sampel dicampur dengan bobot df masing-masing — estimasi variansi noise yang lebih stabil daripada memakai s1 atau s2 sendirian. - Baris 12 (
t2 = (m1 - m2) / (sp * sqrt(1/n1 + 1/n2))): selisih mean dinormalisasi standard error gabungan; kedua ukuran sampel masuk lewat akar dari 1/n1 + 1/n2. - Baris 14 (
tkrit2 = 2.074): nilai kritis dua arah untuk df = 12 + 12 - 2 = 22.
Kode lengkap kedua uji berada di berkas contoh.m, termasuk perhitungan effect size Cohen’s d = (m1 - m2) / sp = 2.9456.
p-Value: Bahasa Umum Uji Statistik #
p-value adalah peluang memperoleh data se-ekstrem yang teramat (atau lebih ekstrem lagi) jika H0 benar — notasi probabilistiknya P(data | H0), bukan P(H0 | data). Keputusan ekuivalen: tolak H0 bila p < alpha. Untuk t = 7.2151 dengan df = 22, nilai t sudah melampaui nilai kritis alpha = 0.001 sebesar 3.792, jadi aman menyimpulkan p < 0.001. Sebaliknya |t| = 0.78 pada uji mesin pengisian memberi p > 0.05.
Versi MATLAB: ttest, ttest2, dan ranksum #
Statistics Toolbox membungkus seluruh prosedur di atas menjadi satu panggilan. Sintaks berikut diverifikasi dari dokumentasi resmi MathWorks:
% Statistics Toolbox - versi MATLAB dari kedua uji di atas
[h, p, ci, stats] = ttest(v, 250); % one-sample, mu = 250
[h, p, ci, stats] = ttest2(x, y); % two-sample, variansi sama
[p, h] = ranksum(x, y); % Wilcoxon rank-sum (nonparametrik)Output h adalah keputusan (1 = tolak H0 pada alpha 0.05), p p-value, ci confidence interval mean, dan stats struct berisi tstatistik, df, serta sd. Fungsi ranksum menguji kesamaan median tanpa asumsi normalitas: kandidat tepat ketika data ber-skala ordinal atau terdapat outlier kuat.
Ringkasan #
Uji hipotesis memetakan pertanyaan “efek nyata atau kebetulan” ke keputusan biner: rumuskan H0/H1, tetapkan alpha, hitung statistik uji, bandingkan dengan nilai kritis atau p-value. Rumus inti satu sampel t = (xbar - mu)/(s/sqrt(n)) dan dua sampel dengan pooled variance menghasilkan keputusan yang sama dengan ttest/ttest2 — toolbox hanya menyediakan p-value otomatis, CI, dan struct statistik tambahan. Ingat tabel kesalahan tipe I/II: gagal tolak H0 bukan bukti H0 benar, hanya bukti data belum cukup melawan H0. Untuk data non-normal, ranksum menggantikan uji-t dengan membandingkan median.