Chapter Z-Test dan T-Test menutup perbandingan kelas A dan kelas B dengan keputusan biner: t = 1.4907, p = 0.1534, gagal menolak H0. Keputusan itu menjawab “apakah metode baru berbeda efeknya?” dengan ya atau tidak saja — padahal pertanyaan yang lebih berguna: berapa besar selisih yang masih mungkin? Chapter ini membalik posisi pengujian menjadi penaksiran: daripada menguji apakah selisih μ1 − μ2 sama dengan nol, kita taksir langsung rentangnya. Hasilnya adalah confidence interval untuk selisih dua mean — saudara kembar estimasi dari two-sample t-test — dalam tiga varian: variance gabungan (pooled), Welch, dan desain berpasangan.
Dari Menguji ke Menaksir Selisih #
Chapter Confidence Interval menutup catatannya dengan hubungan diam-diam: interval 95% dan uji dua sisi pada taraf 5% memutus hal yang sama. Aturannya berlaku dua arah. Bila interval untuk μ1 − μ2 memuat nol, uji dua sisi akan gagal menolak H0; bila interval tidak memuat nol, uji akan menolaknya. Namun interval memberi lebih dari keputusan: ia melaporkan arah dan besaran selisih yang masih konsisten dengan data — sebab “berbeda” tanpa “seberapa besar” belum bisa diterjemahkan menjadi keputusan.
Formatnya sama dengan semua CI sebelumnya, hanya bahannya diganti:
taksiran = x̄1 - x̄2
margin = nilai kritis t × SE(selisih)Persoalan teknisnya tinggal satu: standard error selisih dua mean — dan rumusnya bergantung pada desain pengambilan data. Tiga bagian berikut membahas tiga jawaban atas pertanyaan itu.
Dua Sampel Independen dengan Variance Gabungan #
Ketika dua kelompok berisi individu berbeda (siswa kelas A dan siswa kelas B) dan sebaran kedua kelompok layak disamakan, standard error-nya memakai variance gabungan — persis penyebut pooled dari chapter Z-Test dan T-Test:
sp² = [(n1 - 1)s1² + (n2 - 1)s2²] / (n1 + n2 - 2)
SE = sp · √(1/n1 + 1/n2)
CI = (x̄1 - x̄2) ± t(n1 + n2 - 2) × SEKita pakai ulang data yang sama: kelas A (metode lama) [73, 76, 76, 79, 82, 82, 85, 88, 88, 91] dengan x̄1 = 82, s1 = 6; kelas B (metode baru) [69, 72, 72, 75, 78, 78, 81, 84, 84, 87] dengan x̄2 = 78, s2 = 6. Seluruh bahan sudah diverifikasi di chapter itu — sp = 6, SE = 2.6833, df = 18, t kritis dua arah 2.1009 — dan karena kedua s serta n sama, yang tersisa hanya langkah terakhirnya:
margin = 2.1009 × 2.6833 = 5.64
CI 95% = 4 ± 5.64 = [-1.64, 9.64]Interval [−1.64, 9.64] memuat nol — dan di sinilah kontinuitasnya terlihat: p-value 0.1534 pada chapter Z-Test dan T-Test memutus hal yang sama, gagal menolak H0, lewat jalur berbeda. Dua angka dari dua prosedur, satu kesimpulan. Bedanya, interval sekarang berbicara dengan bahasa yang lebih kaya: selisih metode lama dan baru bisa berada di mana saja antara −1.64 (metode baru unggul 1.64 poin) sampai +9.64 (metode lama unggul 9.64 poin). Data 10 lawan 10 siswa memang belum cukup untuk mempersempit pilihan itu — margin 5.64 poin adalah harga dari sampel kecil, sesuai hukum akar-n dari chapter Standard Error.
Menghitung dengan Python #
scipy menghitung interval ini langsung dari data mentah lewat metode confidence_interval pada hasil ttest_ind. Blok berikut juga memverifikasi versi Welch untuk contoh mesin di bagian berikutnya:
from math import sqrt
from scipy.stats import t, ttest_ind
kelas_a = [73, 76, 76, 79, 82, 82, 85, 88, 88, 91]
kelas_b = [69, 72, 72, 75, 78, 78, 81, 84, 84, 87]
hasil = ttest_ind(kelas_a, kelas_b)
ci = hasil.confidence_interval(0.95)
print(f"kelas A/B pooled : t = {hasil.statistic:.4f}, p = {hasil.pvalue:.4f}")
print(f"CI 95% = [{ci.low:.4f}, {ci.high:.4f}]")
m1, s1, n1 = 250.3, 1.2, 25 # mesin 1: mean, simpangan baku, n
m2, s2, n2 = 249.4, 3.4, 15 # mesin 2
a, b = s1**2 / n1, s2**2 / n2
se = sqrt(a + b)
df_w = (a + b) ** 2 / (a**2 / (n1 - 1) + b**2 / (n2 - 1))
tw = t.ppf(0.975, df_w)
selisih = m1 - m2
print(f"mesin Welch : SE = {se:.4f}, df = {df_w:.2f}")
print(f"CI 95% = [{selisih - tw * se:.4f}, {selisih + tw * se:.4f}]")Output yang Dihasilkan:
kelas A/B pooled : t = 1.4907, p = 0.1534
CI 95% = [-1.6374, 9.6374]
mesin Welch : SE = 0.9101, df = 16.12
CI 95% = [-1.0282, 2.8282]Mari kita bedah kode di atas:
- Baris 1-10 (CI kelas A/B):
ttest_indmenghitung uji pooled sekaligus intervalnya — atributconfidence_interval(0.95)mengembalikan batas bawah dan atas untuk selisih mean; hasil [−1.6374, 9.6374] adalah versi empat desimal dari [−1.64, 9.64] di atas, dan p = 0.1534 persis angka chapter Z-Test dan T-Test. - Baris 12-20 (CI mesin, Welch): statistik ringkasan dua mesin diolah manual — a dan b adalah s²/n tiap kelompok, SE = √(a + b) menerjemahkan rumus Welch apa adanya, df dihitung dari rumus Welch–Satterthwaite, dan
t.ppf(0.975, df_w)mengambil nilai kritis untuk df pecahan; hasilnya [−1.0282, 2.8282] siap dibandingkan dengan hitungan tangan di bagian berikutnya.
Welch: Ketika Variance Tidak Layak Disamakan #
Pooled menuntut satu syarat yang kerap dilupakan: varians kedua kelompok setara. Chapter Z-Test dan T-Test mengingatkan lewat daftar konfirmasi sebelum ttest_ind, dan chapter Pengujian Hipotesis dengan SciPy menunjukkan parameternya: equal_var=False mengaktifkan uji Welch. Pada data kelas A/B kedua jalur berimpit — s dan n sama sehingga df Welch jatuh tepat di 18 — tetapi kebetulan rapi itu bukan aturan umum. Welch tidak menyamakan varians; standard error-nya menjumlahkan ketidakpastian kedua kelompok apa adanya:
SE = √(s1²/n1 + s2²/n2)
df = (s1²/n1 + s2²/n2)² / [ (s1²/n1)²/(n1 - 1) + (s2²/n2)²/(n2 - 1) ]
(rumus Welch-Satterthwaite; df hasilnya biasanya bukan bilangan bulat)Contohnya dua mesin kemasan kopi: mesin 1 (n = 25) mengisi rata-rata 250.3 gram dengan s = 1.2; mesin 2 (n = 15) rata-rata 249.4 gram dengan s = 3.4. Selisih taksiran 0.9 gram, tetapi kelompok yang lebih kecil justru jauh lebih bervariasi — tepat pola yang membuat pooled bermasalah. Hitungan Welch-nya (dibulatkan ke empat desimal, hasil akhir dua desimal):
SE = √(1.2²/25 + 3.4²/15) = √(0.0576 + 0.7707) = 0.9101
df = (0.0576 + 0.7707)² / (0.0576²/24 + 0.7707²/14) = 16.12
t(16.12) = 2.1186
margin = 2.1186 × 0.9101 = 1.9281
CI 95% = 0.9 ± 1.9281 = [-1.03, 2.83]Sebagai pembanding, pooled pada data yang sama menghasilkan sp = 2.2734, SE = 0.7425, t(38) = 2.0244, dan CI [−0.60, 2.40] — lebih sempit. Penyebabnya: pooling memaksa variance gabungan menengahi kedua kelompok, dan karena kelompok besar (n = 25) justru yang presisi (s = 1.2), sp² tertarik ke bawah — ketidakpastian kelompok kecil yang bervariasi ikut diremehkan. Interval Welch yang lebih lebar adalah laporan yang lebih jujur. Keduanya memuat nol — perbedaan berat isi mesin belum terdeteksi — tetapi kesimpulan itu harus dibangun di atas margin yang benar. Praktik yang aman: Welch sebagai bawaan untuk dua kelompok independen; pooled ketika kesetaraan varians punya alasan (misalnya desain eksperimen terkontrol).
Desain Berpasangan: Selisih Tiap Pasangan #
Dua varian sebelumnya menuntut kelompok independen. Namun banyak data datang berpasangan pada individu yang sama — sebelum dan sesudah suatu perlakuan — dan desain ini punya jalur analisis sendiri: hitung selisih tiap pasangan d, lalu bangun CI untuk mean selisih μd, persis format satu-sampel dari chapter Confidence Interval:
CI = d̄ ± t(n - 1) × sd/√n
d̄ = mean selisih tiap pasangan
sd = simpangan baku selisihContohnya sebuah kantor mencatat waktu tempuh 8 karyawan (menit) sebelum dan sesudah rute baru dibuka:
| Karyawan | Sebelum | Sesudah | d = sesudah − sebelum |
|---|---|---|---|
| 1 | 55 | 49 | −6 |
| 2 | 42 | 40 | −2 |
| 3 | 63 | 58 | −5 |
| 4 | 48 | 45 | −3 |
| 5 | 71 | 66 | −5 |
| 6 | 39 | 37 | −2 |
| 7 | 58 | 55 | −3 |
| 8 | 50 | 47 | −3 |
Delapan nilai d menghasilkan d̄ = −29/8 = −3.625, sd = 1.5059, dan (dibulatkan ke empat desimal, hasil akhir dua desimal):
SE = 1.5059/√8 = 0.5324
t(7) = 2.3646
margin = 2.3646 × 0.5324 = 1.2589
CI 95% = -3.625 ± 1.2589 = [-4.88, -2.37]Interval [−4.88, −2.37] sepenuhnya di bawah nol: rute baru memotong waktu tempuh antara 2.37 dan 4.88 menit pada tingkat keyakinan 95%. Angka kecil di kolom d bukan kebetulan — sd selisih hanya 1.51, padahal waktu tempuh antar karyawan menyimpang sekitar 10 menit dari rata-ratanya. Keterpasangan membuang variasi antar individu (karyawan yang rumahnya jauh tetap jauh di kedua pengukuran), sehingga yang tersisa hanya variasi perlakuan. Blok berikut memverifikasi hitungan manual:
from scipy.stats import ttest_rel
sebelum = [55, 42, 63, 48, 71, 39, 58, 50]
sesudah = [49, 40, 58, 45, 66, 37, 55, 47]
hasil = ttest_rel(sesudah, sebelum)
ci = hasil.confidence_interval(0.95)
print(f"paired : t = {hasil.statistic:.4f}, p = {hasil.pvalue:.4f}")
print(f"CI 95% = [{ci.low:.4f}, {ci.high:.4f}]")Output yang Dihasilkan:
paired : t = -6.8084, p = 0.0003
CI 95% = [-4.8840, -2.3660]Hitungan mesin cocok dengan manual: t = −6.8084, p = 0.0003, dan [−4.8840, −2.3660] adalah versi empat desimal dari [−4.88, −2.37]. Tanda negatif pada t hanya mencatat arah — sesudah dikurangi sebelum memang menurun — dan p-value kecil itu memutus hal yang sama dengan interval yang tidak memuat nol.
Tiga Jalur dalam Satu Tabel #
Pilihan jalur mengikuti desain data, dan ringkasannya muat dalam satu tabel:
| Aspek | Pooled | Welch | Berpasangan |
|---|---|---|---|
| SE | sp·√(1/n1 + 1/n2) | √(s1²/n1 + s2²/n2) | sd/√n |
| df | n1 + n2 − 2 | Welch-Satterthwaite | n − 1 |
| Objek interval | μ1 − μ2, kelompok independen | μ1 − μ2, kelompok independen | μd, individu sama diukur dua kali |
| Syarat kunci | varians kedua kelompok setara | tanpa syarat varians | pasangan terjaga sampai analisis |
Ketiganya menghasilkan format yang sama — taksiran selisih plus-minus margin — dan dibaca dengan aturan yang sama terhadap nol: memuat nol berarti selisih nol masih masuk akal; sepenuhnya di satu sisi nol berarti arah selisih terdeteksi. Yang membedakan hanya cara standard error menangkap ketidakpastian, dan itu ditentukan desain pengambilan data: sekali lagi, desain menentukan analisis.
Jebakan: Dua CI Individual yang Bertumpang Tindih #
Cara membaca perbandingan dua kelompok yang paling sering muncul di laporan adalah menaruh dua confidence interval mean berdampingan, lalu menilai apakah keduanya bertumpang tindih. Penalaran itu terasa wajar — dan keliru. Ilustrasinya memakai angka terverifikasi: dua program belajar, masing-masing n = 50 siswa dengan s = 10; program A mencatat x̄ = 82, program B x̄ = 77.5. Margin CI individual memakai t(49) = 2.0096 dan SE = 10/√50 = 1.4142; CI selisih memakai sp = 10, SE = 10·√(2/50) = 2.0, dan t(98) = 1.9845:
CI program A : 82 ± 2.0096 × 1.4142 = 82 ± 2.84 = [79.16, 84.84]
CI program B : 77.5 ± 2.84 = [74.66, 80.34]
CI selisih : 4.5 ± 1.9845 × 2.0 = 4.5 ± 3.97 = [0.53, 8.47]Dua CI individual bertumpang tindih pada rentang [79.16, 80.34], dan banyak pembaca menyimpulkan “tidak ada perbedaan”. Tetapi CI selisihnya [0.53, 8.47] tidak memuat nol: dengan desain ini, program A terdeteksi unggul 0.53 sampai 8.47 poin. Penyebab selisih bacaannya matematis: SE selisih menggabungkan dua sumber ketidakpastian, √(SE1² + SE2²) — dengan SE sama besar, nilainya √2 ≈ 1.41 kali SE individual — sehingga selisih dua mean bisa signifikan jauh sebelum dua CI individual berpisah sama sekali.
Penutup: Ketika Rumus SE Mulai Dipertanyakan #
Tiga resep pada chapter ini — pooled, Welch, berpasangan — semuanya berdiri di atas fondasi yang sama: standard error berbentuk tertutup yang berasal dari asumsi distribusi mendekati normal, observasi independen, dan (untuk pooled) varians setara. Ketika data miring, memuat outlier, atau berstruktur yang tidak cocok dengan rumus, pertanyaan berikutnya bukan “rumus mana yang dipilih” melainkan “apakah standard error klasik masih bisa dipercaya”. Dua chapter penutup section ini menjawabnya: Galat Standar Robust memperkuat SE terhadap pelanggaran asumsi, dan Bootstrap Resampling menaksirnya kembali dari data itu sendiri. Rujukan konsep lebih lanjut: Penn State STAT 500 dan dokumentasi scipy.stats .