Pemasok sirup mengklaim setiap gelas kopi susu di kedai kita berisi rata-rata 300 ml. Pelanggan menduga porsi mereka lebih sedikit. Siapa yang benar? Interval kepercayaan memberi rentang, tetapi banyak keputusan menuntut jawaban ya-tidak atas satu klaim. Pengujian hipotesis (hypothesis testing) adalah kerangka resmi untuk mengadu klaim melawan data: rumuskan dua dugaan yang saling bertentangan, hitung satu statistik dari sampel, lalu putuskan dengan aturan yang disepakati di muka. Pada chapter ini kita jalankan seluruh prosesnya — dari rumusan sampai kalimat keputusan — untuk kasus rata-rata satu sampel.
Kerangka H0 dan H1 #
Setiap uji memuat dua hipotesis. Hipotesis nol H0 adalah pernyataan status quo — klaim yang dianggap benar sampai data membuktikan sebaliknya. Hipotesis alternatif H1 adalah tuduhan yang kita periksa. Logikanya meniru asas praduga tak bersalah di pengadilan: pemasok dianggap jujur (H0: μ = 300) sampai bukti cukup untuk menyimpulkan sebaliknya (H1: μ ≠ 300). Dua hal tentang pasangan ini perlu dipegang:
| Unsur | Contoh pada kasus porsi kopi | Catatan |
|---|---|---|
| H0 (nol) | μ = 300 ml | Selalu memuat tanda sama dengan |
| H1 (alternatif) | μ ≠ 300 ml | Dua sisi: bisa lebih atau kurang |
| α (tingkat signifikansi) | 0,05 | Ambang bukti, ditetapkan sebelum uji |
Kata kunci pada H1 menentukan arah uji. Klaim “berbeda dari 300” memberi uji dua sisi seperti di atas; dugaan “lebih sedikit dari 300” akan memberi uji satu sisi dengan daerah kritis hanya di ekor kiri. Kita pakai bentuk dua sisi karena pertanyaan bisnisnya simetris: porsi yang terlalu jauh ke arah mana pun sama-sama masalah.
Perlu juga disepakati sejak awal: keputusan uji hanya punya dua keluaran — tolak H0 atau gagal tolak H0. Kita tidak pernah “menerima H0”, karena gagal menemukan bukti bukanlah bukti ketiadaan — sama seperti vonis bebas bukan bukti ketidakterlibatan.
Lima Langkah Pengujian #
Seluruh uji hipotesis klasik berjalan dalam lima langkah yang sama:
- Rumuskan H0 dan H1.
- Tetapkan α (di sini 0,05) dan pilih uji yang sesuai (uji-t satu sampel, karena σ tak diketahui).
- Kumpulkan data dan hitung statistik ringkas: xbar, s, n.
- Hitung statistik uji dan daerah kritisnya.
- Putuskan dan tafsirkan dalam bahasa masalah.
Statistik uji untuk rata-rata satu sampel adalah t hitung — kakak dari rumus z yang sudah kita kenal, dengan s menggantikan σ:
t = (xbar - mu0) / (s / √n)Uji t Satu Sampel, Dihitung Tangan #
Kita ukur 16 gelas yang disajikan acak sepanjang sepekan. Keempat langkah pertama dijalankan satu blok:
import numpy as np
from scipy.stats import t
porsi = np.array([
296, 302, 288, 291, 299, 285, 293, 306,
297, 290, 288, 301, 294, 287, 295, 292,
])
mu0 = 300.0
n = porsi.size
xbar = porsi.mean()
s = porsi.std(ddof=1)
t_hitung = (xbar - mu0) / (s / np.sqrt(n))
t_kiri = t.ppf(0.025, df=n - 1)
t_kanan = t.ppf(0.975, df=n - 1)
print(f"Langkah 1-2: H0: mu = {mu0:.0f} ml | H1: mu != {mu0:.0f} ml")
print(f"Langkah 3: n = {n}, xbar = {xbar:.2f} ml, s = {s:.2f} ml")
print(f"Langkah 4: t hitung = {t_hitung:.3f}")
print(f" daerah kritis: t < {t_kiri:.3f} atau t > {t_kanan:.3f}")
if t_hitung < t_kiri or t_hitung > t_kanan:
print("Langkah 5: tolak H0 -> rata-rata berbeda dari klaim 300 ml")
else:
print("Langkah 5: gagal tolak H0 -> bukti kurang untuk melawan klaim")Output yang Dihasilkan:
Langkah 1-2: H0: mu = 300 ml | H1: mu != 300 ml
Langkah 3: n = 16, xbar = 294.00 ml, s = 5.93 ml
Langkah 4: t hitung = -4.045
daerah kritis: t < -2.131 atau t > 2.131
Langkah 5: tolak H0 -> rata-rata berbeda dari klaim 300 mlMari kita telaah kode di atas:
- Baris 14 (
t_hitung = ...): rumus t diterjemahkan langsung. xbar = 294 ml meleset 6 ml dari klaim; dibagi SE = s/√n = 5,93/4 = 1,48 menghasilkan −4,045 — rata-rata sampel berjarak lebih dari empat galat standar di bawah klaim. - Baris 15-16 (
t.ppf(0.025)dant.ppf(0.975)): nilai kritis dua sisi pada df = 15 adalah ±2,131. Daerah kritis adalah wilayah ekstrem kurva t — jatuh ke sana berarti xbar terlalu jauh dari μ0 untuk masih bisa disebut kebetulan nyaman. - Baris 20-23 (
if t_hitung < t_kiri ...): −4,045 < −2,131, jadi statistik uji jatuh di daerah kritis; H0 ditolak. Perhatikan bahwa keputusan memakaiif/elsebiasa — statistik uji pada akhirnya hanyalah aturan keputusan berbentuk kode.
Versi scipy: ttest_1samp #
Perhitungan manual tadi penting untuk memahami mekanismenya, tetapi pada pekerjaan analisis kita memanggil satu fungsi:
import numpy as np
from scipy.stats import ttest_1samp
porsi = np.array([
296, 302, 288, 291, 299, 285, 293, 306,
297, 290, 288, 301, 294, 287, 295, 292,
])
hasil = ttest_1samp(porsi, popmean=300.0)
print(f"t hitung : {hasil.statistic:.4f}")
print(f"p-value : {hasil.pvalue:.6f}")
print(f"Selisih rata-rata : {porsi.mean() - 300.0:+.2f} ml")
print(f"Signifikan pada alpha 0.05 : {hasil.pvalue < 0.05}")Output yang Dihasilkan:
t hitung : -4.0452
p-value : 0.001058
Selisih rata-rata : -6.00 ml
Signifikan pada alpha 0.05 : TrueNilai statistiknya identik dengan hitungan tangan: −4,0452. Tambahan pentingnya adalah p-value 0,001058 — peluang melihat xbar sejauh ini (atau lebih jauh) dari 300 ml bila klaim pemasok benar-benar benar. Karena peluang itu jauh di bawah α = 0,05, kesimpulan tolak H0 berdiri di dua jalur yang sama: lewat daerah kritis, maupun lewat p-value. Cara kedua inilah yang menjadi standar pelaporan riset modern — dan penuh jebakan tafsirannya, sehingga kita sediakan satu chapter penuh untuknya.
Keputusan dalam Bahasa Bisnis #
Keluaran statistik belum menjadi keputusan. Laporan yang siap dibaca pemilik kedai berbunyi: “Rata-rata porsi terukur 294 ml, secara statistik berbeda dari klaim 300 ml (t = −4,05, p = 0,001); porsi rata-rata lebih rendah 6 ml dari klaim.” Kalimat itu memuat tiga bahan wajib — arah perbedaan (lebih rendah), besaran praktisnya (6 ml), dan bukti statistiknya (t dan p) — dan sengaja tidak menyebut “H0 ditolak” yang tidak bermakna bagi pembaca non-statistik. Perlu dicatat juga: selisih 6 ml mungkin signifikan secara statistik tetapi remeh secara bisnis; membedakan keduanya adalah pokok bahasan chapter Ukuran Efek.
Rangkuman #
- Pengujian hipotesis mengadu H0 (status quo, memuat tanda sama dengan) melawan H1 (dugaan); keputusan hanya “tolak” atau “gagal tolak” — tidak pernah “terima H0”.
- Lima langkah baku: rumusan, α dan pilihan uji, statistik ringkas, statistik uji, keputusan dan tafsiran.
- Uji-t satu sampel memakai t = (xbar − μ0)/(s/√n) dengan nilai kritis t.ppf pada df = n − 1; kasus porsi kopi menghasilkan t = −4,05 terhadap batas ±2,13 → H0 ditolak.
scipy.stats.ttest_1sampmemberi statistik dan p-value yang sama dalam satu panggilan; keputusan akhir selalu diterjemahkan ke bahasa masalah.
Keputusan kita bertumpu pada satu angka kecil bernama p-value. Apa sebenarnya arti angka 0,001 itu, dan tafsiran salah apa yang paling sering menimpanya? Chapter berikutnya membedahnya sampai tuntas.