Bab sebelumnya menutup dengan kejujuran yang tidak nyaman: satu perkiraan titik selalu meleset sedikit, dan kita tidak tahu seberapa jauh. Interval kepercayaan (confidence interval) mengubah kejujuran itu menjadi informasi — sebuah rentang di sekeliling perkiraan yang dilengkapi tingkat keyakinan. Pada chapter ini kita bangun interval kepercayaan 95% untuk rata-rata dalam dua skenario (σ diketahui memakai z, σ tak diketahui memakai t), kenal margin of error, dan melatih cara membacanya yang benar — bagian yang paling sering dikutip dan paling sering disalahpahami.
Rumus Dasar dan Margin of Error #
Semua interval kepercayaan rata-rata berbentuk perkiraan ditambah-minus satu kelonggaran:
CI = xbar ± (nilai kritis) × SE
σ diketahui : xbar ± z × (σ / √n)
σ tak diketahui : xbar ± t × (s / √n)Nilai kritis menentukan seberapa lebar kelonggaran; SE (galat standar) menentukan seberapa sempit sebaran perkiraan. Perkalian keduanya dikenal sebagai margin of error (MoE) — angka yang sama dengan yang dikutip survei (“62,3% ± 2,8%”). Tingkat kepercayaan 95% dipilih karena nilai kritis z untuk 95% adalah 1,96: luas di antara −1,96 dan +1,96 pada kurva normal baku memang tepat 95%.
σ Diketahui: Interval z #
Skenario pertama: mesin pengemas kopi biji 200 gram memiliki galat baku yang sudah terdokumentasi, σ = 1,8 gram. Kita menimbang 25 kemasan dari batch produksi dan ingin memperkirakan rata-rata berat sesungguhnya dari batch tersebut:
import numpy as np
from scipy.stats import norm
sampel = np.array([
200.9, 199.3, 200.4, 198.7, 201.2,
199.8, 200.1, 200.6, 199.5, 200.3,
198.9, 200.8, 199.9, 200.2, 199.6,
201.0, 199.4, 200.5, 199.1, 200.7,
200.0, 199.2, 200.6, 198.8, 200.3,
])
sigma = 1.8 # galat baku mesin pengemas (diketahui dari spesifikasi)
n = sampel.size
xbar = sampel.mean()
z_star = norm.ppf(0.975)
moe = z_star * sigma / np.sqrt(n)
print(f"n = {n}, xbar = {xbar:.2f} gram")
print(f"z* untuk 95% = {z_star:.4f}")
print(f"margin of error = {moe:.3f} gram")
print(f"Interval 95%: ({xbar - moe:.2f}, {xbar + moe:.2f}) gram")Output yang Dihasilkan:
n = 25, xbar = 199.99 gram
z* untuk 95% = 1.9600
margin of error = 0.706 gram
Interval 95%: (199.29, 200.70) gramMari kita telaah kode di atas:
- Baris 14 (
norm.ppf(0.975)): kita mencari nilai z yang melampaui 97,5% luas di kirinya — sehingga ekor kanan tersisa 2,5%, dan ekor kiri juga 2,5% (dua sisi total 5%). Hasilnya 1,96, nilai kritis paling terkenal di statistika. - Baris 15 (
moe = ...): margin of error adalah nilai kritis dikali SE = σ/√n = 1,8/5 = 0,36; dikali 1,96 menghasilkan 0,706 gram. - Baris 17: interval akhirnya 199,29 sampai 200,70 gram — mesin bekerja terpusat sangat dekat pada target 200 gram.
Perhatikan apa yang terjadi pada MoE bila n diperbesar. Karena MoE sebanding dengan 1/√n, menggandakan sampel hanya memangkas MoE sekitar 29%; memangkasnya setengah menuntut sampel empat kali lipat — fakta yang menjelaskan kenapa survei presisi tinggi itu mahal.
σ Tak Diketahui: Interval t #
Skenario kedua jauh lebih umum: σ tidak diketahui dan harus diganti s dari sampel. Ketidakpastian tambahan ini dibayar dengan nilai kritis yang lebih besar — kita memakai distribusi t dengan derajat kebebasan n − 1. Contoh: 16 nilai ujian coba dan kita membangun interval untuk rata-rata kelas:
import numpy as np
from scipy.stats import t
import statsmodels.stats.weightstats as sm
sampel = np.array([
61.5, 63.0, 62.2, 64.1, 59.8, 62.7,
63.5, 60.9, 62.0, 61.2, 63.8, 62.4,
60.5, 62.9, 61.7, 63.2,
])
n = sampel.size
xbar = sampel.mean()
s = sampel.std(ddof=1)
t_star = t.ppf(0.975, df=n - 1)
moe = t_star * s / np.sqrt(n)
print(f"n = {n}, xbar = {xbar:.2f}, s = {s:.2f}")
print(f"t* (df={n - 1}) = {t_star:.4f}")
print(f"CI 95% manual : ({xbar - moe:.2f}, {xbar + moe:.2f})")
bawah, atas = sm.DescrStatsW(sampel).tconfint_mean(alpha=0.05)
print(f"CI 95% statsmodels : ({bawah:.2f}, {atas:.2f})")Output yang Dihasilkan:
n = 16, xbar = 62.21, s = 1.22
t* (df=15) = 2.1314
CI 95% manual : (61.56, 62.86)
CI 95% statsmodels : (61.56, 62.86)Mari kita telaah hasilnya:
- t = 2,1314 vs z = 1,96**: untuk 15 derajat kebebasan, nilai kritis t lebih besar — interval t memang lebih lebar sebagai kompensasi karena s hanya perkiraan σ.
- Baris 16-17 (
DescrStatsW(...).tconfint_mean): statsmodels menghitung interval yang sama dari satu panggilan; hasilnya identik dengan perhitungan manual. Dalam pekerjaan analisis, pustaka inilah yang dipakai; perhitungan manual kita lakukan sekali untuk memahami isi kotak hitamnya. - Semakin besar n, semakin mirip t dengan z: pada df = 15 bedanya masih terasa (2,13 vs 1,96); pada df = 200, t* = 1,972 — nyaris menyamai z. Ketidakpastian s memudar seiring bertambahnya data.
Membaca Interval dengan Benar #
Apa sebenarnya arti “95% yakin”? Simulasi berikut menjawabnya secara harfiah: kita bangun 100 interval dari 100 sampel berbeda, lalu hitung berapa banyak yang benar-benar menangkap μ:
import numpy as np
from scipy.stats import t
rng = np.random.default_rng(42)
mu, sigma, n = 200.0, 1.8, 25
menangkap = 0
percobaan = 100
for _ in range(percobaan):
sampel = rng.normal(mu, sigma, size=n)
xbar = sampel.mean()
s = sampel.std(ddof=1)
moe = t.ppf(0.975, df=n - 1) * s / np.sqrt(n)
if xbar - moe <= mu <= xbar + moe:
menangkap += 1
print(f"Dari {percobaan} interval, {menangkap} menangkap mu")
print(f"Proporsi prosedur yang berhasil: {menangkap / percobaan:.0%}")Output yang Dihasilkan:
Dari 100 interval, 94 menangkap mu
Proporsi prosedur yang berhasil: 94%Hasil 94 dari 100 — bukan persis 95, karena 100 adalah jumlah percobaan yang masih kecil, tetapi sudah berdiri sangat dekat dengan janji tingkat kepercayaan. Interpretasi yang benar kini terlihat: yang punya peluang 95% adalah prosedurnya, bukan satu interval tertentu. Begitu sampel diambil dan interval (61,56; 62,86) terbentuk, nilai μ sudah berhenti berubah — interval itu menangkap μ atau tidak, tanpa peluang di antaranya. Kalimat yang benar berbunyi: “kita 95% yakin prosedur ini menangkap μ”, dan dalam praktik laporan sering dipendekkan menjadi “rata-rata berada antara 61,56 dan 62,86 (IK 95%)”.
Rangkuman #
- Interval kepercayaan menambahkan kelonggaran pada perkiraan titik: xbar ± nilai kritis × SE; kelonggaran itu disebut margin of error.
- σ diketahui → nilai kritis dari normal (z, 1,96 untuk 95%); σ tak diketahui → nilai kritis dari distribusi t dengan df = n − 1, sedikit lebih besar.
norm.ppf(0.975),t.ppf(0.975, df), danDescrStatsW.tconfint_mean()adalah alat resmi untuk ketiganya; hasil manual dan statsmodels identik.- “95% yakin” menempel pada prosedur: sekitar 95% dari interval yang dibangun prosedur ini akan menangkap μ — simulasi kita mendapat 94 dari 100.
Interval memberi kita rentang, tetapi banyak keputusan bisnis berbentuk pertanyaan ya-tidak: “apakah klaim pemasok itu benar?” Menjawabnya butuh kerangka resmi untuk mengadu dugaan melawan data — kerangka itu bernama pengujian hipotesis, topik chapter berikutnya.