Studi Kasus

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

1. Menyusun Tabel Kontingensi 3 Arah

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

2. OR Marginal dan OR Bersyarat

Tabel dan OR Marginal (mengabaikan jalur masuk)

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 Tiap Stratum (Bersyarat)

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

Estimator Mantel-Haenszel (OR Gabungan / Adjusted)

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

3. Pemeriksaan Paradoks Simpson

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"))

4. Uji Breslow-Day dan CMH dengan R

Uji Breslow-Day (Homogenitas OR antar Stratum)

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

Uji Cochran-Mantel-Haenszel (Independensi Bersyarat)

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 ]

5. Interpretasi dan Kesimpulan

Interpretasi

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.

Kesimpulan

Dari analisis ini dapat disimpulkan bahwa:

  1. Analisis marginal saja bisa memberi kesimpulan yang salah, karena kelas online terlihat merugikan (OR = 0,753).
  2. Setelah dikontrol dengan jalur masuk, kelas online justru berhubungan dengan peluang lulus yang lebih tinggi di kedua jalur, dan Paradoks Simpson terbukti terjadi.
  3. Hubungan tersebut homogen di kedua jalur (Breslow-Day tidak signifikan) dan signifikan secara bersyarat (CMH signifikan), dengan OR gabungan sebesar 1,51.
  4. Sebaiknya kampus tidak menilai efektivitas kelas online hanya dari angka kelulusan keseluruhan, tetapi juga memperhatikan jalur masuk mahasiswa.

Data yang dipakai adalah data simulasi dan hasilnya hanya menunjukkan hubungan, bukan sebab-akibat.