1 Pendahuluan

Analisis data kategori digunakan untuk mempelajari hubungan antarvariabel yang dinyatakan dalam bentuk kategori, misalnya status merokok, kejadian penyakit, gender, atau identifikasi partai politik. Salah satu alat utama dalam analisis ini adalah tabel kontingensi, yaitu tabel yang menyajikan frekuensi gabungan dari dua variabel kategorik sehingga hubungan, pola proporsi, dan asosiasi antarkategori dapat ditelaah secara sistematis Agresti (2019).

Pada tugas ini dibahas dua kasus inferensi tabel kontingensi dua arah. Kasus pertama berfokus pada tabel kontingensi 2 x 2, sehingga memungkinkan estimasi proporsi, risk difference (RD), relative risk (RR), odds ratio (OR), serta perbandingan beberapa pengujian hipotesis. Kasus kedua membahas tabel 2 x 3, sehingga perhatian utama diarahkan pada uji independensi chi-square, frekuensi harapan, residual, dan partisi chi-square. Laporan ini disusun mengikuti format RPubs yang diminta pada instruksi tugas.

2 Data

2.1 Kasus 1: Hubungan Status Merokok Dan Kanker Paru

Data yang digunakan:

  • Smoker: 688 kanker, 650 kontrol
  • Non-Smoker: 21 kanker, 59 kontrol
kasus1 <- matrix(
  c(688, 650,
    21,  59),
  nrow = 2,
  byrow = TRUE,
  dimnames = list(
    "Status Merokok" = c("Smoker", "Non-Smoker"),
    "Status Penyakit" = c("Cancer", "Control")
  )
)

kasus1
##               Status Penyakit
## Status Merokok Cancer Control
##     Smoker        688     650
##     Non-Smoker     21      59
addmargins(kasus1)
##               Status Penyakit
## Status Merokok Cancer Control  Sum
##     Smoker        688     650 1338
##     Non-Smoker     21      59   80
##     Sum           709     709 1418

2.2 Kasus 2: Hubungan Gender Dan Identifikasi Partai Politik

Data yang digunakan:

  • Female: 495, 272, 590
  • Male: 330, 265, 498
kasus2 <- matrix(
  c(495, 272, 590,
    330, 265, 498),
  nrow = 2,
  byrow = TRUE,
  dimnames = list(
    Gender = c("Female", "Male"),
    Identifikasi = c("Democrat", "Republican", "Independent")
  )
)

kasus2
##         Identifikasi
## Gender   Democrat Republican Independent
##   Female      495        272         590
##   Male        330        265         498
addmargins(kasus2)
##         Identifikasi
## Gender   Democrat Republican Independent  Sum
##   Female      495        272         590 1357
##   Male        330        265         498 1093
##   Sum         825        537        1088 2450

3 Metode

Metode yang dipakai pada laporan ini dijelaskan singkat terlebih dahulu agar alur analisis mudah diikuti.

  1. Proporsi dan interval kepercayaan proporsi dipakai untuk melihat peluang kejadian pada masing-masing kelompok.
  2. Risk Difference (RD) mengukur selisih risiko antar dua kelompok.
  3. Relative Risk (RR) mengukur perbandingan risiko antar dua kelompok.
  4. Odds Ratio (OR) mengukur perbandingan odds antar dua kelompok.
  5. Uji dua proporsi menguji apakah dua proporsi populasi sama.
  6. Chi-square test menguji apakah dua variabel kategorik saling independen.
  7. Likelihood ratio test (G^2) adalah alternatif dari chi-square yang berbasis likelihood.
  8. Fisher exact test digunakan sebagai uji eksak pada tabel 2 x 2.
  9. Residual pada tabel 2 x 3 dipakai untuk melihat sel mana yang paling berkontribusi pada hubungan.
  10. Partisi chi-square membantu memecah sumber hubungan pada tabel yang lebih besar.

Hipotesis umum untuk uji independensi:

H0: tidak ada hubungan antara dua variabel.
H1: ada hubungan antara dua variabel.

4 Hasil

4.1 Kasus 1: Tabel Kontingensi 2 x 2

4.1.1 Tabel Kontingensi Yang Rapi

knitr::kable(addmargins(kasus1), caption = "Tabel Kontingensi Kasus 1")
Table 4.1: Tabel Kontingensi Kasus 1
Cancer Control Sum
Smoker 688 650 1338
Non-Smoker 21 59 80
Sum 709 709 1418

4.1.2 Perhitungan Proporsi Masing-Masing Kelompok

a <- kasus1[1, 1]
b <- kasus1[1, 2]
c <- kasus1[2, 1]
d <- kasus1[2, 2]

n1 <- a + b
n2 <- c + d

p_smoker <- a / n1
p_nonsmoker <- c / n2

proporsi_kasus1 <- data.frame(
  Kelompok = c("Smoker", "Non-Smoker"),
  Kasus = c(a, c),
  Total = c(n1, n2),
  Proporsi = c(p_smoker, p_nonsmoker)
)

proporsi_kasus1
##     Kelompok Kasus Total Proporsi
## 1     Smoker   688  1338   0.5142
## 2 Non-Smoker    21    80   0.2625

4.1.3 Interval Kepercayaan 95% Untuk Proporsi, RD, RR, Dan OR

ci_p1 <- prop_wilson(a, n1)
ci_p2 <- prop_wilson(c, n2)
ci_rd <- risk_difference_ci(a, b, c, d)
ci_rr <- risk_ratio_ci(a, b, c, d)
ci_or <- odds_ratio_ci(a, b, c, d)

ringkasan_ci <- data.frame(
  Parameter = c(
    "Proporsi Smoker",
    "Proporsi Non-Smoker",
    "Risk Difference",
    "Relative Risk",
    "Odds Ratio"
  ),
  Estimasi = c(
    p_smoker,
    p_nonsmoker,
    ci_rd["estimate"],
    ci_rr["estimate"],
    ci_or["estimate"]
  ),
  Lower95 = c(
    ci_p1["lower"],
    ci_p2["lower"],
    ci_rd["lower"],
    ci_rr["lower"],
    ci_or["lower"]
  ),
  Upper95 = c(
    ci_p1["upper"],
    ci_p2["upper"],
    ci_rd["upper"],
    ci_rr["upper"],
    ci_or["upper"]
  )
)

ringkasan_ci
##             Parameter Estimasi Lower95 Upper95
## 1     Proporsi Smoker   0.5142  0.4874  0.5409
## 2 Proporsi Non-Smoker   0.2625  0.1786  0.3682
## 3     Risk Difference   0.2517  0.1516  0.3518
## 4       Relative Risk   1.9589  1.3517  2.8387
## 5          Odds Ratio   2.9738  1.7867  4.9494

4.1.4 Uji Dua Proporsi

Uji ini digunakan untuk membandingkan proporsi kejadian kanker pada kelompok Smoker dan Non-Smoker.

uji_dua_proporsi <- prop.test(
  x = c(a, c),
  n = c(n1, n2),
  correct = FALSE
)

uji_dua_proporsi
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  c(a, c) out of c(n1, n2)
## X-squared = 19, df = 1, p-value = 1e-05
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  0.1516 0.3518
## sample estimates:
## prop 1 prop 2 
## 0.5142 0.2625

4.1.5 Chi-Square Test

Uji chi-square dipakai untuk menguji apakah status merokok dan status penyakit saling independen.

uji_chi1 <- chisq.test(kasus1, correct = FALSE)

uji_chi1
## 
##  Pearson's Chi-squared test
## 
## data:  kasus1
## X-squared = 19, df = 1, p-value = 1e-05
uji_chi1$expected
##               Status Penyakit
## Status Merokok Cancer Control
##     Smoker        669     669
##     Non-Smoker     40      40

4.1.6 Likelihood Ratio Test (G^2)

Uji ini menghitung statistik berbasis likelihood dan menjadi pembanding untuk uji chi-square Pearson.

uji_g2_1 <- g_test_2way(kasus1)

data.frame(
  Statistik = uji_g2_1$statistic,
  df = uji_g2_1$parameter,
  p_value = uji_g2_1$p.value
)
##   Statistik df   p_value
## 1     19.88  1 8.254e-06

4.1.7 Fisher Exact Test

Uji ini memberi pembanding eksak untuk tabel 2 x 2.

uji_fisher1 <- fisher.test(kasus1)
uji_fisher1
## 
##  Fisher's Exact Test for Count Data
## 
## data:  kasus1
## p-value = 1e-05
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##  1.756 5.211
## sample estimates:
## odds ratio 
##      2.972

4.1.8 Tabel Ringkasan Hasil Uji

ringkasan_uji_kasus1 <- data.frame(
  Uji = c(
    "Uji Dua Proporsi",
    "Chi-Square Pearson",
    "Likelihood Ratio (G^2)",
    "Fisher Exact Test"
  ),
  Hipotesis = c(
    "p_smoker = p_non_smoker",
    "Status merokok independen dengan status penyakit",
    "Status merokok independen dengan status penyakit",
    "Status merokok independen dengan status penyakit"
  ),
  Statistik_Uji = c(
    unname(uji_dua_proporsi$statistic),
    unname(uji_chi1$statistic),
    unname(uji_g2_1$statistic),
    unname(uji_fisher1$estimate)
  ),
  p_value = c(
    uji_dua_proporsi$p.value,
    uji_chi1$p.value,
    uji_g2_1$p.value,
    uji_fisher1$p.value
  ),
  Keputusan = ifelse(
    c(uji_dua_proporsi$p.value, uji_chi1$p.value, uji_g2_1$p.value, uji_fisher1$p.value) < 0.05,
    "Tolak H0",
    "Gagal Tolak H0"
  )
)

ringkasan_uji_kasus1
##                      Uji                                        Hipotesis
## 1       Uji Dua Proporsi                          p_smoker = p_non_smoker
## 2     Chi-Square Pearson Status merokok independen dengan status penyakit
## 3 Likelihood Ratio (G^2) Status merokok independen dengan status penyakit
## 4      Fisher Exact Test Status merokok independen dengan status penyakit
##   Statistik_Uji   p_value Keputusan
## 1        19.129 1.222e-05  Tolak H0
## 2        19.129 1.222e-05  Tolak H0
## 3        19.878 8.254e-06  Tolak H0
## 4         2.972 1.476e-05  Tolak H0

4.1.9 Visualisasi Kasus 1

barplot(
  t(prop.table(kasus1, margin = 1)),
  col = c("#c1121f", "#669bbc"),
  legend.text = TRUE,
  args.legend = list(x = "topright", bty = "n"),
  main = "Proporsi Cancer dan Control per Kelompok",
  ylab = "Proporsi"
)

4.2 Kasus 2: Tabel Kontingensi 2 x 3

4.2.1 Tabel Kontingensi

knitr::kable(addmargins(kasus2), caption = "Tabel Kontingensi Kasus 2")
Table 4.2: Tabel Kontingensi Kasus 2
Democrat Republican Independent Sum
Female 495 272 590 1357
Male 330 265 498 1093
Sum 825 537 1088 2450

4.2.2 Frekuensi Harapan

Frekuensi harapan menunjukkan nilai yang diharapkan jika Gender dan Identifikasi saling independen.

uji_chi2 <- chisq.test(kasus2, correct = FALSE)
uji_chi2$expected
##         Identifikasi
## Gender   Democrat Republican Independent
##   Female    456.9      297.4       602.6
##   Male      368.1      239.6       485.4

4.2.3 Uji Chi-Square

uji_chi2
## 
##  Pearson's Chi-squared test
## 
## data:  kasus2
## X-squared = 13, df = 2, p-value = 0.002

4.2.4 Residual Pearson Dan Standardized Residual

Residual dipakai untuk melihat kategori mana yang paling berpengaruh terhadap hubungan.

uji_chi2$residuals
##         Identifikasi
## Gender   Democrat Republican Independent
##   Female    1.780     -1.475     -0.5140
##   Male     -1.983      1.643      0.5728
uji_chi2$stdres
##         Identifikasi
## Gender   Democrat Republican Independent
##   Female    3.272     -2.499      -1.032
##   Male     -3.272      2.499       1.032

4.2.5 Partisi Chi-Square

Partisi dilakukan untuk:

  1. Democrat vs Republican
  2. (Democrat + Republican) vs Independent
partisi1 <- kasus2[, c("Democrat", "Republican")]
partisi2 <- cbind(
  `Democrat + Republican` = kasus2[, "Democrat"] + kasus2[, "Republican"],
  Independent = kasus2[, "Independent"]
)

uji_partisi1 <- chisq.test(partisi1, correct = FALSE)
uji_partisi2 <- chisq.test(partisi2, correct = FALSE)

ringkasan_partisi <- data.frame(
  Partisi = c(
    "Democrat vs Republican",
    "(Democrat + Republican) vs Independent"
  ),
  Statistik = c(
    unname(uji_partisi1$statistic),
    unname(uji_partisi2$statistic)
  ),
  df = c(
    unname(uji_partisi1$parameter),
    unname(uji_partisi2$parameter)
  ),
  p_value = c(
    uji_partisi1$p.value,
    uji_partisi2$p.value
  )
)

ringkasan_partisi
##                                  Partisi Statistik df   p_value
## 1                 Democrat vs Republican    11.555  1 0.0006758
## 2 (Democrat + Republican) vs Independent     1.065  1 0.3019790

4.2.6 Visualisasi Kasus 2

mosaicplot(
  kasus2,
  color = c("#9ad1d4", "#f4d35e", "#ee964b", "#f95738"),
  main = "Mosaic Plot Gender dan Identifikasi Partai Politik",
  xlab = "Gender",
  ylab = "Identifikasi"
)

5 Interpretasi

5.1 Interpretasi Kasus 1

  1. Proporsi kejadian kanker pada kelompok Smoker lebih tinggi dibanding Non-Smoker.
  2. Interval kepercayaan proporsi menunjukkan bahwa kelompok Smoker memang memiliki peluang kejadian yang lebih besar.
  3. Nilai RD yang positif menunjukkan ada selisih risiko yang mengarah pada kelompok Smoker.
  4. Nilai RR yang lebih besar dari 1 berarti risiko kanker pada Smoker lebih tinggi daripada Non-Smoker.
  5. Nilai OR yang lebih besar dari 1 berarti odds kanker pada Smoker juga lebih tinggi.
  6. Uji dua proporsi, chi-square, G^2, dan Fisher semuanya membandingkan dua kelompok dari sudut yang sedikit berbeda, tetapi kalau p-value semuanya kecil maka kesimpulannya tetap sama: ada hubungan yang signifikan.
  7. Secara substantif, data ini mendukung bahwa kebiasaan merokok berhubungan dengan peningkatan kejadian kanker paru.

5.2 Perbandingan Antar Uji Kasus 1

  1. Hipotesis: semua uji pada dasarnya memeriksa apakah dua kelompok berbeda atau apakah dua variabel independen.
  2. Statistik uji: uji dua proporsi dan chi-square berbasis pendekatan asimtotik, G^2 berbasis likelihood, sedangkan Fisher berbasis probabilitas eksak.
  3. p-value: bila seluruhnya di bawah 0.05, maka keputusan konsisten untuk menolak H0.
  4. Keputusan: hasil yang konsisten memperkuat validitas kesimpulan.
  5. Interpretasi substantif: bukan hanya ada hubungan secara statistik, tetapi arah hubungan juga jelas, yaitu kelompok perokok lebih berisiko terkena kanker paru.

5.3 Interpretasi Kasus 2

  1. Uji chi-square pada tabel 2 x 3 menunjukkan apakah Gender dan Identifikasi Partai Politik saling berhubungan.
  2. Frekuensi harapan menjadi patokan untuk melihat sel mana yang observasinya terlalu tinggi atau terlalu rendah.
  3. Residual Pearson atau standardized residual menunjukkan kontribusi tiap sel.
  4. Kategori dengan nilai residual absolut paling besar adalah kategori yang paling berpengaruh.
  5. Dari data ini, kategori Democrat biasanya memberi kontribusi paling kuat, terutama pada perbedaan antara Female dan Male.
  6. Partisi chi-square membantu melihat apakah hubungan utama lebih banyak berasal dari perbandingan Democrat vs Republican atau dari Independent versus gabungan dua kategori lain.

6 Kesimpulan

Untuk Kasus 1, seluruh hasil menunjukkan bahwa terdapat hubungan yang signifikan antara status merokok dan kejadian kanker paru. Kelompok Smoker memiliki proporsi kejadian yang lebih tinggi, serta nilai RD, RR, dan OR yang menunjukkan risiko lebih besar dibanding kelompok Non-Smoker.

Untuk Kasus 2, terdapat indikasi hubungan antara Gender dan Identifikasi Partai Politik. Hasil residual dan partisi chi-square membantu menunjukkan kategori mana yang paling banyak menyumbang terhadap hubungan tersebut.

Referensi

Agresti, Alan. 2019. An Introduction to Categorical Data Analysis. Wiley.