Dua chapter terakhir mengajarkan cara memutuskan “ada efek atau tidak” — tetapi pembaca laporan pada akhirnya bertanya: seberapa besar efeknya? Pertanyaan itu tidak dijawab oleh p-value, dan justru paling sering ditinggalkan oleh laporan yang berhenti di kalimat “signifikan secara statistik”. Pada chapter ini kita hitung ukuran efek paling populer, Cohen’s d, secara manual untuk membandingkan dua kelompok; kita pelajari patokan tafsirnya; lalu kita buktikan lewat simulasi kenapa hasil yang signifikan belum tentu penting, dan hasil yang penting belum tentu signifikan.
Cohen’s d: Selisih dalam Satuan Simpangan Baku #
Ukuran efek mengubah pertanyaan “berapa poin selisihnya?” menjadi “berapa besar selisih itu dibanding keragaman alami data?”. Selisih 3 poin nilai ujian terdengar kecil; tetapi bila nilai antar-siswa memang hanya bervariasi 4 poin, selisih 3 poin adalah jurang. Cohen’s d menstandardisasi selisih dua rata-rata dengan simpangan baku gabungan:
d = (xbar1 - xbar2) / s_pooled
s_pooled = √( ((n1-1)·s1² + (n2-1)·s2²) / (n1+n2-2) )Simpangan baku gabungan (pooled) adalah rata-rata tertimbang kedua varians — bertahan di antara s1 dan s2. Hasil akhirnya tak bersatuan: d = 0,73 berarti rata-rata kelompok pertama berjarak 0,73 simpangan baku dari kelompok kedua. Patokan tafsir yang diwariskan Jacob Cohen dan dipakai luas sampai sekarang:
| Cohen’s d | Kategori konvensional | Gambaran kasar |
|---|---|---|
| sekitar 0,2 | kecil | Perbedaan nyaris tak terlihat pada kasus satu per satu |
| sekitar 0,5 | sedang | Perbedaan mulai terasa, tetapi kedua kelompok tumpang-tindih |
| sekitar 0,8 | besar | Perbedaan jelas; sebagian besar anggota kelompok terpisah |
Angka 0,2/0,5/0,8 adalah konvensi bidang, bukan hukum alam — pada konteks nyata, d = 0,2 bisa sangat penting (efek harga terhadap penjualan jutaan transaksi) dan d = 0,8 bisa remeh. Konvensi ini alat komunikasi cepat, bukan pengganti pertimbangan domain.
Menghitung d Secara Manual #
Kasusnya: sebuah sekolah menguji dua metode persiapan ujian — kelas luring (tatap muka) dan kelas daring — dengan nilai post-test berikut:
import numpy as np
kelas_luring = np.array([
68, 72, 65, 70, 74, 61, 69, 73, 66, 71,
67, 75, 62, 68, 70,
])
kelas_daring = np.array([
71, 75, 68, 73, 77, 64, 72, 76, 69, 74,
70, 78, 65, 71, 73,
])
n1, n2 = kelas_luring.size, kelas_daring.size
s1 = kelas_luring.std(ddof=1)
s2 = kelas_daring.std(ddof=1)
s_pooled = np.sqrt(((n1 - 1) * s1**2 + (n2 - 1) * s2**2) / (n1 + n2 - 2))
selisih = kelas_daring.mean() - kelas_luring.mean()
d = selisih / s_pooled
print(f"Kelas luring : mean = {kelas_luring.mean():.2f}, s = {s1:.2f}")
print(f"Kelas daring : mean = {kelas_daring.mean():.2f}, s = {s2:.2f}")
print(f"s pooled = {s_pooled:.2f}")
print(f"Selisih mean = {selisih:+.2f} poin")
print(f"Cohen's d = {d:.2f}")Output yang Dihasilkan:
Kelas luring : mean = 68.73, s = 4.10
Kelas daring : mean = 71.73, s = 4.10
s pooled = 4.10
Selisih mean = +3.00 poin
Cohen's d = 0.73Mari kita telaah kode di atas:
- Baris 13-14 (
s1,s2): kedua simpangan baku sampel memakaiddof=1— kita menaksir σ dari sampel, konsisten dengan konvensi inferensi. - Baris 15 (
s_pooled): rumus simpangan baku gabungan diterjemahkan langsung — varians kedua kelompok dirata-rata tertimbang, lalu diakarkan. Kedua kelompok kebetulan sama seragamnya (s = 4,10), sehingga hasil gabungannya juga 4,10. - Baris 17 (
d = selisih / s_pooled): selisih 3,00 poin dibagi 4,10 menghasilkan d = 0,73 — efektif sedang menuju besar. Dengan kata lain, rata-rata kelas daring berdiri 0,73 simpangan baku di atas kelas luring: perbedaan yang terasa, meski sebagian siswa kedua kelas masih bertumpang tindih nilainya.
Signifikan Bukan Berarti Penting #
Sekarang bukti bahwa p-value dan ukuran efek menjawab dua pertanyaan berbeda. Simulasi berikut menumbuhkan dua studi: satu dengan efek kecil (sekitar 0,2σ) tetapi sampel raksasa 2.000 per kelompok; satu dengan efek besar (sekitar 0,8σ) tetapi sampel mungil 8 per kelompok:
import numpy as np
from scipy.stats import ttest_ind
rng = np.random.default_rng(42)
# Efek kecil (sekitar 0,15 sigma) pada sampel besar
a_besar = rng.normal(75.0, 10.0, size=2000)
b_besar = rng.normal(76.5, 10.0, size=2000)
# Efek besar (sekitar 0,8 sigma) pada sampel kecil
a_kecil = rng.normal(75.0, 10.0, size=8)
b_kecil = rng.normal(83.0, 10.0, size=8)
for nama, x, y in [("sampel besar", a_besar, b_besar), ("sampel kecil", a_kecil, b_kecil)]:
hasil = ttest_ind(x, y)
selisih = y.mean() - x.mean()
s_pooled = np.sqrt(((x.size - 1) * x.var(ddof=1) + (y.size - 1) * y.var(ddof=1))
/ (x.size + y.size - 2))
d = selisih / s_pooled
print(f"{nama}: selisih = {selisih:+.2f}, Cohen's d = {d:.2f}, "
f"p-value = {hasil.pvalue:.4f}")Output yang Dihasilkan:
sampel besar: selisih = +2.21, Cohen's d = 0.22, p-value = 0.0000
sampel kecil: selisih = +6.10, Cohen's d = 0.73, p-value = 0.1639Perhatikan kebalikan yang tajam di hasil ini:
- Studi “sampel besar”: efeknya kecil (d = 0,22, selisih 2,21 poin dari rentang nilai puluhan) tetapi p-value di bawah 0,0001 — sangat signifikan. Dengan 4.000 data, bahkan bisikan pun terdengar; “signifikan” di sini hanya berarti “kami cukup yakin selisih ini bukan nol”, bukan “selisih ini menentukan nasib sekolah”.
- Studi “sampel kecil”: efeknya lebih dari tiga kali lebih besar (d = 0,73, selisih 6,10 poin) tetapi p-value = 0,16 — tidak signifikan. Delapan data per kelompok terlalu sedikit untuk menyingkap bahkan efek yang besar; ini persis Tipe II yang kita bahas pada chapter Kesalahan Tipe I dan Tipe II.
- Implikasi pelaporan: melaporkan p-value saja akan membuat studi pertama tampak sebagai penemuan besar dan studi kedua sebagai kegagalan — padahal hubungan kepentingannya justru terbalik. Laporan yang sehat selalu berpasangan: p-value untuk “yakin efeknya ada”, ukuran efek untuk “berapa besar efeknya”.
Rangkuman #
- Ukuran efek menjawab “seberapa besar”, p-value menjawab “seberapa yakin efeknya bukan nol” — dua pertanyaan yang tidak bisa saling menggantikan.
- Cohen’s d = selisih dua rata-rata dibagi simpangan baku gabungan; tak bersatuan sehingga bisa dibandingkan lintas studi.
- Patokan konvensi Cohen: 0,2 kecil, 0,5 sedang, 0,8 besar — alat komunikasi, bukan vonis kepentingan.
- Simulasi membuktikan paradoks: efek kecil bisa sangat signifikan (d = 0,22, p < 0,0001 pada n besar), efek besar bisa tidak signifikan (d = 0,73, p = 0,16 pada n kecil).
Sejauh ini kita mengukur efek dan perbedaan kelompok satu per satu. Bagaimana jika yang ingin kita ukur adalah kekuatan hubungan dua variabel numerik — suhu udara terhadap penjualan es teh, misalnya? Chapter penutup section ini menghadirkan alatnya: korelasi dan kovarians.