Sebuah kampus ingin mengetahui apakah penggunaan kelas online berhubungan dengan kelulusan mahasiswa, dengan Jalur masuk (Reguler / Beasiswa) sebagai kovariat yang diduga memengaruhi pola hubungan tersebut.
Susun tabel kontingensi 3 arah dari data yang Anda kumpulkan/simulasikan
Hitung OR marginal dan OR tiap stratum (bersyarat)
Periksa apakah terjadi Paradoks Simpson
Lakukan uji Breslow-Day dan CMH dengan R
Tulis interpretasi & kesimpulan akhir
Data disusun sebagai array 3 dimensi: Kelas Online × Hasil × Jalur Masuk (bentuk 2 × 2 × 2).
dat <- array(c(150, 35, 70, 25, # stratum: Reguler
72, 190, 8, 30), # stratum: Beasiswa
dim = c(2, 2, 2),
dimnames = list(Online = c("Ya", "Tidak"),
Hasil = c("Lulus", "Tidak Lulus"),
Jalur = c("Reguler", "Beasiswa")))
dat
## , , Jalur = Reguler
##
## Hasil
## Online Lulus Tidak Lulus
## Ya 150 70
## Tidak 35 25
##
## , , Jalur = Beasiswa
##
## Hasil
## Online Lulus Tidak Lulus
## Ya 72 8
## Tidak 190 30
| Jalur Masuk | Kelas Online | Lulus | Tidak Lulus | Total |
|---|---|---|---|---|
| Reguler | Ya | 150 | 70 | 220 |
| Tidak | 35 | 25 | 60 | |
| Beasiswa | Ya | 72 | 8 | 80 |
| Tidak | 190 | 30 | 220 |
Tabel ini membagi mahasiswa ke 8 kelompok berdasarkan tiga hal sekaligus: jalur masuk, pakai kelas online atau tidak, dan lulus atau tidak. Di jalur Reguler ada 280 mahasiswa (220 pakai kelas online, 60 tidak). Di jalur Beasiswa ada 300 mahasiswa (80 pakai kelas online, 220 tidak). Jadi kebiasaan pakai kelas online ternyata beda jauh antar jalur.
Tabel marginal diperoleh dengan menjumlahkan kedua stratum jalur masuk.
tab_marg <- margin.table(dat, c(1, 2))
addmargins(tab_marg)
## Hasil
## Online Lulus Tidak Lulus Sum
## Ya 222 78 300
## Tidak 225 55 280
## Sum 447 133 580
# % lulus per kelompok kelas online
round(100 * prop.table(tab_marg, 1)[, "Lulus"], 1)
## Ya Tidak
## 74.0 80.4
# OR marginal = (n11 * n22) / (n12 * n21)
OR_marg <- (tab_marg["Ya", "Lulus"] * tab_marg["Tidak", "Tidak Lulus"]) /
(tab_marg["Ya", "Tidak Lulus"] * tab_marg["Tidak", "Lulus"])
OR_marg
## [1] 0.6957265
| Kelas Online | Lulus | Tidak Lulus | Total | % Lulus |
|---|---|---|---|---|
| Ya | 222 | 78 | 300 | 74.0% |
| Tidak | 225 | 55 | 280 | 80.4% |
\[OR_{marginal} = \frac{222 \times 55}{78 \times 225} = 0.696\]
Yang lulus ada 74,0% di kelompok pengguna kelas online, sedangkan di kelompok yang tidak pakai ada 80,4%. OR marginal-nya 0,696, kurang dari 1. Kalau berhenti di sini, kesimpulannya: pakai kelas online malah bikin lebih susah lulus.
Tiap tabel parsial berbentuk 2 × 2, sehingga rumus OR dapat langsung dipakai per stratum.
# % lulus per stratum
apply(dat, 3, function(t) round(100 * prop.table(t, 1)[, "Lulus"], 1))
## Jalur
## Online Reguler Beasiswa
## Ya 68.2 90.0
## Tidak 58.3 86.4
# OR tiap stratum
OR_strata <- apply(dat, 3, function(t) (t[1, 1] * t[2, 2]) / (t[1, 2] * t[2, 1]))
round(OR_strata, 3)
## Reguler Beasiswa
## 1.531 1.421
| Jalur | % Lulus (Online Ya) | % Lulus (Online Tidak) | OR |
|---|---|---|---|
| Reguler | 68.2% | 58.3% | 1.531 |
| Beasiswa | 90.0% | 86.4% | 1.421 |
\[OR_{Reguler} = \frac{150 \times 25}{70 \times 35} = 1.531 \qquad OR_{Beasiswa} = \frac{72 \times 30}{8 \times 190} = 1.421\]
Jalur Reguler: yang pakai kelas online lulus 68,2%, yang tidak pakai 58,3%. OR = 1,531, jadi kelas online membantu kelulusan.
Jalur Beasiswa: yang pakai kelas online lulus 90,0%, yang tidak pakai 86,4%. OR = 1,421, jadi lagi-lagi kelas online membantu kelulusan.
Jadi di kedua jalur, pengguna kelas online lebih mudah lulus. Ini kebalikan dari hasil marginal tadi.
arah <- data.frame(
Analisis = c("Marginal", names(OR_strata)),
OR = round(c(OR_marg, OR_strata), 3),
Arah = c(OR_marg, OR_strata) > 1
)
arah$Arah <- ifelse(arah$Arah, "Online lebih baik (OR > 1)", "Online lebih buruk (OR < 1)")
arah
simpson <- (all(OR_strata > 1) && OR_marg < 1) || (all(OR_strata < 1) && OR_marg > 1)
cat("Paradoks Simpson terjadi?", ifelse(simpson, "YA", "TIDAK"), "\n")
## Paradoks Simpson terjadi? YA
OR marginal (0.696) < 1, sedangkan OR di kedua stratum (1.531 dan 1.421) > 1. Arahnya berbalik, sehingga Paradoks Simpson terjadi.
Paradoks muncul apabila kovariat berhubungan dengan X dan dengan Y.
# (a) Jalur masuk vs kelas online: proporsi jalur di tiap kelompok online
round(100 * prop.table(margin.table(dat, c(1, 3)), 1), 1)
## Jalur
## Online Reguler Beasiswa
## Ya 73.3 26.7
## Tidak 21.4 78.6
# (b) Jalur masuk vs kelulusan: % lulus per jalur
round(100 * prop.table(margin.table(dat, c(3, 2)), 1), 1)
## Hasil
## Jalur Lulus Tidak Lulus
## Reguler 66.1 33.9
## Beasiswa 87.3 12.7
Jadi kelas online banyak dipakai oleh kelompok yang secara alami lebih sulit lulus (Reguler), sehingga angka kelulusan gabungan pengguna online “tertarik turun” meski di tiap jalur kelas online justru lebih baik. Jalur masuk berperan sebagai confounder.
\[\hat{\theta}_{MH} = \frac{\sum_k n_{11k}\,n_{22k}/n_{++k}}{\sum_k n_{12k}\,n_{21k}/n_{++k}}\]
hitung <- sapply(dimnames(dat)$Jalur, function(j) {
t <- dat[, , j]
n <- sum(t)
c(n = n, num = t[1, 1] * t[2, 2] / n, den = t[1, 2] * t[2, 1] / n)
})
round(hitung, 3)
## Reguler Beasiswa
## n 280.000 300.000
## num 13.393 7.200
## den 8.750 5.067
theta_MH <- sum(hitung["num", ]) / sum(hitung["den", ])
theta_MH
## [1] 1.490436
Reguler : n11=150, n22=25, n12=70, n21=35, n=280
num1 = 150*25/280 = 13.393
den1 = 70*35/280 = 8.750
Beasiswa: n11=72, n22=30, n12=8, n21=190, n=300
num2 = 72*30/300 = 7.200
den2 = 8*190/300 = 5.067
theta_MH = (13.393 + 7.200) / (8.750 + 5.067)
theta_MH = 20.593 / 13.817 = 1.490
Setelah mengontrol jalur masuk, odds lulus pengguna online adalah 1.49× lebih tinggi. Ini berlawanan arah dengan OR marginal (0.70), sehingga hasil marginal yang naif menyesatkan.
library(DescTools)
## Warning: package 'DescTools' was built under R version 4.5.3
bd <- BreslowDayTest(dat)
bd
##
## Breslow-Day test on Homogeneity of Odds Ratios
##
## data: dat
## X-squared = 0.020709, df = 1, p-value = 0.8856
P-value = 0,886, lebih besar dari 0,05, jadi \(H_0\) diterima. Artinya OR di jalur Reguler dan Beasiswa tidak berbeda secara berarti (asosiasi homogen). Jadi aman kalau keduanya dirangkum dengan satu OR gabungan.
cmh <- mantelhaen.test(dat, correct = FALSE)
cmh
##
## Mantel-Haenszel chi-squared test without continuity correction
##
## data: dat
## Mantel-Haenszel X-squared = 2.6824, df = 1, p-value = 0.1015
## alternative hypothesis: true common odds ratio is not equal to 1
## 95 percent confidence interval:
## 0.9224588 2.4081286
## sample estimates:
## common odds ratio
## 1.490436
P-value = 0,101, lebih besar dari 0,05, jadi \(H_0\) gagal ditolak pada \(\alpha\) = 0,05. Rentang kepercayaan 95% untuk OR gabungan (0,922 sampai 2,408) masih memuat angka 1. Jadi, belum cukup bukti secara statistik bahwa kelas online berhubungan dengan kelulusan. Tapi OR gabungannya (1,490) tetap menunjukkan tren ke arah kelas online membantu.
Walaupun uji CMH pada data ini belum signifikan, hasil analisisnya tetap menunjukkan hal yang penting. Kalau hanya melihat data gabungan, kelas online tampak merugikan kelulusan (74.0% vs 80.4%). Tetapi setelah mahasiswa dipisah per jalur masuk, kelas online justru cenderung membantu di kedua jalur. Penyebabnya, sebagian besar pengguna kelas online berasal dari jalur Reguler (73.3%), yang peluang lulusnya memang lebih rendah (66.1%) dibanding jalur Beasiswa (87.3%). Karena itu, jalur masuk perlu dikontrol dulu sebelum menyimpulkan hubungan antara kelas online dan kelulusan.