Sebuah universitas ingin mengetahui apakah status berprestasi mahasiswa (misalnya IPK tinggi atau pernah juara lomba) berhubungan dengan kelolosan seleksi beasiswa. Jenis beasiswa yang didaftar (Nasional/Kampus) diduga memengaruhi pola hubungan tersebut, sehingga dijadikan kovariat.
| Peran | Variabel | Kategori |
|---|---|---|
| X (eksposur) | Status mahasiswa | Berprestasi, Tidak Berprestasi |
| Y (respons) | Hasil seleksi | Lolos, Tidak Lolos |
| Z (kovariat/stratum) | Jenis beasiswa | Nasional, Kampus |
Beasiswa nasional memiliki kuota kecil dan seleksi ketat, sedangkan beasiswa kampus kuotanya lebih besar dan lebih mudah diraih.
Data dibangkitkan untuk 2.000 pendaftar dengan tiga langkah. Setiap langkah dibuat agar sesuai dengan cerita kasusnya.
set.seed(2026) # agar hasil simulasi sama setiap kali dijalankan
n <- 2000
# Langkah 1: jenis beasiswa yang didaftar (peluang 50:50)
jenis <- sample(c("Nasional", "Kampus"), size = n, replace = TRUE)
# Langkah 2: status berprestasi, peluangnya bergantung pada jenis beasiswa
peluang_prestasi <- ifelse(jenis == "Nasional", 0.8, 0.2)
prestasi <- ifelse(runif(n) < peluang_prestasi, "Berprestasi", "Tidak Berprestasi")
# Langkah 3: lolos seleksi, peluangnya bergantung pada prestasi dan jenis beasiswa
logit <- -2.2 + 0.9 * (prestasi == "Berprestasi") + 2.3 * (jenis == "Kampus")
peluang_lolos <- 1 / (1 + exp(-logit))
hasil <- ifelse(runif(n) < peluang_lolos, "Lolos", "Tidak Lolos")
# Gabungkan menjadi data frame
data_sim <- data.frame(
Prestasi = factor(prestasi, levels = c("Berprestasi", "Tidak Berprestasi")),
Hasil = factor(hasil, levels = c("Lolos", "Tidak Lolos")),
Beasiswa = factor(jenis, levels = c("Nasional", "Kampus"))
)
head(data_sim)
## Prestasi Hasil Beasiswa
## 1 Tidak Berprestasi Tidak Lolos Nasional
## 2 Berprestasi Tidak Lolos Nasional
## 3 Tidak Berprestasi Tidak Lolos Nasional
## 4 Tidak Berprestasi Lolos Kampus
## 5 Tidak Berprestasi Tidak Lolos Nasional
## 6 Berprestasi Tidak Lolos Nasional
Fungsi table() mengubah data mentah menjadi tabel
kontingensi 3 arah
data <- table(data_sim)
ftable(data)
## Beasiswa Nasional Kampus
## Prestasi Hasil
## Berprestasi Lolos 169 141
## Tidak Lolos 624 53
## Tidak Berprestasi Lolos 23 433
## Tidak Lolos 177 380
Tabel parsial (satu tabel 2x2 untuk tiap jenis beasiswa):
nasional <- table(data_sim$Prestasi[data_sim$Beasiswa == "Nasional"],
data_sim$Hasil[data_sim$Beasiswa == "Nasional"])
kampus <- table(data_sim$Prestasi[data_sim$Beasiswa == "Kampus"],
data_sim$Hasil[data_sim$Beasiswa == "Kampus"])
nasional
##
## Lolos Tidak Lolos
## Berprestasi 169 624
## Tidak Berprestasi 23 177
kampus
##
## Lolos Tidak Lolos
## Berprestasi 141 53
## Tidak Berprestasi 433 380
Tabel marginal (jenis beasiswa diabaikan, kedua stratum dijumlahkan):
marginal <- margin.table(data, c(1, 2))
marginal
## Hasil
## Prestasi Lolos Tidak Lolos
## Berprestasi 310 677
## Tidak Berprestasi 456 557
Rumus OR untuk tabel 2x2 adalah \(\frac{n_{11} \times n_{22}}{n_{12} \times n_{21}}\).
or_marginal <- (marginal[1, 1] * marginal[2, 2]) / (marginal[1, 2] * marginal[2, 1])
or_nasional <- (nasional[1, 1] * nasional[2, 2]) / (nasional[1, 2] * nasional[2, 1])
or_kampus <- (kampus[1, 1] * kampus[2, 2]) / (kampus[1, 2] * kampus[2, 1])
hasil_or <- c("OR marginal" = or_marginal,
"OR Nasional" = or_nasional,
"OR Kampus" = or_kampus)
round(hasil_or, 3)
## OR marginal OR Nasional OR Kampus
## 0.559 2.084 2.335
Paradoks Simpson terjadi bila arah OR marginal berlawanan dengan arah OR di setiap stratum.
if (or_marginal < 1 & or_nasional > 1 & or_kampus > 1) {
cat("Paradoks Simpson TERJADI: OR marginal < 1, tetapi OR di kedua stratum > 1\n")
} else if (or_marginal > 1 & or_nasional < 1 & or_kampus < 1) {
cat("Paradoks Simpson TERJADI: OR marginal > 1, tetapi OR di kedua stratum < 1\n")
} else {
cat("Paradoks Simpson TIDAK terjadi\n")
}
## Paradoks Simpson TERJADI: OR marginal < 1, tetapi OR di kedua stratum > 1
Penyebabnya terlihat dari sebaran mahasiswa berprestasi dan peluang lolos pada tiap jenis beasiswa:
# persentase mahasiswa berprestasi di tiap jenis beasiswa
round(100 * c(Nasional = sum(nasional["Berprestasi", ]) / sum(nasional),
Kampus = sum(kampus["Berprestasi", ]) / sum(kampus)), 1)
## Nasional Kampus
## 79.9 19.3
# persentase pendaftar yang lolos di tiap jenis beasiswa
round(100 * c(Nasional = sum(nasional[, "Lolos"]) / sum(nasional),
Kampus = sum(kampus[, "Lolos"]) / sum(kampus)), 1)
## Nasional Kampus
## 19.3 57.0
H0: OR Nasional = OR Kampus (asosiasi homogen)
H1: OR berbeda antar stratum (ada interaksi tiga arah)
bd <- BreslowDayTest(data)
bd
##
## Breslow-Day test on Homogeneity of Odds Ratios
##
## data: data
## X-squared = 0.14748, df = 1, p-value = 0.701
H0: semua OR bersyarat sama dengan 1 (status berprestasi dan
kelolosan independen setelah jenis beasiswa dikontrol)
H1: ada asosiasi bersyarat
cmh <- mantelhaen.test(data, correct = FALSE)
cmh
##
## Mantel-Haenszel chi-squared test without continuity correction
##
## data: data
## Mantel-Haenszel X-squared = 33.524, df = 1, p-value = 7.039e-09
## alternative hypothesis: true common odds ratio is not equal to 1
## 95 percent confidence interval:
## 1.694596 2.954407
## sample estimates:
## common odds ratio
## 2.237527
Jika semua pendaftar digabung tanpa memperhatikan jenis beasiswa, mahasiswa berprestasi tampak lebih sulit lolos. Hanya 31.4% dari mereka yang lolos, sedangkan pada mahasiswa tidak berprestasi sebesar 45%. Hal ini tercermin pada OR marginal sebesar 0.559. OR (odds ratio) membandingkan kecenderungan lolos dua kelompok: nilai di atas 1 berarti kelompok pertama (berprestasi) lebih unggul, sedangkan nilai di bawah 1 berarti kelompok pertama tertinggal. Dengan nilai di bawah 1, data gabungan seolah-olah menyatakan bahwa prestasi justru merugikan.
Gambaran berubah setelah pendaftar dipisah menurut jenis beasiswa. Pada beasiswa nasional, 21.3% mahasiswa berprestasi lolos, dibandingkan 11.5% pada mahasiswa tidak berprestasi (OR = 2.084). Pada beasiswa kampus, angkanya 72.7% berbanding 53.3% (OR = 2.335). Kedua OR berada di atas 1, jadi di dalam setiap jenis beasiswa mahasiswa berprestasi lebih unggul. Hasil yang berbalik arah antara data gabungan dan data per kelompok ini disebut Paradoks Simpson.
Penyebabnya adalah jenis beasiswa memengaruhi dua hal sekaligus. Pertama, mahasiswa berprestasi menumpuk di beasiswa nasional: 79.9% pendaftar beasiswa nasional adalah mahasiswa berprestasi, sedangkan di beasiswa kampus hanya 19.3%. Kedua, beasiswa nasional jauh lebih sulit ditembus: hanya 19.3% pendaftarnya yang lolos, dibandingkan 57% pada beasiswa kampus. Akibatnya, sebagian besar mahasiswa berprestasi bersaing di beasiswa yang paling ketat sehingga angka kelolosan gabungan mereka tertarik turun. Sebaliknya, mahasiswa tidak berprestasi banyak mendaftar beasiswa yang lebih mudah sehingga angka gabungannya tampak lebih baik.
Uji Breslow-Day memeriksa apakah besarnya asosiasi (OR) antara prestasi dan kelolosan sama di beasiswa nasional dan beasiswa kampus. Hasilnya, statistik uji sebesar 0.147 dengan derajat bebas 1 dan p-value 0.701. Karena p-value lebih besar dari 0,05, tidak cukup bukti bahwa OR berbeda antar jenis beasiswa (OR Nasional = 2.08 dan OR Kampus = 2.33). Asumsi OR homogen dapat diterima, sehingga kedua OR boleh diringkas menjadi satu OR gabungan Mantel-Haenszel.
Uji Cochran-Mantel-Haenszel (CMH) memeriksa apakah hubungan antara prestasi dan kelolosan masih ada setelah pengaruh jenis beasiswa dikesampingkan. Hasilnya, statistik uji sebesar 33.524 dengan p-value <0.001. Karena p-value lebih kecil dari 0,05, hubungan tersebut nyata dan tidak terjadi hanya karena kebetulan. OR gabungan Mantel-Haenszel sebesar 2.238 (CI 95%: 1.695 sampai 2.954). Artinya, pada jenis beasiswa yang sama, odds lolos mahasiswa berprestasi sekitar 2.24 kali lipat odds mahasiswa tidak berprestasi. Selang kepercayaan tersebut tidak memuat angka 1, sejalan dengan hasil uji.
Kesimpulan: Pada data gabungan, OR marginal sebesar 0.559 membuat mahasiswa berprestasi tampak lebih sulit lolos. Setelah pendaftar dipisah menurut jenis beasiswa, OR Nasional (2.084) dan OR Kampus (2.335) sama-sama di atas 1, sehingga terjadi Paradoks Simpson. Penyebabnya, jenis beasiswa bertindak sebagai variabel pengganggu: mahasiswa berprestasi menumpuk di beasiswa nasional yang tingkat kelolosannya rendah. Uji Breslow-Day tidak menolak homogenitas OR (p-value = 0.701), dan uji CMH menunjukkan hubungan tetap nyata setelah jenis beasiswa dikontrol (OR Mantel-Haenszel = 2.24, CI 95%: 1.69 sampai 2.95). Jadi, pada jenis beasiswa yang sama, odds lolos mahasiswa berprestasi sekitar 2.24 kali lipat odds mahasiswa tidak berprestasi. Hubungan prestasi dan kelolosan sebaiknya dinilai dari OR bersyarat ini, bukan dari data gabungan.