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.
Variabel yang dianalisis adalah sebagai berikut:
X (penjelas): penggunaan kelas online dengan kategori Ya dan
Tidak.
Y (respons): kelulusan dengan kategori Lulus dan Tidak Lulus.
Z (kovariat/stratum): jalur masuk dengan kategori Reguler dan
Beasiswa.
Tabel yang terbentuk adalah tabel kontingensi 2 × 2 × 2. Analisis mengikuti langkah pada materi, yaitu menyusun tabel kontingensi 3 arah, menghitung OR marginal dan OR bersyarat, memeriksa Paradoks Simpson, menghitung estimator Mantel-Haenszel, melakukan uji Breslow-Day dan CMH, lalu menarik kesimpulan.
Hipotesis
Breslow-Day: H0: OR bersyarat sama di semua stratum (asosiasi homogen).
CMH: H0: OR bersyarat sama dengan 1 di semua stratum (independensi bersyarat).
Taraf signifikansi 5% (alpha = 0,05).
Data disimulasikan (jumlah mahasiswa total 760). Skenarionya: mahasiswa jalur Reguler lebih banyak memakai kelas online (misalnya karena banyak yang bekerja sambil kuliah), sedangkan mahasiswa jalur Beasiswa lebih banyak kuliah tatap muka. Mahasiswa Beasiswa secara umum memang punya tingkat kelulusan lebih tinggi.
# Array 3 dimensi: Kelas Online x Kelulusan x Jalur Masuk
# Urutan isi: (Ya-Lulus, Tidak-Lulus, Ya-TidakLulus, Tidak-TidakLulus) per stratum
data <- array(c(200, 80, 100, 60, # stratum: Reguler
45, 230, 5, 40), # stratum: Beasiswa
dim = c(2, 2, 2),
dimnames = list(KelasOnline = c("Ya", "Tidak"),
Kelulusan = c("Lulus", "Tidak Lulus"),
Jalur = c("Reguler", "Beasiswa")))
data
## , , Jalur = Reguler
##
## Kelulusan
## KelasOnline Lulus Tidak Lulus
## Ya 200 100
## Tidak 80 60
##
## , , Jalur = Beasiswa
##
## Kelulusan
## KelasOnline Lulus Tidak Lulus
## Ya 45 5
## Tidak 230 40
Tabel parsial (per jalur masuk) beserta persentase lulus:
for (k in dimnames(data)$Jalur) {
tb <- data[, , k]
cat("\n=== Jalur", k, "===\n")
print(addmargins(tb))
cat("% Lulus:\n")
print(round(100 * tb[, "Lulus"] / rowSums(tb), 1))
}
##
## === Jalur Reguler ===
## Kelulusan
## KelasOnline Lulus Tidak Lulus Sum
## Ya 200 100 300
## Tidak 80 60 140
## Sum 280 160 440
## % Lulus:
## Ya Tidak
## 66.7 57.1
##
## === Jalur Beasiswa ===
## Kelulusan
## KelasOnline Lulus Tidak Lulus Sum
## Ya 45 5 50
## Tidak 230 40 270
## Sum 275 45 320
## % Lulus:
## Ya Tidak
## 90.0 85.2
marg <- margin.table(data, c(1, 2))
marg_tab <- cbind(marg,
Total = rowSums(marg),
`% Lulus` = round(100 * marg[, "Lulus"] / rowSums(marg), 1))
marg_tab
## Lulus Tidak Lulus Total % Lulus
## Ya 245 105 350 70.0
## Tidak 310 100 410 75.6
or_fun <- function(t) (t[1, 1] * t[2, 2]) / (t[1, 2] * t[2, 1])
OR_marg <- or_fun(marg)
cat("OR marginal =", round(OR_marg, 3), "\n")
## OR marginal = 0.753
# Uji chi-square independensi marginal
chisq.test(marg, correct = FALSE)
##
## Pearson's Chi-squared test
##
## data: marg
## X-squared = 3.0165, df = 1, p-value = 0.08242
OR_reg <- or_fun(data[, , "Reguler"])
OR_bea <- or_fun(data[, , "Beasiswa"])
hasil_or <- data.frame(
Jenis = c("Marginal", "Bersyarat: Reguler", "Bersyarat: Beasiswa"),
OR = round(c(OR_marg, OR_reg, OR_bea), 3)
)
hasil_or
## Jenis OR
## 1 Marginal 0.753
## 2 Bersyarat: Reguler 1.500
## 3 Bersyarat: Beasiswa 1.565
Perhitungan manual untuk tiap stratum:
num <- 0; den <- 0
for (k in 1:2) {
t <- data[, , k]; n <- sum(t)
num_k <- t[1, 1] * t[2, 2] / n
den_k <- t[1, 2] * t[2, 1] / n
cat(dimnames(data)$Jalur[k], ": n =", n,
"| num =", round(num_k, 3), "| den =", round(den_k, 3), "\n")
num <- num + num_k; den <- den + den_k
}
## Reguler : n = 440 | num = 27.273 | den = 18.182
## Beasiswa : n = 320 | num = 5.625 | den = 3.594
theta_MH <- num / den
cat("\ntheta_MH = ", round(num, 3), "/", round(den, 3), "=", round(theta_MH, 3), "\n")
##
## theta_MH = 32.898 / 21.776 = 1.511
Paradoks Simpson terjadi bila arah asosiasi marginal berlawanan dengan arah asosiasi bersyarat di setiap stratum.
persen_marg <- 100 * marg[, "Lulus"] / rowSums(marg)
ringkas <- data.frame(
Analisis = c("Marginal", "Reguler", "Beasiswa", "Gabungan MH"),
`Lulus Online (%)` = round(c(persen_marg["Ya"],
100 * data["Ya", "Lulus", "Reguler"] / sum(data["Ya", , "Reguler"]),
100 * data["Ya", "Lulus", "Beasiswa"] / sum(data["Ya", , "Beasiswa"]),
NA), 1),
`Lulus Tatap Muka (%)` = round(c(persen_marg["Tidak"],
100 * data["Tidak", "Lulus", "Reguler"] / sum(data["Tidak", , "Reguler"]),
100 * data["Tidak", "Lulus", "Beasiswa"] / sum(data["Tidak", , "Beasiswa"]),
NA), 1),
OR = round(c(OR_marg, OR_reg, OR_bea, theta_MH), 3),
check.names = FALSE
)
ringkas
## Analisis Lulus Online (%) Lulus Tatap Muka (%) OR
## 1 Marginal 70.0 75.6 0.753
## 2 Reguler 66.7 57.1 1.500
## 3 Beasiswa 90.0 85.2 1.565
## 4 Gabungan MH NA NA 1.511
paradoks <- (OR_marg < 1) & (OR_reg > 1) & (OR_bea > 1)
cat("\nParadoks Simpson terjadi? ", ifelse(paradoks, "YA", "TIDAK"), "\n")
##
## Paradoks Simpson terjadi? YA
Penyebab paradoks: proporsi pengguna kelas online tidak seimbang antar jalur masuk.
# Komposisi jalur masuk pada tiap kelompok kelas online
round(100 * prop.table(margin.table(data, c(1, 3)), 1), 1)
## Jalur
## KelasOnline Reguler Beasiswa
## Ya 85.7 14.3
## Tidak 34.1 65.9
pct <- function(t) 100 * t[, "Lulus"] / rowSums(t)
m <- rbind(Marginal = pct(marg),
Reguler = pct(data[, , "Reguler"]),
Beasiswa = pct(data[, , "Beasiswa"]))
barplot(t(m), beside = TRUE, ylim = c(0, 100),
col = c("steelblue", "tomato"),
ylab = "% Lulus", main = "Persentase Lulus: Marginal vs Bersyarat",
legend.text = c("Kelas Online: Ya", "Kelas Online: Tidak"),
args.legend = list(x = "topleft", bty = "n"))
H0: OR Reguler = OR Beasiswa (asosiasi homogen).
library(DescTools)
bd <- BreslowDayTest(data)
bd
##
## Breslow-Day test on Homogeneity of Odds Ratios
##
## data: data
## X-squared = 0.006142, df = 1, p-value = 0.9375
H0: OR bersyarat = 1 di semua stratum.
cmh <- mantelhaen.test(data, correct = FALSE)
cmh
##
## Mantel-Haenszel chi-squared test without continuity correction
##
## data: data
## Mantel-Haenszel X-squared = 4.539, df = 1, p-value = 0.03313
## alternative hypothesis: true common odds ratio is not equal to 1
## 95 percent confidence interval:
## 1.033114 2.209247
## sample estimates:
## common odds ratio
## 1.510763
data.frame(
Uji = c("Breslow-Day", "Cochran-Mantel-Haenszel"),
`X-squared` = round(c(unname(bd$statistic), unname(cmh$statistic)), 3),
df = c(unname(bd$parameter), unname(cmh$parameter)),
`p-value` = round(c(bd$p.value, cmh$p.value), 4),
check.names = FALSE
)
## Uji X-squared df p-value
## 1 Breslow-Day 0.006 1 0.9375
## 2 Cochran-Mantel-Haenszel 4.539 1 0.0331
cat("Common odds ratio (MH) =", round(cmh$estimate, 3), "\n")
## Common odds ratio (MH) = 1.511
cat("95% CI = [", round(cmh$conf.int[1], 3), ",", round(cmh$conf.int[2], 3), "]\n")
## 95% CI = [ 1.033 , 2.209 ]
Kalau dilihat secara keseluruhan tanpa memperhatikan jalur masuk, mahasiswa yang memakai kelas online lulus sebesar 70,0%, sedangkan yang tidak memakai kelas online lulus sebesar 75,6%. OR marginalnya 0,753, kurang dari 1, jadi sekilas kelas online terlihat kurang baik untuk kelulusan.
Tapi setelah dipisah berdasarkan jalur masuk, hasilnya berbeda. OR di jalur Reguler adalah 1,500 dan di jalur Beasiswa adalah 1,565. Keduanya lebih dari 1, artinya di kedua jalur masuk, mahasiswa yang memakai kelas online punya peluang lulus yang lebih tinggi. Arah hubungannya berlawanan dengan hasil marginal, jadi Paradoks Simpson terjadi pada data ini.
Hal ini terjadi karena pengguna kelas online sebagian besar berasal dari jalur Reguler, yang tingkat kelulusannya memang lebih rendah. Sebaliknya, mahasiswa yang kuliah tatap muka lebih banyak dari jalur Beasiswa, yang tingkat kelulusannya lebih tinggi. Akibatnya angka kelulusan gabungan untuk pengguna online jadi tertarik turun, padahal di tiap jalur mereka justru lebih baik. Jadi jalur masuk di sini berperan sebagai variabel pengganggu (confounder).
Pada uji Breslow-Day, nilai X-squared = 0,006 dengan p-value = 0,938. Karena p-value lebih besar dari 0,05, H0 diterima. Artinya OR di kedua jalur masuk tidak berbeda nyata (1,50 dan 1,57), sehingga asosiasinya bisa dianggap homogen dan OR gabungan Mantel-Haenszel boleh dipakai.
Pada uji CMH, nilai X-squared = 4,539 dengan p-value = 0,033. Karena p-value lebih kecil dari 0,05, H0 ditolak. Jadi setelah jalur masuk dikontrol, masih ada hubungan yang signifikan antara penggunaan kelas online dan kelulusan. OR gabungannya 1,511 dengan interval kepercayaan 95% dari 1,033 sampai 2,209. Artinya, setelah jalur masuk dikendalikan, odds lulus mahasiswa yang memakai kelas online sekitar 1,51 kali odds lulus yang tidak memakai.
Dari analisis ini dapat disimpulkan bahwa:
Data yang dipakai adalah data simulasi dan hasilnya hanya menunjukkan hubungan, bukan sebab-akibat.