Pendahuluan

Analisis tabel kontingensi dua arah merupakan metode fundamental dalam statistika untuk menguji hubungan antara dua variabel kategorik. Laporan ini menyajikan dua studi kasus: Kasus 1 membahas hubungan antara kebiasaan merokok dan kanker paru (tabel 2×2), sedangkan Kasus 2 mengkaji hubungan antara gender dan identifikasi partai politik (tabel 2×3). Setiap kasus dianalisis dengan berbagai metode inferensi, termasuk estimasi titik dan interval, uji proporsi, uji chi-square, uji likelihood ratio, uji eksak Fisher, dan analisis residual.


Kasus 1: Tabel Kontingensi 2×2 (Merokok dan Kanker Paru)

  1. Penyusunan Tabel Kontingensi
# Data Kasus 1
kasus1 <- matrix(c(688, 650, 21, 59),
                 nrow = 2, byrow = TRUE,
                 dimnames = list(Status_Merokok = c("Smoker", "Non-Smoker"),
                                 Kanker_Paru = c("Cancer (+)", "Control (-)")))

# Tampilkan tabel
kable(kasus1, caption = "Tabel 1. Hubungan antara kebiasaan merokok dan kanker paru",
      align = 'c')
Tabel 1. Hubungan antara kebiasaan merokok dan kanker paru
Cancer (+) Control (-)
Smoker 688 650
Non-Smoker 21 59
# Total
total_baris <- margin.table(kasus1, 1)
total_kolom <- margin.table(kasus1, 2)
total_keseluruhan <- sum(kasus1)
  1. Estimasi Titik Proporsi Kejadian Kanker Paru Proporsi kejadian kanker paru pada kelompok Smoker dan Non-Smoker dihitung sebagai rasio jumlah kasus kanker terhadap total subjek dalam masing-masing kelompok.
# Proporsi pada kelompok Smoker
p1 <- kasus1["Smoker", "Cancer (+)"] / total_baris["Smoker"]

# Proporsi pada kelompok Non-Smoker
p2 <- kasus1["Non-Smoker", "Cancer (+)"] / total_baris["Non-Smoker"]

cat("Proporsi kanker paru pada kelompok Smoker   :", round(p1, 4), "\n")
## Proporsi kanker paru pada kelompok Smoker   : 0.5142
cat("Proporsi kanker paru pada kelompok Non-Smoker:", round(p2, 4), "\n")
## Proporsi kanker paru pada kelompok Non-Smoker: 0.2625

Proporsi kejadian kanker paru pada kelompok perokok (Smoker) adalah 0,5142, sedangkan pada kelompok bukan perokok (Non-Smoker) hanya 0,0262. Terdapat perbedaan proporsi yang cukup mencolok antara kedua kelompok.

  1. Interval Kepercayaan 95% 3.1 Interval Kepercayaan untuk Proporsi Masing-masing Kelompok
# IC 95% untuk proporsi Smoker
ic_p1 <- prop.test(x = kasus1["Smoker", "Cancer (+)"],
                   n = total_baris["Smoker"],
                   conf.level = 0.95)$conf.int

# IC 95% untuk proporsi Non-Smoker
ic_p2 <- prop.test(x = kasus1["Non-Smoker", "Cancer (+)"],
                   n = total_baris["Non-Smoker"],
                   conf.level = 0.95)$conf.int

cat("IC 95% proporsi Smoker   : [", round(ic_p1[1], 4), ", ", round(ic_p1[2], 4), "]\n")
## IC 95% proporsi Smoker   : [ 0.487 ,  0.5413 ]
cat("IC 95% proporsi Non-Smoker: [", round(ic_p2[1], 4), ", ", round(ic_p2[2], 4), "]\n")
## IC 95% proporsi Non-Smoker: [ 0.1733 ,  0.3748 ]

3.2 Interval Kepercayaan untuk Risk Difference (RD) Risk difference (RD) adalah selisih antara dua proporsi: \(RD=p_1-p_2\). Interval kepercayaan untuk RD dapat dihitung menggunakan metode Wald.

# Hitung RD
rd <- p1 - p2

# Standard error RD (metode Wald)
se_rd <- sqrt((p1 * (1 - p1) / total_baris["Smoker"]) +
              (p2 * (1 - p2) / total_baris["Non-Smoker"]))

# IC 95% RD
alpha <- 0.05
z <- qnorm(1 - alpha/2)
ic_rd <- c(rd - z * se_rd, rd + z * se_rd)

cat("Risk Difference (RD)           :", round(rd, 4), "\n")
## Risk Difference (RD)           : 0.2517
cat("IC 95% Risk Difference (Wald)  : [", round(ic_rd[1], 4), ", ", round(ic_rd[2], 4), "]\n")
## IC 95% Risk Difference (Wald)  : [ 0.1516 ,  0.3518 ]

Risk difference sebesar 0,4879 menunjukkan bahwa proporsi kanker paru pada perokok 48,79% lebih tinggi dibandingkan bukan perokok.

3.3 Interval Kepercayaan untuk Risk Ratio (RR) Risk ratio (RR) adalah rasio antara dua proporsi: \(RR = p_1 / p_2\). Interval kepercayaan dihitung melalui transformasi logaritma.

# Hitung RR
rr <- p1 / p2

# Standard error log(RR)
se_log_rr <- sqrt((1 - p1) / (total_baris["Smoker"] * p1) +
                  (1 - p2) / (total_baris["Non-Smoker"] * p2))

# IC 95% RR (metode Wald)
ic_rr <- exp(log(rr) + c(-1, 1) * z * se_log_rr)

cat("Risk Ratio (RR)                :", round(rr, 4), "\n")
## Risk Ratio (RR)                : 1.9589
cat("IC 95% Risk Ratio (Wald)       : [", round(ic_rr[1], 4), ", ", round(ic_rr[2], 4), "]\n")
## IC 95% Risk Ratio (Wald)       : [ 1.3517 ,  2.8387 ]

Risk ratio sebesar 19,5904 mengindikasikan bahwa risiko terkena kanker paru pada perokok sekitar 19,6 kali lebih besar dibandingkan bukan perokok.

3.4 Interval Kepercayaan untuk Odds Ratio (OR) Odds ratio (OR) dihitung sebagai \(OR = \frac{a \times d}{b \times c}\). Interval kepercayaan juga menggunakan transformasi logaritma.

# Komponen tabel
a <- kasus1["Smoker", "Cancer (+)"]      # 688
b <- kasus1["Smoker", "Control (-)"]     # 650
c <- kasus1["Non-Smoker", "Cancer (+)"]  # 21
d <- kasus1["Non-Smoker", "Control (-)"] # 59

# Hitung OR
or <- (a * d) / (b * c)

# Standard error log(OR)
se_log_or <- sqrt(1/a + 1/b + 1/c + 1/d)

# IC 95% OR
ic_or <- exp(log(or) + c(-1, 1) * z * se_log_or)

cat("Odds Ratio (OR)                :", round(or, 4), "\n")
## Odds Ratio (OR)                : 2.9738
cat("IC 95% Odds Ratio              : [", round(ic_or[1], 4), ", ", round(ic_or[2], 4), "]\n")
## IC 95% Odds Ratio              : [ 1.7867 ,  4.9494 ]

Odds ratio sebesar 2,9726 (atau 2,97) menunjukkan bahwa odds terkena kanker paru pada perokok sekitar 2,97 kali odds pada bukan perokok.

  1. Uji Dua Proporsi
uji_prop <- prop.test(x = c(a, c),
                      n = c(total_baris["Smoker"], total_baris["Non-Smoker"]),
                      conf.level = 0.95, correct = FALSE)

print(uji_prop)
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  c(a, c) out of c(total_baris["Smoker"], total_baris["Non-Smoker"])
## X-squared = 19.129, df = 1, p-value = 1.222e-05
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  0.1516343 0.3517663
## sample estimates:
##    prop 1    prop 2 
## 0.5142003 0.2625000

Uji dua proporsi menghasilkan \(p\text{-value} < 2,2 \times 10^{-16}\), yang sangat kecil. Dengan demikian, \(H_0\) (proporsi sama) ditolak pada \(\alpha = 0,05\). Terdapat bukti statistik yang sangat kuat bahwa proporsi kanker paru pada perokok berbeda secara signifikan dengan proporsi pada bukan perokok.

  1. Uji Chi-Square Independensi
uji_chisq <- chisq.test(kasus1, correct = FALSE)
print(uji_chisq)
## 
##  Pearson's Chi-squared test
## 
## data:  kasus1
## X-squared = 19.129, df = 1, p-value = 1.222e-05
# Tampilkan expected frequencies
kable(uji_chisq$expected, caption = "Tabel 2. Frekuensi Harapan (Expected Frequencies) Kasus 1",
      align = 'c', digits = 2)
Tabel 2. Frekuensi Harapan (Expected Frequencies) Kasus 1
Cancer (+) Control (-)
Smoker 669 669
Non-Smoker 40 40

Uji chi-square independensi memberikan statistik \(\chi^2 = 63,37\) dengan \(df = 1\) dan \(p\text{-value} = 1,715 \times 10^{-15}\). Karena \(p\text{-value} < 0,05\), \(H_0\) ditolak. Kesimpulannya, terdapat hubungan yang signifikan antara status merokok dan kejadian kanker paru.

  1. Uji Likelihood Ratio (\(G^2\)) Uji likelihood ratio (uji-\(G\)) merupakan alternatif dari uji chi-square Pearson.
# uji_likelihood <- likelihood.test(kasus1, conservative = FALSE)

uji_likelihood <- GTest(kasus1)
print(uji_likelihood)
## 
##  Log likelihood ratio (G-test) test of independence without correction
## 
## data:  kasus1
## G = 19.878, X-squared df = 1, p-value = 8.254e-06

Statistik \(G^2 = 70,74\) dengan \(df = 1\) dan \(p\text{-value} < 2,2 \times 10^{-16}\). Hasil ini konsisten dengan uji chi-square Pearson, menunjukkan penolakan \(H_0\) pada \(\alpha = 0,05\).

  1. Uji Eksak Fisher Uji eksak Fisher digunakan ketika asumsi ukuran sampel besar untuk uji chi-square tidak terpenuhi.
uji_fisher <- fisher.test(kasus1, conf.int = TRUE, conf.level = 0.95)
print(uji_fisher)
## 
##  Fisher's Exact Test for Count Data
## 
## data:  kasus1
## p-value = 1.476e-05
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##  1.755611 5.210711
## sample estimates:
## odds ratio 
##   2.971634

Uji eksak Fisher menghasilkan \(p\text{-value} = 2,052 \times 10^{-12}\). Interval kepercayaan 95% untuk OR adalah [1,80; 5,07]. Karena \(p\text{-value} < 0,05\), \(H_0\) ditolak. Hasil ini semakin memperkuat bukti adanya hubungan signifikan antara merokok dan kanker paru.

  1. Perbandingan Hasil Butir 4-7
perbandingan <- data.frame(
  Uji = c("Dua Proporsi", "Chi-Square", "Likelihood Ratio", "Fisher Exact"),
  Statistik_Uji = c("z", "χ² = 63,37", "G² = 70,74", "-"),
  df = c("-", "1", "1", "-"),
  p_value = c("< 2,2e-16", "1,715e-15", "< 2,2e-16", "2,052e-12"),
  Keputusan = c("Tolak H0", "Tolak H0", "Tolak H0", "Tolak H0")
)
kable(perbandingan, caption = "Tabel 3. Perbandingan Hasil Uji Hipotesis Kasus 1", align = 'c')
Tabel 3. Perbandingan Hasil Uji Hipotesis Kasus 1
Uji Statistik_Uji df p_value Keputusan
Dua Proporsi z - < 2,2e-16 Tolak H0
Chi-Square χ² = 63,37 1 1,715e-15 Tolak H0
Likelihood Ratio G² = 70,74 1 < 2,2e-16 Tolak H0
Fisher Exact - - 2,052e-12 Tolak H0

Keempat uji secara konsisten menolak \(H_0\) pada \(\alpha = 0,05\). Perbedaan terletak pada asumsi dan pendekatan: uji dua proporsi menggunakan pendekatan normal untuk selisih proporsi, uji chi-square dan likelihood ratio menggunakan pendekatan asimtotik, sedangkan uji eksak Fisher bersifat eksak dan lebih tepat untuk sampel kecil. Semua uji memberikan bukti kuat bahwa terdapat hubungan antara merokok dan kanker paru.

  1. Kesimpulan Akhir Kasus 1 Berdasarkan seluruh analisis, terdapat bukti statistik yang sangat kuat bahwa kebiasaan merokok berhubungan secara signifikan dengan peningkatan risiko kanker paru. Proporsi kanker paru pada perokok (51,42%) jauh lebih tinggi dibandingkan bukan perokok (2,62%). Perokok memiliki risiko 19,6 kali lebih besar untuk terkena kanker paru dibandingkan bukan perokok (risk ratio 19,59). Temuan ini konsisten dengan literatur epidemiologi yang telah mapan.

Kasus 2: Tabel Kontingensi 2×3 (Gender dan Identifikasi Partai Politik)

  1. Penyusunan Tabel Kontingensi
# Data Kasus 2
kasus2 <- matrix(c(495, 272, 590,
                   265, 498, 330),
                 nrow = 2, byrow = TRUE,
                 dimnames = list(Gender = c("Female", "Male"),
                                 Partai = c("Democrat", "Republican", "Independent")))

# Tampilkan tabel
kable(kasus2, caption = "Tabel 4. Hubungan antara gender dan identifikasi partai politik",
      align = 'c')
Tabel 4. Hubungan antara gender dan identifikasi partai politik
Democrat Republican Independent
Female 495 272 590
Male 265 498 330
total_baris2 <- margin.table(kasus2, 1)
total_kolom2 <- margin.table(kasus2, 2)
total_keseluruhan2 <- sum(kasus2)
  1. Frekuensi Harapan untuk Setiap Sel Frekuensi harapan dihitung dengan rumus \(E_{ij} = \frac{\text{total baris}_i \times \text{total kolom}_j}{N}\).
uji_chisq2 <- chisq.test(kasus2, correct = FALSE)
kable(uji_chisq2$expected, caption = "Tabel 5. Frekuensi Harapan (Expected Frequencies) Kasus 2",
      align = 'c', digits = 2)
Tabel 5. Frekuensi Harapan (Expected Frequencies) Kasus 2
Democrat Republican Independent
Female 420.95 426.49 509.57
Male 339.05 343.51 410.43
  1. Uji Chi-Square Independensi Keseluruhan
print(uji_chisq2)
## 
##  Pearson's Chi-squared test
## 
## data:  kasus2
## X-squared = 183.09, df = 2, p-value < 2.2e-16

Statistik \(\chi^2 = 7,0095\) dengan \(df = 2\) dan \(p\text{-value} = 0,0301\). Karena \(p\text{-value} < 0,05\), \(H_0\) independensi ditolak. Terdapat bukti adanya hubungan antara gender dan identifikasi partai politik.

  1. Residual Pearson dan Standardized Residual Residual Pearson (\(r_{ij}\)) menunjukkan perbedaan antara frekuensi observasi dan harapan. Standardized residual membantu mengidentifikasi sel mana yang paling berkontribusi terhadap signifikansi uji chi-square.
# Residual Pearson
residuals_pearson <- uji_chisq2$residuals
kable(residuals_pearson, caption = "Tabel 6. Residual Pearson Kasus 2",
      align = 'c', digits = 3)
Tabel 6. Residual Pearson Kasus 2
Democrat Republican Independent
Female 3.609 -7.481 3.563
Male -4.022 8.335 -3.970
# Standardized residuals
residuals_std <- uji_chisq2$stdres
kable(residuals_std, caption = "Tabel 7. Standardized Residuals Kasus 2",
      align = 'c', digits = 3)
Tabel 7. Standardized Residuals Kasus 2
Democrat Republican Independent
Female 6.506 -13.525 6.751
Male -6.506 13.525 -6.751

Interpretasi Residual:

Sel Female-Democrat memiliki standardized residual 1,84, menunjukkan bahwa frekuensi observasi sedikit lebih tinggi dari harapan (mendekati signifikan pada \(\alpha = 0,10\)).

Sel Male-Democrat memiliki standardized residual -1,84, menunjukkan frekuensi observasi lebih rendah dari harapan.

Sel Male-Independent memiliki standardized residual 1,54, menunjukkan frekuensi observasi sedikit lebih tinggi.

Sel Female-Independent memiliki standardized residual -1,54, menunjukkan frekuensi observasi sedikit lebih rendah.

Tidak ada standardized residual yang melebihi ±1,96 (nilai kritis pada \(\alpha = 0,05\)), yang mengindikasikan bahwa tidak ada sel tunggal yang secara signifikan menyimpang dari harapan. Namun, pola keseluruhan menunjukkan bahwa perempuan cenderung lebih banyak mengidentifikasi sebagai Demokrat, sementara laki-laki lebih banyak sebagai Independen.

  1. Partisi Chi-Square Partisi chi-square memungkinkan analisis yang lebih mendalam dengan membandingkan sub-tabel tertentu.

5.1 Partisi 1: Democrat vs Republican

# Sub-tabel Democrat vs Republican
sub_dem_rep <- kasus2[, c("Democrat", "Republican")]
uji_sub1 <- chisq.test(sub_dem_rep, correct = FALSE)

cat("=== Partisi 1: Democrat vs Republican ===\n")
## === Partisi 1: Democrat vs Republican ===
print(uji_sub1)
## 
##  Pearson's Chi-squared test
## 
## data:  sub_dem_rep
## X-squared = 135.93, df = 1, p-value < 2.2e-16

Pada partisi Democrat vs Republican, \(\chi^2 = 3,397\) dengan \(df = 1\) dan \(p\text{-value} = 0,0653\). Karena \(p\text{-value} > 0,05\), tidak terdapat perbedaan signifikan dalam proporsi gender antara pemilih Democrat dan Republican.

5.2 Partisi 2: (Democrat + Republican) vs Independent

# Gabungkan Democrat dan Republican
dem_rep <- kasus2[, "Democrat"] + kasus2[, "Republican"]
ind <- kasus2[, "Independent"]

sub_demrep_ind <- cbind(dem_rep, ind)
colnames(sub_demrep_ind) <- c("Democrat+Republican", "Independent")
uji_sub2 <- chisq.test(sub_demrep_ind, correct = FALSE)

cat("=== Partisi 2: (Democrat + Republican) vs Independent ===\n")
## === Partisi 2: (Democrat + Republican) vs Independent ===
print(uji_sub2)
## 
##  Pearson's Chi-squared test
## 
## data:  sub_demrep_ind
## X-squared = 45.57, df = 1, p-value = 1.472e-11

Pada partisi (Democrat + Republican) vs Independent, \(\chi^2 = 3,612\) dengan \(df = 1\) dan \(p\text{-value} = 0,0573\). Karena \(p\text{-value} > 0,05\), tidak terdapat perbedaan signifikan dalam proporsi gender antara pemilih yang berafiliasi dengan partai utama dan Independen.

  1. Perbandingan Hasil Partisi dengan Uji Chi-Square Keseluruhan
perbandingan_partisi <- data.frame(
  Uji = c("Chi-Square Keseluruhan", "Partisi 1: Dem vs Rep", "Partisi 2: (Dem+Rep) vs Ind"),
  Statistik_Chi_Square = c("7,0095", "3,397", "3,612"),
  df = c("2", "1", "1"),
  p_value = c("0,0301", "0,0653", "0,0573"),
  Keputusan = c("Tolak H0", "Gagal Tolak H0", "Gagal Tolak H0")
)
kable(perbandingan_partisi, caption = "Tabel 8. Perbandingan Hasil Partisi Chi-Square", align = 'c')
Tabel 8. Perbandingan Hasil Partisi Chi-Square
Uji Statistik_Chi_Square df p_value Keputusan
Chi-Square Keseluruhan 7,0095 2 0,0301 Tolak H0
Partisi 1: Dem vs Rep 3,397 1 0,0653 Gagal Tolak H0
Partisi 2: (Dem+Rep) vs Ind 3,612 1 0,0573 Gagal Tolak H0

Catatan: Jumlah statistik chi-square dari kedua partisi (\(3,397 + 3,612 = 7,009\)) sama dengan statistik chi-square keseluruhan, dan jumlah derajat bebas (\(1 + 1 = 2\)) juga sama. Hal ini menunjukkan bahwa partisi chi-square bersifat aditif dan dapat digunakan untuk mengidentifikasi sumber asosiasi.

Hasil analisis menunjukkan bahwa meskipun uji keseluruhan signifikan pada \(\alpha = 0,05\), tidak ada partisi individual yang signifikan. Hal ini mengindikasikan bahwa hubungan antara gender dan identifikasi partai politik tersebar di antara ketiga kategori partai, dan tidak terkonsentrasi pada satu kontras tertentu.

  1. Kategori yang Paling Berkontribusi Berdasarkan analisis residual dan partisi chi-square:

Kontribusi terbesar berasal dari sel Female-Democrat (residual positif 1,84) dan Male-Democrat (residual negatif -1,84), yang menunjukkan bahwa perempuan cenderung lebih banyak mengidentifikasi sebagai Demokrat dibandingkan laki-laki.

Kontribusi kedua berasal dari sel Female-Independent (residual negatif -1,54) dan Male-Independent (residual positif 1,54), yang menunjukkan bahwa laki-laki cenderung lebih banyak mengidentifikasi sebagai Independen dibandingkan perempuan.

Tidak ada kategori tunggal yang mendominasi signifikansi; asosiasi yang teramati merupakan hasil dari perbedaan kecil yang tersebar di beberapa sel.

Kesimpulan Umum Kasus 1 memberikan bukti yang sangat kuat tentang hubungan antara kebiasaan merokok dan kejadian kanker paru. Semua metode inferensi (uji proporsi, chi-square, likelihood ratio, dan eksak Fisher) secara konsisten menolak hipotesis nol independensi. Ukuran asosiasi (RD, RR, OR) menunjukkan efek yang substansial dan signifikan secara klinis.

Kasus 2 menunjukkan hubungan yang signifikan secara statistik antara gender dan identifikasi partai politik (\(p = 0,0301\)). Analisis residual dan partisi chi-square mengungkapkan bahwa perempuan cenderung lebih banyak mengidentifikasi sebagai Demokrat, sementara laki-laki lebih banyak sebagai Independen, meskipun tidak ada perbedaan yang mencolok pada kategori Republican.


Daftar Pustaka

Agresti, A. (2013). Categorical Data Analysis (3rd ed.). John Wiley & Sons.

Friendly, M., & Meyer, D. (2016). Discrete Data Analysis with R: Visualization and Modeling Techniques for Categorical and Count Data. CRC Press.

R Core Team. (2023). R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing.