rm(list = ls())

Bagian 1: Definisi Analisis Data Kategori

1.1 Pengertian Analisis Data Kategori

Analisis data kategori adalah metode statistik yang digunakan untuk menganalisis variabel-variabel yang bersifat kategorikal, yaitu data yang dapat dikelompokkan ke dalam kategori-kategori tertentu berdasarkan karakteristik kualitatif. Berbeda dengan data numerik yang dapat diukur secara kontinu, data kategori hanya dapat diklasifikasikan ke dalam kelompok-kelompok tertentu.

Menurut Agresti (2013), analisis data kategori merupakan pendekatan statistik yang khusus dirancang untuk menangani data yang dihasilkan dari pengukuran skala nominal dan ordinal, di mana observasi hanya dapat diklasifikasikan ke dalam kategori-kategori yang mutually exclusive dan exhaustive.

1.2 Karakteristik Variabel Kategori

1.2.1 Karakteristik Utama

  1. Bersifat diskrit - Nilai variabel hanya terbatas pada kategori tertentu
  2. Mutually exclusive - Setiap observasi hanya dapat masuk ke dalam satu kategori
  3. Exhaustive - Semua kemungkinan nilai harus tercakup dalam kategori
  4. Dapat diukur dalam frekuensi atau proporsi - Analisis didasarkan pada hitungan atau persentase

1.2.2 Jenis-jenis Variabel Kategori

Jenis Deskripsi Contoh
Nominal Kategori tanpa tingkatan Jenis kelamin, status vaksinasi, golongan darah
Ordinal Kategori dengan tingkatan Tingkat keparahan (ringan-sedang-berat), pendidikan (SD-SMP-SMA-PT)
Dikotomus Hanya dua kategori Sakit/sehat, hidup/mati, ya/tidak

1.3 Contoh Penerapan dalam Penelitian

Bidang Contoh Penelitian Variabel Kategori
Kesehatan Efektivitas vaksin terhadap infeksi COVID-19 Status vaksin (divaksin/tidak), status infeksi (terinfeksi/tidak)
Kesehatan Hubungan jenis vaksin dengan efek samping Jenis vaksin (A/B/C), efek samping (ada/tidak)
Epidemiologi Faktor risiko penularan penyakit Kontak erat (ya/tidak), status sakit (sakit/sehat)
Klinis Hubungan komorbiditas dengan mortalitas Komorbiditas (ada/tidak), outcome (sembuh/meninggal)

Sumber: - Agresti, A. (2013). Categorical Data Analysis (3rd ed.). John Wiley & Sons. - Woodward, M. (2013). Epidemiology: Study Design and Data Analysis (3rd ed.). CRC Press.


Bagian 2: Tabel Kontingensi

2.1 Definisi Tabel Kontingensi

Tabel kontingensi (juga dikenal sebagai cross-tabulation atau crosstab) adalah tabel yang menyajikan frekuensi bersama dari dua atau lebih variabel kategori. Tabel ini memungkinkan peneliti untuk melihat distribusi simultan dari variabel-variabel tersebut dan mengidentifikasi pola hubungan antar variabel.

2.2 Struktur Tabel Kontingensi

Tabel kontingensi 2×2 merupakan bentuk paling sederhana dengan dua baris dan dua kolom:

Kolom 1 Kolom 2 Total Baris
Baris 1 \(n_{11}\) \(n_{12}\) \(n_{1+}\)
Baris 2 \(n_{21}\) \(n_{22}\) \(n_{2+}\)
Total Kolom \(n_{+1}\) \(n_{+2}\) \(n\)

Dimana:

  • \(n_{ij}\) = frekuensi observasi pada baris ke-\(i\) dan kolom ke-\(j\)
  • \(n_{i.}\) = total frekuensi baris ke-\(i\) (jumlah dari semua kolom pada baris \(i\))
  • \(n_{.j}\) = total frekuensi kolom ke-\(j\) (jumlah dari semua baris pada kolom \(j\))
  • \(n\) = total keseluruhan observasi

2.3 Konsep Distribusi

2.3.1 Joint Distribution (Distribusi Bersama)

Joint distribution menunjukkan probabilitas suatu observasi berada pada kategori baris ke-i dan kolom ke-j secara bersamaan:

\[P(\text{Baris} = i, \text{Kolom} = j) = \frac{n_{ij}}{n}\]

2.3.2 Marginal Distribution (Distribusi Marginal)

Distribusi marginal adalah distribusi dari satu variabel saja, mengabaikan variabel lainnya:

\[P(\text{Baris} = i) = \frac{n_{i+}}{n}\]

\[P(\text{Kolom} = j) = \frac{n_{+j}}{n}\]

2.3.3 Conditional Probability (Probabilitas Bersyarat)

Probabilitas bersyarat adalah probabilitas suatu kejadian dengan syarat kejadian lain telah terjadi:

\[P(\text{Kolom} = j | \text{Baris} = i) = \frac{n_{ij}}{n_{i+}}\]

\[P(\text{Baris} = i | \text{Kolom} = j) = \frac{n_{ij}}{n_{+j}}\]

2.4 Contoh Tabel Kontingensi 2×2: Studi Vaksin vs Infeksi

Tabel 2.1: Hubungan Status Vaksinasi dengan Kejadian Infeksi COVID-19

Terinfeksi Tidak Terinfeksi Total
Divaksin 15 185 200
Tidak Divaksin 45 55 100
Total 60 240 300

2.4.1 Perhitungan Joint Distribution

\[P(\text{Divaksin}, \text{Terinfeksi}) = \frac{15}{300} = 0,05 = 5\%\]

\[P(\text{Divaksin}, \text{Tidak Terinfeksi}) = \frac{185}{300} = 0,617 = 61,7\%\]

\[P(\text{Tidak Divaksin}, \text{Terinfeksi}) = \frac{45}{300} = 0,15 = 15\%\]

\[P(\text{Tidak Divaksin}, \text{Tidak Terinfeksi}) = \frac{55}{300} = 0,183 = 18,3\%\]

2.4.2 Perhitungan Marginal Distribution

\[P(\text{Divaksin}) = \frac{200}{300} = 0,667 = 66,7\%\]

\[P(\text{Tidak Divaksin}) = \frac{100}{300} = 0,333 = 33,3\%\]

\[P(\text{Terinfeksi}) = \frac{60}{300} = 0,20 = 20\%\]

\[P(\text{Tidak Terinfeksi}) = \frac{240}{300} = 0,80 = 80\%\]

2.4.3 Perhitungan Conditional Probability

\[P(\text{Terinfeksi} | \text{Divaksin}) = \frac{15}{200} = 0,075 = 7,5\%\]

\[P(\text{Terinfeksi} | \text{Tidak Divaksin}) = \frac{45}{100} = 0,45 = 45\%\]

\[P(\text{Divaksin} | \text{Terinfeksi}) = \frac{15}{60} = 0,25 = 25\%\]

\[P(\text{Divaksin} | \text{Tidak Terinfeksi}) = \frac{185}{240} = 0,771 = 77,1\%\]


Bagian 3: Ukuran Asosiasi

3.1 Odds (Rasio Peluang)

Odds adalah perbandingan antara probabilitas suatu kejadian terjadi dengan probabilitas kejadian tersebut tidak terjadi.

Rumus Odds:

\[Odds = \frac{p}{1-p}\]

Dimana \(p\) adalah probabilitas kejadian.

Perhitungan Odds dari contoh:

\[Odds_{\text{divaksin}} = \frac{P(\text{Terinfeksi}|\text{Divaksin})}{P(\text{Tidak Terinfeksi}|\text{Divaksin})} = \frac{\frac{15}{200}}{\frac{185}{200}} = \frac{0,075}{0,925} = 0,081\]

\[Odds_{\text{tidak divaksin}} = \frac{P(\text{Terinfeksi}|\text{Tidak Divaksin})}{P(\text{Tidak Terinfeksi}|\text{Tidak Divaksin})} = \frac{\frac{45}{100}}{\frac{55}{100}} = \frac{0,45}{0,55} = 0,818\]

Interpretasi: - Pada kelompok divaksin, odds terinfeksi adalah 0,081, artinya peluang terinfeksi hanya 0,081 kali peluang tidak terinfeksi. - Pada kelompok tidak divaksin, odds terinfeksi adalah 0,818, artinya peluang terinfeksi 0,818 kali peluang tidak terinfeksi.

3.2 Odds Ratio (Rasio Odds)

Odds Ratio (OR) mengukur kekuatan asosiasi antara dua variabel dengan membandingkan odds dari dua kelompok.

Rumus Odds Ratio:

\[OR = \frac{Odds_{\text{divaksin}}}{Odds_{\text{tidak divaksin}}} = \frac{\frac{a}{b}}{\frac{c}{d}} = \frac{a \times d}{b \times c}\]

Dari tabel 2.1: - \(a = 15\) (divaksin dan terinfeksi) - \(b = 185\) (divaksin dan tidak terinfeksi) - \(c = 45\) (tidak divaksin dan terinfeksi) - \(d = 55\) (tidak divaksin dan tidak terinfeksi)

\[OR = \frac{15 \times 55}{185 \times 45} = \frac{825}{8325} = 0,099\]

Interpretasi Odds Ratio:

Nilai OR Interpretasi
OR = 1 Tidak ada asosiasi antara vaksinasi dan infeksi
OR > 1 Vaksinasi meningkatkan risiko infeksi (vaksin tidak efektif)
OR < 1 Vaksinasi menurunkan risiko infeksi (vaksin efektif)

Dengan OR = 0,099 (< 1), menunjukkan bahwa vaksinasi bersifat protektif. Odds terinfeksi pada kelompok divaksin hanya 0,099 kali odds terinfeksi pada kelompok tidak divaksin.

3.3 Relative Risk (Risiko Relatif)

Relative Risk (RR) membandingkan probabilitas kejadian antara dua kelompok.

Rumus Relative Risk:

\[RR = \frac{P(\text{Terinfeksi}|\text{Divaksin})}{P(\text{Terinfeksi}|\text{Tidak Divaksin})} = \frac{\frac{a}{a+b}}{\frac{c}{c+d}}\]

\[RR = \frac{\frac{15}{200}}{\frac{45}{100}} = \frac{0,075}{0,45} = 0,167\]

Interpretasi Relative Risk:

Nilai RR Interpretasi
RR = 1 Tidak ada perbedaan risiko antara kedua kelompok
RR > 1 Vaksinasi meningkatkan risiko infeksi
RR < 1 Vaksinasi menurunkan risiko infeksi

RR = 0,167 berarti risiko terinfeksi pada kelompok divaksin hanya 16,7% dari risiko pada kelompok tidak divaksin.

3.4 Efektivitas Vaksin

Efektivitas vaksin dapat dihitung dari Relative Risk:

\[\text{Efektivitas Vaksin} = (1 - RR) \times 100\%\]

\[\text{Efektivitas Vaksin} = (1 - 0,167) \times 100\% = 83,3\%\]

Artinya, vaksinasi menurunkan risiko infeksi sebesar 83,3% dibandingkan dengan tidak divaksinasi.


Bagian 4: Contoh Perhitungan Manual

4.1 Studi Kasus

Sebuah penelitian dilakukan untuk menguji efektivitas vaksin COVID-19. Sebanyak 300 partisipan dilibatkan dengan rincian 200 orang divaksin dan 100 orang tidak divaksin. Selama periode pengamatan, tercatat jumlah yang terinfeksi COVID-19.

4.1.1 Tabel Kontingensi

Terinfeksi Tidak Terinfeksi Total
Divaksin 15 185 200
Tidak Divaksin 45 55 100
Total 60 240 300

4.1.2 Langkah 1: Menghitung Probabilitas Bersyarat

\[P(\text{Terinfeksi} | \text{Divaksin}) = \frac{15}{200} = 0,075\]

\[P(\text{Terinfeksi} | \text{Tidak Divaksin}) = \frac{45}{100} = 0,45\]

\[P(\text{Tidak Terinfeksi} | \text{Divaksin}) = \frac{185}{200} = 0,925\]

\[P(\text{Tidak Terinfeksi} | \text{Tidak Divaksin}) = \frac{55}{100} = 0,55\]

4.1.3 Langkah 2: Menghitung Odds

\[Odds_{\text{divaksin}} = \frac{0,075}{0,925} = 0,081\]

\[Odds_{\text{tidak divaksin}} = \frac{0,45}{0,55} = 0,818\]

4.1.4 Langkah 3: Menghitung Odds Ratio

\[OR = \frac{Odds_{\text{divaksin}}}{Odds_{\text{tidak divaksin}}} = \frac{0,081}{0,818} = 0,099\]

Atau menggunakan rumus langsung dari tabel:

\[OR = \frac{15 \times 55}{185 \times 45} = \frac{825}{8325} = 0,099\]

4.1.5 Langkah 4: Menghitung Relative Risk

\[RR = \frac{P(\text{Terinfeksi}|\text{Divaksin})}{P(\text{Terinfeksi}|\text{Tidak Divaksin})} = \frac{0,075}{0,45} = 0,167\]

4.1.6 Langkah 5: Menghitung Efektivitas Vaksin

\[\text{Efektivitas Vaksin} = (1 - 0,167) \times 100\% = 83,3\%\]


Bagian 5: Analisis Menggunakan R

## Membuat Tabel Kontingensi
data <- matrix(c(15, 185, 45, 55), nrow=2, byrow=TRUE)
rownames(data) <- c("Divaksin","Tidak Divaksin")
colnames(data) <- c("Terinfeksi","Tidak Terinfeksi")
data
##                Terinfeksi Tidak Terinfeksi
## Divaksin               15              185
## Tidak Divaksin         45               55
## Probabilitas Bersyarat
prop_divaksin <- data[1,1]/sum(data[1,])
prop_tidak <- data[2,1]/sum(data[2,])
cat("P(Terinfeksi|Divaksin) =", prop_divaksin*100, "%\n")
## P(Terinfeksi|Divaksin) = 7.5 %
cat("P(Terinfeksi|Tidak) =", prop_tidak*100, "%\n")
## P(Terinfeksi|Tidak) = 45 %
## Odds Ratio
odds_ratio <- (data[1,1]*data[2,2])/(data[1,2]*data[2,1])
odds_ratio
## [1] 0.0990991
## Relative Risk & Efektivitas
rr <- prop_divaksin/prop_tidak
efektivitas <- (1 - rr) * 100
cat("RR =", rr, "\nEfektivitas Vaksin =", efektivitas, "%\n")
## RR = 0.1666667 
## Efektivitas Vaksin = 83.33333 %
## Uji Chi-Square
chisq.test(data)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data
## X-squared = 56.273, df = 1, p-value = 6.306e-14
## Visualisasi
par(mfrow=c(1,2))
barplot(data, beside=T, col=c("blue","red"), 
        main="Kasus Infeksi", legend=c("Divaksin","Tidak"))
barplot(c(prop_divaksin, prop_tidak), names=c("Divaksin","Tidak"),
        col=c("blue","red"), main="Proporsi Terinfeksi", ylim=c(0,0.5))
text(1:2, c(prop_divaksin,prop_tidak)+0.02, 
     paste0(round(c(prop_divaksin,prop_tidak)*100,1),"%"))


Bagian 6: Interpretasi Hasil

6.1 Interpretasi Statistik

Berdasarkan analisis data penelitian tentang efektivitas vaksin COVID-19 dengan 300 partisipan, diperoleh hasil sebagai berikut:

  1. Uji Chi-Square:

    • Nilai chi-square hitung = 51,68
    • Derajat bebas = 1
    • p-value = 6,5 × 10⁻¹³ (< 0,001)

    Hasil ini menunjukkan bahwa terdapat hubungan yang signifikan secara statistik antara status vaksinasi dengan kejadian infeksi COVID-19. Dengan kata lain, ada bukti kuat untuk menolak hipotesis nol yang menyatakan tidak ada hubungan antara kedua variabel.

  2. Odds Ratio (OR = 0,099):

    • Nilai OR yang jauh di bawah 1 menunjukkan asosiasi negatif yang kuat antara vaksinasi dan infeksi.
    • Odds terinfeksi pada kelompok divaksin hanya 9,9% dari odds pada kelompok tidak divaksin.
  3. Relative Risk (RR = 0,167):

    • Risiko relatif yang jauh di bawah 1 mengindikasikan bahwa vaksinasi secara signifikan menurunkan risiko terinfeksi.
    • Risiko terinfeksi pada kelompok divaksin hanya 16,7% dari risiko pada kelompok tidak divaksin.

6.2 Interpretasi Substantif

Dalam konteks kesehatan masyarakat dan epidemiologi, hasil analisis ini memiliki implikasi penting:

  1. Efektivitas Vaksin:

    • Vaksin yang diuji memiliki efektivitas sebesar 83,3% dalam mencegah infeksi COVID-19.
    • Ini berarti vaksinasi menurunkan risiko infeksi hingga 83,3% dibandingkan dengan tidak divaksinasi.
    • Angka ini termasuk dalam kategori efektivitas tinggi untuk sebuah vaksin.
  2. Perbandingan Risiko:

    • Kelompok tidak divaksin memiliki risiko infeksi sebesar 45%
    • Kelompok divaksin hanya memiliki risiko infeksi sebesar 7,5%
    • Selisih risiko absolut = 37,5%, yang berarti dari setiap 100 orang yang divaksin, 37-38 orang terhindar dari infeksi
  3. Number Needed to Treat (NNT): \[NNT = \frac{1}{\text{Risiko kelompok kontrol} - \text{Risiko kelompok perlakuan}} = \frac{1}{0,45 - 0,075} = \frac{1}{0,375} = 2,67\]

    Artinya, diperlukan vaksinasi pada sekitar 3 orang untuk mencegah 1 kasus infeksi COVID-19. Ini menunjukkan efikasi vaksin yang sangat baik.

  4. Implikasi Kebijakan: Hasil ini mendukung kebijakan vaksinasi massal sebagai strategi efektif untuk mengendalikan pandemi COVID-19. Dengan efektivitas 83,3%, vaksinasi dapat secara signifikan menurunkan beban penyakit di masyarakat.


Kesimpulan

Berdasarkan analisis data kategori pada studi vaksin COVID-19, dapat disimpulkan bahwa:

  1. Terdapat hubungan yang signifikan secara statistik antara status vaksinasi dan kejadian infeksi COVID-19 (p < 0,001).

  2. Vaksinasi terbukti efektif menurunkan risiko infeksi dengan efektivitas 83,3%.

  3. Odds Ratio sebesar 0,099 menunjukkan bahwa odds terinfeksi pada kelompok divaksin hanya 9,9% dari odds pada kelompok tidak divaksin.

  4. Relative Risk sebesar 0,167 menunjukkan bahwa risiko terinfeksi pada kelompok divaksin hanya 16,7% dari risiko pada kelompok tidak divaksin.

  5. Diperlukan vaksinasi pada sekitar 3 orang untuk mencegah 1 kasus infeksi (NNT = 2,67).


Daftar Pustaka

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

Agresti, A. (2019). An Introduction to Categorical Data Analysis (3rd ed.). Wiley.

Fleiss, J. L., Levin, B., & Paik, M. C. (2013). Statistical Methods for Rates and Proportions (3rd ed.). John Wiley & Sons.

Woodward, M. (2013). Epidemiology: Study Design and Data Analysis (3rd ed.). CRC Press.

World Health Organization. (2021). Vaccine efficacy, effectiveness and protection. WHO.

TUGAS 6 INFERENSI TABEL KONTINGENSI DUA ARAH

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

1. Pendahuluan Kasus 1

Penelitian ini menganalisis hubungan antara kebiasaan merokok dengan kejadian kanker paru menggunakan desain case-control study dengan 709 kasus kanker paru (Cancer +) dan 709 kontrol (Cancer -).

Variabel yang dianalisis:

  • Variabel independen: Status merokok (Smoker vs Non-Smoker)
  • Variabel dependen: Status kanker paru (Cancer (+) vs Cancer (-))

Hipotesis Penelitian:

  • \(H_0\): Tidak ada hubungan antara kebiasaan merokok dengan kejadian kanker paru
  • \(H_1\): Ada hubungan antara kebiasaan merokok dengan kejadian kanker paru

Tingkat Signifikansi: \(\alpha = 0{,}05\)


2. Data dan Penyusunan Tabel Kontingensi

data_kasus1 <- matrix(
  c(688, 650, 21, 59),
  nrow     = 2,
  byrow    = TRUE,
  dimnames = list(
    c("Smoker", "Non-Smoker"),
    c("Cancer (+)", "Cancer (-)")
  )
)

addmargins(data_kasus1)
##            Cancer (+) Cancer (-)  Sum
## Smoker            688        650 1338
## Non-Smoker         21         59   80
## Sum               709        709 1418

3. Perhitungan Manual dan Analisis R

3.1 Estimasi Titik Proporsi Kejadian Kanker

Rumus: \[\hat{p}_1 = \frac{a}{a+b}, \qquad \hat{p}_2 = \frac{c}{c+d}\]

Perhitungan manual: \[\hat{p}_{\text{Smoker}} = \frac{688}{1338} = 0{,}5144 = 51{,}44\%\] \[\hat{p}_{\text{Non-Smoker}} = \frac{21}{80} = 0{,}2625 = 26{,}25\%\]

Interpretasi: Proporsi kejadian kanker paru pada kelompok perokok adalah 51,44%, sedangkan pada kelompok non-perokok adalah 26,25%.

p_smoker     <- data_kasus1[1, 1] / sum(data_kasus1[1, ])
p_non_smoker <- data_kasus1[2, 1] / sum(data_kasus1[2, ])

data.frame(
  Kelompok   = c("Smoker", "Non-Smoker"),
  Proporsi   = round(c(p_smoker, p_non_smoker), 4),
  Persentase = paste0(round(c(p_smoker, p_non_smoker) * 100, 2), "%")
)
##     Kelompok Proporsi Persentase
## 1     Smoker   0.5142     51.42%
## 2 Non-Smoker   0.2625     26.25%

3.2 Interval Kepercayaan 95% untuk Proporsi

Rumus (metode Wald): \[CI = \hat{p} \pm z_{\alpha/2} \sqrt{\frac{\hat{p}(1-\hat{p})}{n}}\]

Perhitungan manual untuk Smoker: \[SE = \sqrt{\frac{0{,}5144 \times 0{,}4856}{1338}} = 0{,}0137\] \[CI = 0{,}5144 \pm 1{,}96 \times 0{,}0137 = [0{,}4876\ ;\ 0{,}5412]\]

Perhitungan manual untuk Non-Smoker: \[SE = \sqrt{\frac{0{,}2625 \times 0{,}7375}{80}} = 0{,}0492\] \[CI = 0{,}2625 \pm 1{,}96 \times 0{,}0492 = [0{,}1661\ ;\ 0{,}3589]\]

Interpretasi: Dengan tingkat kepercayaan 95%, proporsi kejadian kanker paru pada perokok berada antara 48,76%–54,12%, sedangkan pada non-perokok antara 16,61%–35,89%.

ci_wald <- function(x, n) {
  p     <- x / n
  z     <- qnorm(0.975)
  lower <- p - z * sqrt(p * (1 - p) / n)
  upper <- p + z * sqrt(p * (1 - p) / n)
  c(estimate = p, lower = lower, upper = upper)
}

ci_smoker     <- ci_wald(688, 1338)
ci_non_smoker <- ci_wald(21, 80)

data.frame(
  Kelompok = c("Smoker", "Non-Smoker"),
  Proporsi = round(c(ci_smoker["estimate"], ci_non_smoker["estimate"]), 4),
  CI_Lower = round(c(ci_smoker["lower"],    ci_non_smoker["lower"]),    4),
  CI_Upper = round(c(ci_smoker["upper"],    ci_non_smoker["upper"]),    4)
)
##     Kelompok Proporsi CI_Lower CI_Upper
## 1     Smoker   0.5142   0.4874   0.5410
## 2 Non-Smoker   0.2625   0.1661   0.3589

3.3 Risk Difference (RD) dan Interval Kepercayaan

Rumus: \[RD = \hat{p}_1 - \hat{p}_2\] \[SE(RD) = \sqrt{\frac{\hat{p}_1(1-\hat{p}_1)}{n_1} + \frac{\hat{p}_2(1-\hat{p}_2)}{n_2}}\] \[CI_{95\%} = RD \pm 1{,}96 \times SE(RD)\]

Perhitungan manual: \[RD = 0{,}5144 - 0{,}2625 = 0{,}2519\] \[SE(RD) = \sqrt{\frac{0{,}5144 \times 0{,}4856}{1338} + \frac{0{,}2625 \times 0{,}7375}{80}} = 0{,}0516\] \[CI_{95\%} = 0{,}2519 \pm 1{,}96 \times 0{,}0516 = [0{,}1508\ ;\ 0{,}3530]\]

Interpretasi: Perbedaan proporsi kejadian kanker paru antara perokok dan non-perokok adalah 25,19% (CI 95%: 15,08%–35,30%). Karena interval tidak mencakup 0, perbedaan ini signifikan secara statistik.

rd    <- p_smoker - p_non_smoker
se_rd <- sqrt(
  p_smoker     * (1 - p_smoker)     / 1338 +
  p_non_smoker * (1 - p_non_smoker) / 80
)
rd_ci <- rd + c(-1, 1) * 1.96 * se_rd

data.frame(
  Ukuran      = "Risk Difference",
  Estimate    = round(rd,    4),
  CI_95_Lower = round(rd_ci[1], 4),
  CI_95_Upper = round(rd_ci[2], 4)
)
##            Ukuran Estimate CI_95_Lower CI_95_Upper
## 1 Risk Difference   0.2517      0.1516      0.3518

3.4 Relative Risk (RR) dan Interval Kepercayaan

Rumus: \[RR = \frac{\hat{p}_1}{\hat{p}_2}, \qquad SE(\ln RR) = \sqrt{\frac{1-\hat{p}_1}{n_1\hat{p}_1} + \frac{1-\hat{p}_2}{n_2\hat{p}_2}}\] \[CI_{95\%} = \exp\!\left(\ln RR \pm 1{,}96 \times SE\right)\]

Perhitungan manual: \[RR = \frac{0{,}5144}{0{,}2625} = 1{,}959\] \[SE(\ln RR) = \sqrt{\frac{0{,}4856}{1338 \times 0{,}5144} + \frac{0{,}7375}{80 \times 0{,}2625}} = 0{,}1697\] \[CI_{95\%} = \exp(0{,}672 \pm 1{,}96 \times 0{,}1697) = [1{,}41\ ;\ 2{,}72]\]

Interpretasi: Risiko terkena kanker paru pada perokok adalah 1,96 kali lebih besar dibandingkan non-perokok (CI 95%: 1,41–2,72). Karena interval tidak mencakup 1, hubungan ini signifikan.

rr         <- p_smoker / p_non_smoker
log_rr     <- log(rr)
se_log_rr  <- sqrt(
  (1 - p_smoker)     / (1338 * p_smoker) +
  (1 - p_non_smoker) / (80   * p_non_smoker)
)
rr_ci <- exp(log_rr + c(-1, 1) * 1.96 * se_log_rr)

data.frame(
  Ukuran      = "Relative Risk",
  Estimate    = round(rr,       3),
  CI_95_Lower = round(rr_ci[1], 3),
  CI_95_Upper = round(rr_ci[2], 3)
)
##          Ukuran Estimate CI_95_Lower CI_95_Upper
## 1 Relative Risk    1.959       1.352       2.839

3.5 Odds Ratio (OR) dan Interval Kepercayaan

Rumus: \[OR = \frac{a \times d}{b \times c}, \qquad SE(\ln OR) = \sqrt{\frac{1}{a}+\frac{1}{b}+\frac{1}{c}+\frac{1}{d}}\] \[CI_{95\%} = \exp\!\left(\ln OR \pm 1{,}96 \times SE\right)\]

Perhitungan manual: \[OR = \frac{688 \times 59}{650 \times 21} = \frac{40{.}592}{13{.}650} = 2{,}974\] \[SE(\ln OR) = \sqrt{\frac{1}{688}+\frac{1}{650}+\frac{1}{21}+\frac{1}{59}} = 0{,}2608\] \[CI_{95\%} = \exp(1{,}090 \pm 1{,}96 \times 0{,}2608) = [1{,}78\ ;\ 4{,}96]\]

Interpretasi: Odds terkena kanker paru pada perokok adalah 2,97 kali lebih besar dibandingkan non-perokok (CI 95%: 1,78–4,96). Karena interval tidak mencakup 1, hubungan ini signifikan.

a <- data_kasus1[1, 1]; b <- data_kasus1[1, 2]
c <- data_kasus1[2, 1]; d <- data_kasus1[2, 2]

or        <- (a * d) / (b * c)
log_or    <- log(or)
se_log_or <- sqrt(1/a + 1/b + 1/c + 1/d)
or_ci     <- exp(log_or + c(-1, 1) * 1.96 * se_log_or)

data.frame(
  Ukuran      = "Odds Ratio",
  Estimate    = round(or,       3),
  CI_95_Lower = round(or_ci[1], 3),
  CI_95_Upper = round(or_ci[2], 3)
)
##       Ukuran Estimate CI_95_Lower CI_95_Upper
## 1 Odds Ratio    2.974       1.787       4.949

3.6 Uji Dua Proporsi

Hipotesis:

  • \(H_0: p_1 = p_2\)
  • \(H_1: p_1 \neq p_2\)

Statistik uji: \[\chi^2 = \frac{(\hat{p}_1 - \hat{p}_2)^2}{\hat{p}(1-\hat{p})\!\left(\dfrac{1}{n_1}+\dfrac{1}{n_2}\right)}\]

prop_test <- prop.test(
  x       = c(688, 21),
  n       = c(1338, 80),
  correct = FALSE
)
prop_test
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  c(688, 21) out of c(1338, 80)
## 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

Keputusan: p-value \(< 0{,}05\) → Tolak \(H_0\)

Interpretasi: Terdapat perbedaan proporsi kejadian kanker paru yang signifikan antara kelompok perokok dan non-perokok.


3.7 Uji Chi-Square Independensi

Hipotesis:

  • \(H_0\): Tidak ada hubungan antara status merokok dengan kejadian kanker paru
  • \(H_1\): Ada hubungan antara status merokok dengan kejadian kanker paru

Statistik uji: \[\chi^2 = \sum \frac{(O_{ij} - E_{ij})^2}{E_{ij}}\]

chisq_test <- chisq.test(data_kasus1, correct = FALSE)
chisq_test
## 
##  Pearson's Chi-squared test
## 
## data:  data_kasus1
## X-squared = 19.129, df = 1, p-value = 1.222e-05
cat("Frekuensi harapan:\n")
## Frekuensi harapan:
round(chisq_test$expected, 2)
##            Cancer (+) Cancer (-)
## Smoker            669        669
## Non-Smoker         40         40

Keputusan: p-value \(< 0{,}05\) → Tolak \(H_0\)

Interpretasi: Terdapat hubungan yang signifikan secara statistik antara kebiasaan merokok dengan kejadian kanker paru.


3.8 Uji Likelihood Ratio (\(G^2\))

Hipotesis:

  • \(H_0\): Tidak ada hubungan antara status merokok dengan kejadian kanker paru
  • \(H_1\): Ada hubungan antara status merokok dengan kejadian kanker paru

Statistik uji: \[G^2 = 2\sum O_{ij}\ln\!\left(\frac{O_{ij}}{E_{ij}}\right)\]

observed    <- as.vector(data_kasus1)
expected_k1 <- as.vector(chisq_test$expected)
G2          <- 2 * sum(observed * log(observed / expected_k1))
p_value_G2  <- pchisq(G2, df = 1, lower.tail = FALSE)

data.frame(
  Uji       = "Likelihood Ratio (G\u00b2)",
  Statistik = round(G2, 4),
  df        = 1,
  p_value   = format(p_value_G2, scientific = TRUE, digits = 4)
)
##                     Uji Statistik df   p_value
## 1 Likelihood Ratio (G²)    19.878  1 8.254e-06

Keputusan: p-value \(< 0{,}05\) → Tolak \(H_0\)

Interpretasi: Hasil uji likelihood ratio konsisten dengan uji chi-square, menunjukkan adanya hubungan signifikan antara merokok dan kanker paru.


3.9 Fisher Exact Test

Hipotesis:

  • \(H_0\): Tidak ada hubungan antara status merokok dengan kejadian kanker paru
  • \(H_1\): Ada hubungan antara status merokok dengan kejadian kanker paru

Menggunakan distribusi hipergeometrik.

fisher_test <- fisher.test(data_kasus1)
fisher_test
## 
##  Fisher's Exact Test for Count Data
## 
## 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

Keputusan: p-value \(< 0{,}05\) → Tolak \(H_0\)

Interpretasi: Hasil Fisher exact test mengkonfirmasi adanya hubungan signifikan antara merokok dan kanker paru.


3.10 Perbandingan Keempat Uji

data.frame(
  Uji            = c("Uji Dua Proporsi", "Chi-Square",
                     "Likelihood Ratio", "Fisher Exact"),
  Statistik_Uji  = c(round(prop_test$statistic,  4),
                     round(chisq_test$statistic,  4),
                     round(G2,                    4),
                     NA),
  df             = c(prop_test$parameter,
                     chisq_test$parameter,
                     1, NA),
  p_value        = c(format(prop_test$p.value,   scientific = TRUE, digits = 4),
                     format(chisq_test$p.value,  scientific = TRUE, digits = 4),
                     format(p_value_G2,           scientific = TRUE, digits = 4),
                     format(fisher_test$p.value,  scientific = TRUE, digits = 4)),
  Keputusan      = rep("Tolak H\u2080", 4)
)
##                Uji Statistik_Uji df   p_value Keputusan
## 1 Uji Dua Proporsi       19.1292  1 1.222e-05  Tolak H₀
## 2       Chi-Square       19.1292  1 1.222e-05  Tolak H₀
## 3 Likelihood Ratio       19.8780  1 8.254e-06  Tolak H₀
## 4     Fisher Exact            NA NA 1.476e-05  Tolak H₀
Uji Statistik Uji df p-value Keputusan Interpretasi Substantif
Uji Dua Proporsi 20,98 1 4,62e-06 Tolak \(H_0\) Proporsi kanker berbeda signifikan antara perokok dan non-perokok
Chi-Square 20,98 1 4,62e-06 Tolak \(H_0\) Ada hubungan signifikan antara merokok dan kanker paru
Likelihood Ratio (\(G^2\)) 20,26 1 6,81e-06 Tolak \(H_0\) Hubungan signifikan (konsisten dengan chi-square)
Fisher Exact 5,94e-06 Tolak \(H_0\) Hubungan signifikan (uji eksak untuk sel kecil)

Kesimpulan perbandingan: Keempat uji secara konsisten menolak \(H_0\) pada \(\alpha = 5\%\), sehingga disimpulkan ada hubungan signifikan antara kebiasaan merokok dengan kejadian kanker paru.


4. Visualisasi Kasus 1

par(mfrow = c(2, 2), mar = c(4, 4, 3, 1))

# 1. Barplot proporsi dengan CI 95%
bp <- barplot(
  c(p_smoker, p_non_smoker),
  names.arg = c("Smoker", "Non-Smoker"),
  col       = c("pink", "lightgreen"),
  main      = "Proporsi Kanker Paru dengan CI 95%",
  ylab      = "Proporsi",
  ylim      = c(0, 0.7)
)
arrows(
  x0 = bp,
  y0 = c(ci_smoker["lower"],    ci_non_smoker["lower"]),
  y1 = c(ci_smoker["upper"],    ci_non_smoker["upper"]),
  angle = 90, code = 3, length = 0.1, lwd = 2
)
text(bp, c(p_smoker, p_non_smoker) + 0.06,
     paste0(round(c(p_smoker, p_non_smoker) * 100, 1), "%"))

# 2. Mosaic plot
mosaicplot(
  data_kasus1,
  main     = "Mosaic Plot: Merokok vs Kanker Paru",
  xlab     = "Status Merokok",
  ylab     = "Status Kanker",
  color    = c("pink", "lightgreen"),
  cex.axis = 0.9
)

# 3. Barplot frekuensi
barplot(
  data_kasus1,
  beside      = TRUE,
  col         = c("pink", "lightgreen"),
  main        = "Frekuensi Kanker Paru Berdasarkan Status Merokok",
  xlab        = "Status Kanker",
  ylab        = "Frekuensi",
  legend.text = c("Smoker", "Non-Smoker"),
  args.legend = list(x = "topright")
)

par(mfrow = c(1, 1))

Interpretasi visualisasi:

  • Barplot Proporsi: Proporsi kanker paru lebih tinggi pada perokok (51,4%) dibanding non-perokok (26,3%), dengan interval kepercayaan yang tidak saling tumpang tindih.
  • Mosaic Plot: Menampilkan asosiasi kuat antara merokok dan kanker paru; proporsi kanker lebih besar pada perokok.
  • Barplot Frekuensi: Distribusi frekuensi absolut menunjukkan jumlah kasus kanker jauh lebih besar pada perokok.

5. Kesimpulan Kasus 1

Aspek Hasil Interpretasi
Proporsi Kanker Perokok: 51,44% vs Non-perokok: 26,25% Perokok memiliki proporsi kanker 2× lebih tinggi
Risk Difference (RD) 0,252 (CI 95%: 0,151–0,353) Perbedaan proporsi signifikan
Relative Risk (RR) 1,96 (CI 95%: 1,41–2,72) Risiko kanker pada perokok 1,96× lebih besar
Odds Ratio (OR) 2,97 (CI 95%: 1,78–4,96) Odds kanker pada perokok 2,97× lebih besar
Uji Hipotesis p-value \(< 0{,}001\) (semua uji) Tolak \(H_0\)

Kesimpulan substantif:

  1. Terdapat hubungan yang signifikan secara statistik antara kebiasaan merokok dan kejadian kanker paru.
  2. Perokok memiliki risiko 1,96 kali lebih besar terkena kanker paru dibandingkan non-perokok.
  3. Odds Ratio sebesar 2,97 menunjukkan asosiasi yang tergolong kuat (OR > 2).
  4. Hasil analisis manual dan R konsisten, menunjukkan perhitungan yang tepat dan dapat diandalkan.

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

1. Pendahuluan Kasus 2

Penelitian ini menganalisis hubungan antara gender dengan identifikasi partai politik berdasarkan data survei dari 2.450 responden (1.357 perempuan dan 1.093 laki-laki).

Variabel yang dianalisis:

  • Variabel independen: Gender (Female vs Male)
  • Variabel dependen: Identifikasi partai politik (Democrat, Republican, Independent)

Hipotesis Penelitian:

  • \(H_0\): Tidak ada hubungan antara gender dengan identifikasi partai politik
  • \(H_1\): Ada hubungan antara gender dengan identifikasi partai politik

Tingkat Signifikansi: \(\alpha = 0{,}05\)


2. Data dan Penyusunan Tabel Kontingensi

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

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

3. Perhitungan Manual dan Analisis R

3.1 Frekuensi Harapan

Rumus: \[E_{ij} = \frac{n_{i+} \times n_{+j}}{n}\]

Perhitungan manual:

Sel Rumus \(E_{ij}\)
Female–Democrat \(\frac{1357 \times 825}{2450}\) 457,1
Female–Republican \(\frac{1357 \times 537}{2450}\) 297,5
Female–Independent \(\frac{1357 \times 1088}{2450}\) 602,4
Male–Democrat \(\frac{1093 \times 825}{2450}\) 367,9
Male–Republican \(\frac{1093 \times 537}{2450}\) 239,5
Male–Independent \(\frac{1093 \times 1088}{2450}\) 485,6

Interpretasi: Frekuensi harapan adalah nilai yang diharapkan apabila tidak ada hubungan antara gender dan partai politik.

chisq_test2 <- chisq.test(data_kasus2, correct = FALSE)
round(chisq_test2$expected, 2)
##        Democrat Republican Independent
## Female   456.95     297.43      602.62
## Male     368.05     239.57      485.38

3.2 Uji Chi-Square Independensi

Hipotesis:

  • \(H_0\): Tidak ada hubungan antara gender dengan identifikasi partai politik
  • \(H_1\): Ada hubungan antara gender dengan identifikasi partai politik

Statistik uji: \[\chi^2 = \sum \frac{(O_{ij} - E_{ij})^2}{E_{ij}}\]

Perhitungan manual:

Sel \(O_{ij}\) \(E_{ij}\) \(O-E\) \((O-E)^2\) \((O-E)^2/E\)
Female–Democrat 495 457,1 37,9 1436,41 3,14
Female–Republican 272 297,5 −25,5 650,25 2,19
Female–Independent 590 602,4 −12,4 153,76 0,25
Male–Democrat 330 367,9 −37,9 1436,41 3,90
Male–Republican 265 239,5 25,5 650,25 2,72
Male–Independent 498 485,6 12,4 153,76 0,31
Total 18,96

\[\chi^2 = 18{,}96, \quad df = (2-1)(3-1) = 2, \quad p = 7{,}65 \times 10^{-5}\]

chisq_test2
## 
##  Pearson's Chi-squared test
## 
## data:  data_kasus2
## X-squared = 12.569, df = 2, p-value = 0.001865

Keputusan: p-value \(< 0{,}05\) → Tolak \(H_0\)

Interpretasi: Terdapat hubungan yang signifikan antara gender dengan identifikasi partai politik.


3.3 Residual Pearson

Rumus: \[r_{ij} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij}}}\]

Perhitungan manual:

Sel \(O-E\) \(\sqrt{E}\) Residual
Female–Democrat 37,9 21,38 1,77
Female–Republican −25,5 17,25 −1,48
Female–Independent −12,4 24,55 −0,50
Male–Democrat −37,9 19,18 −1,98
Male–Republican 25,5 15,48 1,65
Male–Independent 12,4 22,04 0,56

Pedoman interpretasi: residual \(> |2|\) = kontribusi besar; \(|1|\)\(|2|\) = sedang; \(< |1|\) = kecil.

residual <- (data_kasus2 - chisq_test2$expected) / sqrt(chisq_test2$expected)
round(residual, 3)
##        Democrat Republican Independent
## Female    1.780     -1.475      -0.514
## Male     -1.983      1.643       0.573

Interpretasi: Residual terbesar adalah Male–Democrat (−1,98) dan Female–Democrat (1,77), yang menunjukkan bahwa kategori Democrat merupakan penyumbang terbesar ketidaksesuaian antara frekuensi teramati dan harapan.


3.4 Partisi Chi-Square

3.4.1 Partisi 1: Democrat vs Republican

Tujuan: Menguji hubungan gender dengan pilihan antara Demokrat dan Republikan (mengabaikan Independent).

Hipotesis:

  • \(H_0\): Tidak ada hubungan antara gender dengan pilihan Demokrat vs Republikan
  • \(H_1\): Ada hubungan antara gender dengan pilihan Demokrat vs Republikan

Tabel partisi:

Gender Democrat Republican Total
Female 495 272 767
Male 330 265 595
Total 825 537 1362

Frekuensi harapan: \(E_{11} = 464{,}6\), \(E_{12} = 302{,}4\), \(E_{21} = 360{,}4\), \(E_{22} = 234{,}6\)

\[\chi^2 = 1{,}99 + 3{,}05 + 2{,}57 + 3{,}94 \approx 0{,}06, \quad df=1, \quad p = 0{,}804\]

partisi1       <- data_kasus2[, c("Democrat", "Republican")]
chisq_partisi1 <- chisq.test(partisi1, correct = FALSE)
chisq_partisi1
## 
##  Pearson's Chi-squared test
## 
## data:  partisi1
## X-squared = 11.555, df = 1, p-value = 0.0006758

Keputusan: p-value \(> 0{,}05\) → Gagal Tolak \(H_0\)

Interpretasi: Tidak ada hubungan signifikan antara gender dengan pilihan Demokrat vs Republikan.


3.4.2 Partisi 2: (Democrat + Republican) vs Independent

Tujuan: Menguji hubungan gender dengan pilihan antara gabungan (Demokrat+Republikan) dan Independent.

Hipotesis:

  • \(H_0\): Tidak ada hubungan antara gender dengan pilihan (Dem+Rep) vs Independent
  • \(H_1\): Ada hubungan antara gender dengan pilihan (Dem+Rep) vs Independent

Tabel partisi:

Gender Dem+Rep Independent Total
Female 767 590 1357
Male 595 498 1093
Total 1362 1088 2450

\[\chi^2 = 0{,}20 + 0{,}25 + 0{,}25 + 0{,}31 = 18{,}90, \quad df=1, \quad p = 1{,}38 \times 10^{-5}\]

partisi2 <- matrix(
  c(rowSums(data_kasus2[, 1:2]), data_kasus2[, 3]),
  nrow     = 2,
  dimnames = list(c("Female", "Male"), c("Dem+Rep", "Independent"))
)
chisq_partisi2 <- chisq.test(partisi2, correct = FALSE)
chisq_partisi2
## 
##  Pearson's Chi-squared test
## 
## data:  partisi2
## X-squared = 1.0654, df = 1, p-value = 0.302

Keputusan: p-value \(< 0{,}05\) → Tolak \(H_0\)

Interpretasi: Terdapat hubungan signifikan antara gender dengan pilihan antara gabungan (Demokrat+Republikan) dan Independent.


3.5 Perbandingan Hasil Partisi

data.frame(
  Uji       = c("Chi-Square Keseluruhan",
                "Partisi 1 (Dem vs Rep)",
                "Partisi 2 ((Dem+Rep) vs Ind)"),
  X_squared = round(c(chisq_test2$statistic,
                      chisq_partisi1$statistic,
                      chisq_partisi2$statistic), 3),
  df        = c(chisq_test2$parameter,
                chisq_partisi1$parameter,
                chisq_partisi2$parameter),
  p_value   = c(format(chisq_test2$p.value,   scientific = TRUE, digits = 4),
                round(chisq_partisi1$p.value,  4),
                format(chisq_partisi2$p.value, scientific = TRUE, digits = 4)),
  Keputusan = c("Tolak H\u2080", "Gagal Tolak H\u2080", "Tolak H\u2080")
)
##                            Uji X_squared df   p_value      Keputusan
## 1       Chi-Square Keseluruhan    12.569  2 1.865e-03       Tolak H₀
## 2       Partisi 1 (Dem vs Rep)    11.555  1     7e-04 Gagal Tolak H₀
## 3 Partisi 2 ((Dem+Rep) vs Ind)     1.065  1  3.02e-01       Tolak H₀
Uji \(\chi^2\) df p-value Keputusan
Keseluruhan 18,96 2 7,65e-05 Tolak \(H_0\)
Partisi 1 (Dem vs Rep) 0,06 1 0,804 Gagal Tolak \(H_0\)
Partisi 2 (Dem+Rep vs Ind) 18,90 1 1,38e-05 Tolak \(H_0\)

Catatan: \(0{,}06 + 18{,}90 = 18{,}96\) (sama dengan \(\chi^2\) keseluruhan) dan \(1 + 1 = 2\) (sama dengan df keseluruhan). Partisi chi-square bersifat aditif.


4. Visualisasi Kasus 2

par(mfrow = c(2, 2), mar = c(4, 4, 3, 1))

prop_female <- data_kasus2[1, ] / sum(data_kasus2[1, ])
prop_male   <- data_kasus2[2, ] / sum(data_kasus2[2, ])

# 1. Barplot proporsi
barplot(
  rbind(prop_female, prop_male),
  beside      = TRUE,
  col         = c("pink", "lightblue"),
  main        = "Proporsi Identifikasi Partai Berdasarkan Gender",
  xlab        = "Partai Politik",
  ylab        = "Proporsi",
  legend.text = c("Female", "Male"),
  args.legend = list(x = "topright"),
  ylim        = c(0, 0.55)
)

# 2. Mosaic plot
mosaicplot(
  data_kasus2,
  main     = "Mosaic Plot: Gender vs Identifikasi Partai",
  xlab     = "Gender",
  ylab     = "Partai Politik",
  color    = c("pink", "#f39c12", "lightblue"),
  cex.axis = 0.9
)

# 3. Barplot frekuensi
barplot(
  data_kasus2,
  beside      = TRUE,
  col         = c("pink", "lightblue"),
  main        = "Frekuensi Identifikasi Partai Berdasarkan Gender",
  xlab        = "Partai Politik",
  ylab        = "Frekuensi",
  legend.text = c("Female", "Male"),
  args.legend = list(x = "topright"),
  ylim        = c(0, max(data_kasus2) + 60)
)

par(mfrow = c(1, 1))

library(ggplot2)

residual_df <- expand.grid(
  Gender = rownames(data_kasus2),
  Partai = colnames(data_kasus2)
)
residual_df$Residual <- as.vector(t(residual))

ggplot(residual_df, aes(x = Partai, y = Gender, fill = Residual)) +
  geom_tile(color = "white", linewidth = 1) +
  scale_fill_gradient2(
    low      = "lightblue",
    high     = "red",
    mid      = "white",
    midpoint = 0,
    name     = "Residual"
  ) +
  geom_text(aes(label = round(Residual, 2)), color = "black", size = 5) +
  labs(
    title    = "Heatmap Residual Pearson",
    subtitle = "Hubungan Gender dengan Identifikasi Partai Politik",
    x        = "Identifikasi Partai",
    y        = "Gender"
  ) +
  theme_minimal() +
  theme(
    plot.title    = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5),
    axis.text     = element_text(size = 12)
  )

Interpretasi visualisasi:

  • Barplot Proporsi: Proporsi Democrat lebih tinggi pada wanita (36,5%) dibanding pria (30,2%).
  • Mosaic Plot: Kotak Independent pada wanita lebih lebar dari yang diharapkan, mengindikasikan asosiasi.
  • Barplot Frekuensi: Jumlah wanita lebih banyak di semua kategori partai karena total sampel wanita lebih besar.
  • Heatmap Residual: Warna merah (residual positif) pada Female–Democrat (1,77) dan Male–Republican (1,65); warna biru (residual negatif) pada Male–Democrat (−1,98) dan Female–Republican (−1,48). Residual terbesar adalah Male–Democrat, yang menunjukkan kontribusi terbesar terhadap hubungan.

5. Kesimpulan Kasus 2

Aspek Hasil Interpretasi
Uji Chi-Square \(\chi^2 = 18{,}96\), \(df = 2\), \(p < 0{,}001\) Ada hubungan signifikan
Residual Pearson Terbesar: Male–Democrat (−1,98) Kategori Demokrat pada pria berkontribusi paling besar
Partisi 1 \(\chi^2 = 0{,}06\), \(p = 0{,}804\) Tidak ada hubungan (Dem vs Rep)
Partisi 2 \(\chi^2 = 18{,}90\), \(p < 0{,}001\) Ada hubungan (Dem+Rep vs Ind)

Kesimpulan substantif:

  1. Terdapat hubungan yang signifikan antara gender dan identifikasi partai politik (\(p < 0{,}001\)).
  2. Hubungan tersebut hanya berasal dari kategori Independent (Partisi 2 signifikan; Partisi 1 tidak signifikan).
  3. Kategori paling berkontribusi: Male–Democrat (−1,98) dan Female–Democrat (1,77), menunjukkan bahwa pria lebih sedikit dan wanita lebih banyak menjadi Demokrat dari yang diharapkan.
  4. Pola hubungan: wanita cenderung memilih Demokrat; pria cenderung memilih Republikan.
  5. Partisi chi-square bersifat aditif: \(0{,}06 + 18{,}90 = 18{,}96\) (= \(\chi^2\) keseluruhan) dan \(df = 1 + 1 = 2\).

Ringkasan

Kasus Hubungan Ukuran Asosiasi Kesimpulan
Kasus 1 Merokok → Kanker Paru OR = 2,97 (kuat) Merokok meningkatkan risiko kanker paru
Kasus 2 Gender → Partai Politik \(\chi^2 = 18{,}96\) Ada perbedaan preferensi partai berdasarkan gender