1. Definisi Analisis Data Kategori

Analisis data kategori adalah metode statistik yang digunakan untuk menganalisis variabel yang berbentuk kategori atau klasifikasi. Variabel kategori merepresentasikan kelompok seperti jenis kelamin, status merokok, atau status penyakit.

Menurut Agresti (2019), analisis data kategori mempelajari hubungan antar variabel kategori yang biasanya disajikan menggunakan tabel kontingensi.

Analisis ini sering digunakan dalam berbagai bidang penelitian seperti kesehatan, ilmu sosial, dan pemasaran untuk memahami pola hubungan antar kategori. Selain itu, teknik analisis data kategori memungkinkan peneliti menguji apakah terdapat hubungan yang signifikan antara dua atau lebih variabel kategori. Metode yang umum digunakan dalam analisis ini antara lain uji chi-square, ukuran asosiasi, serta model regresi logistik untuk mempelajari keterkaitan antar variabel kategori (Agresti, 2019; McHugh, 2013).

1.1 Karakteristik Variabel Kategori

Berikut adalah karakteristik utama variabel kategori:

  1. Nilai variabel berupa kategori atau label Variabel kategori tidak dinyatakan dalam bentuk angka yang memiliki makna kuantitatif, melainkan dalam bentuk kelompok atau label seperti jenis kelamin, status perkawinan, tingkat pendidikan, atau jenis pekerjaan (Agresti, 2019).

  2. Kategori bersifat saling eksklusif (mutually exclusive) Setiap pengamatan hanya dapat masuk ke dalam satu kategori dan tidak dapat berada pada dua kategori sekaligus. Misalnya seseorang hanya dapat diklasifikasikan sebagai laki-laki atau perempuan dalam variabel jenis kelamin (McHugh, 2013).

  3. Kategori bersifat lengkap atau mencakup semua kemungkinan (collectively exhaustive) Seluruh kategori yang dibuat harus mampu menampung seluruh kemungkinan nilai dari variabel yang diamati sehingga setiap observasi dapat diklasifikasikan dengan jelas (Agresti, 2019).

  4. Data biasanya disajikan dalam bentuk frekuensi atau proporsi Karena berupa kategori, analisis variabel ini umumnya dilakukan dengan menghitung banyaknya observasi pada setiap kategori yang kemudian disajikan dalam tabel frekuensi atau tabel kontingensi (Agresti, 2019).

  5. Dapat dibedakan menjadi skala nominal dan ordinal Variabel kategori dapat berupa nominal (tidak memiliki urutan, misalnya jenis kelamin atau agama) atau ordinal (memiliki urutan atau tingkatan, misalnya tingkat pendidikan atau tingkat kepuasan) (Agresti, 2019; Moore, McCabe, & Craig, 2017).

1.2 Jenis variabel kategori:

  • Nominal Variabel nominal adalah variabel kategori yang tidak memiliki urutan atau tingkatan tertentu antar kategorinya.Contoh variabel nominal antara lain jenis kelamin (laki-laki, perempuan), status perkawinan (belum menikah, menikah, cerai), agama, atau jenis pekerjaan. Dalam analisis statistik, data nominal biasanya disajikan dalam bentuk frekuensi atau proporsi dan sering dianalisis menggunakan tabel kontingensi atau uji chi-square.

  • Ordinal Variabel ordinal adalah variabel kategori yang memiliki urutan atau tingkatan tertentu antar kategorinya, namun jarak antar kategori tidak dapat diukur secara pasti. Contoh variabel ordinal antara lain tingkat pendidikan (SD, SMP, SMA, Perguruan Tinggi), tingkat kepuasan (tidak puas, cukup puas, puas, sangat puas), dan status ekonomi (rendah, menengah, tinggi).

1.3 Contoh Penerapan Dalam Penelitian

  1. Penelitian di bidang kesehatan Misalnya, penelitian yang mengkaji hubungan antara status merokok (perokok / tidak perokok) dengan kejadian penyakit paru-paru (ya / tidak).

  2. Penelitian di bidang pendidikan Dalam penelitian pendidikan, analisis data kategori dapat digunakan untuk melihat hubungan antara jenis sekolah (negeri / swasta) dengan kelulusan siswa (lulus / tidak lulus).

  3. Penelitian di bidang sosial Dalam penelitian sosial, analisis data kategori dapat digunakan untuk mengkaji hubungan antara tingkat pendidikan (SD, SMP, SMA, Perguruan Tinggi) dengan status pekerjaan (bekerja / tidak bekerja).


2. Tabel Kontingensi

Tabel kontingensi menyajikan distribusi frekuensi dari dua atau lebih variabel kategori secara bersamaan.Secara umum, tabel kontingensi disusun dalam bentuk baris dan kolom, di mana setiap baris mewakili kategori dari satu variabel dan setiap kolom mewakili kategori dari variabel lainnya.

2.1 Struktur Tabel 2x2

Penyakit jantung Tidak sakit jantung Total
Olahraga a b a+b
Tidak Olahraga c d c+d
Total a+c b+d n

2.2 Joint Distribution

Joint Distribution atau distribusi bersama adalah distribusi peluang yang menunjukkan probabilitas atau proporsi dari kombinasi kategori dua variabel secara bersamaan.Dalam tabel kontingensi, distribusi bersama diperoleh dari frekuensi pada setiap sel tabel yang kemudian dibagi dengan jumlah total observasi. Dengan kata lain, distribusi ini menggambarkan peluang terjadinya dua kategori sekaligus.

\[ P(A,B) = \frac{{frekuensi pada sel}}{n} \]

2.3 Marginal Distribution

Distribusi marginal adalah distribusi peluang dari satu variabel saja tanpa memperhatikan variabel lainnya. Distribusi ini diperoleh dengan menjumlahkan frekuensi pada setiap baris atau kolom tabel kontingensi. Hasilnya biasanya ditampilkan dalam total baris atau total kolom pada tabel.

\[ P(X=Olahraga) = \frac{a+b}{n} \]

2.4 Conditional Probability

Distribusi kondisional adalah distribusi peluang dari satu variabel dengan syarat bahwa variabel lainnya memiliki kategori tertentu. Distribusi ini diperoleh dengan membagi frekuensi pada suatu sel dengan total frekuensi pada baris atau kolom yang bersesuaian.

\[ P(Penyakit jantung|Olahraga) = \frac{P(A,B)}{P(X=Olahraga)} = \frac{a}{a+b} \]

3. Ukuran Asosiasi

Ukuran asosiasi adalah ukuran statistik yang digunakan untuk menilai kekuatan hubungan atau keterkaitan antara dua variabel kategori dalam suatu tabel kontingensi.

3.1 Odds

Odds adalah ukuran yang menyatakan perbandingan antara peluang suatu kejadian terjadi dengan peluang kejadian tersebut tidak terjadi.

Jika peluang suatu kejadian dinyatakan sebagai:

\[ P = \frac{a}{a+b} \]

maka peluang tidak terjadinya kejadian adalah:

\[ 1 - P = \frac{b}{a+b} \]

Odds didefinisikan sebagai perbandingan antara peluang kejadian dengan peluang tidak terjadinya kejadian, yaitu:

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

Dengan mensubstitusikan nilai peluang ke dalam rumus odds diperoleh:

\[ Odds = \frac{\frac{a}{a+b}}{\frac{b}{a+b}} = \frac{a}{b} \] Interpretasi:

  • OR = 1 : tidak ada asosiasi
  • OR > 1 : meningkatkan risiko
  • OR < 1 : bersifat protektif

3.2 Odds Ratio

Odds ratio (OR) adalah ukuran yang digunakan untuk membandingkan odds dari suatu kejadian antara dua kelompok yang berbeda.

Odds Ratio (OR) adalah ukuran asosiasi yang membandingkan odds antara dua kelompok. Jika odds pada kelompok pertama adalah:

\[ Odds_1 = \frac{a}{b} \]

dan odds pada kelompok kedua adalah:

\[ Odds_2 = \frac{c}{d} \]

maka Odds Ratio didefinisikan sebagai:

\[ OR = \frac{Odds_1}{Odds_2} \]

Sehingga diperoleh:

\[ OR = \frac{a/b}{c/d} = \frac{ad}{bc} \]

Interpretasi:

  • OR = 1 : tidak ada asosiasi
  • OR > 1 : meningkatkan risiko
  • OR < 1 : bersifat protektif

3.3 Relative Risk

Relative Risk (RR) atau risiko relatif adalah ukuran asosiasi yang digunakan untuk membandingkan probabilitas terjadinya suatu kejadian pada kelompok yang terpapar dengan probabilitas kejadian pada kelompok yang tidak terpapar. Relative risk sering digunakan dalam penelitian epidemiologi, khususnya pada studi kohort, untuk mengetahui apakah suatu paparan meningkatkan atau menurunkan risiko terjadinya suatu kejadian atau penyakit.

Relative Risk (RR) adalah ukuran asosiasi yang membandingkan risiko kejadian antara dua kelompok.

Risiko pada kelompok pertama adalah:

\[ P_1 = \frac{a}{a+b} \]

Risiko pada kelompok kedua adalah:

\[ P_0 = \frac{c}{c+d} \]

Relative Risk didefinisikan sebagai:

\[ RR = \frac{P_1}{P_0} \]

Sehingga diperoleh:

\[ RR = \frac{\frac{a}{a+b}}{\frac{c}{c+d}} \]

4. Contoh Perhitungan Manual

4.1 Tabel Kontingensi Kasus hubungan olahraga dengan penyakit jantung.

Penyakit jantung Tidak Total
Olahraga 20 80 100
Tidak Olahraga 40 60 100

a = 20 b = 80 c = 40 d = 60 n = 200

4.2 Peluang Bersyarat

\[ P(Penyakit jantung|Tidak Olahraga) = \frac{40}{100} = 0.4 \] Artinya, dari seluruh individu yang tidak berolahraga, sekitar 40% di antaranya mengalami penyakit jantung.

\[ P(Penyakit jantung|Olahraga) = \frac{20}{100} = 0.2 \] Artinya, dari seluruh individu yang berolahraga, sekitar 20% di antaranya mengalami penyakit jantung.

4.3 Odds

\[ Odds_{TidakOlahraga} = \frac{40}{60} = 0,67 \] Nilai 0,67 menunjukkan bahwa pada kelompok yang tidak berolahraga, perbandingan antara orang yang mengalami penyakit jantung dengan yang tidak mengalami penyakit jantung adalah sekitar 0,67 banding 1. Artinya, peluang mengalami penyakit jantung pada kelompok yang tidak berolahraga sekitar 0,67 kali dibandingkan peluang tidak mengalami penyakit jantung.

\[ Odds_{Olahraga} = \frac{20}{80} = 0,25 \] Nilai 0,25 menunjukkan bahwa pada kelompok yang berolahraga, perbandingan antara orang yang mengalami penyakit jantung dengan yang tidak mengalami penyakit jantung adalah sekitar 0,25 banding 1. Artinya, peluang mengalami penyakit jantung pada kelompok yang berolahraga adalah 0,25 kali dibandingkan peluang tidak mengalami penyakit jantung.

4.4 Odds Ratio

\[ OR = \frac{40 \times 80}{60 \times 20} = 2.67 \] Nilai OR sebesar 2,67 menunjukkan bahwa odds terjadinya penyakit jantung pada individu yang tidak berolahraga sekitar 2,67 kali lebih besar dibandingkan dengan individu yang berolahraga. Dengan kata lain, tidak berolahraga dapat diinterpretasikan sebagai faktor risiko yang meningkatkan kemungkinan terjadinya penyakit jantung.

Karena nilai OR > 1, maka dapat disimpulkan bahwa terdapat asosiasi positif antara tidak berolahraga dan kejadian penyakit jantung, yang berarti kelompok yang tidak berolahraga memiliki peluang lebih besar mengalami penyakit jantung dibandingkan kelompok yang berolahraga.

5. Analisis Menggunakan R

5.1 Membuat Tabel Kontingensi

data <- matrix(c(20,80,40,60),
               nrow = 2,
               byrow = TRUE)

colnames(data) <- c("Penyakit_jantung","Tidak_sakit_jantung")
rownames(data) <- c("Olahraga","Tidak_Olahraga")

data
##                Penyakit_jantung Tidak_sakit_jantung
## Olahraga                     20                  80
## Tidak_Olahraga               40                  60

5.2 Odds Ratio

OR <- (data[2,1] * data[1,2]) / (data[2,2] * data[1,1])
OR
## [1] 2.666667

5.3 Uji Chi Square

uji_chisq <- chisq.test(data)
uji_chisq
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data
## X-squared = 8.5952, df = 1, p-value = 0.00337

6. Interpretasi

6.1 Visualisasi

Barplot

barplot(data,
        beside = TRUE,
        col = c("pink","lightblue"),
        main = "Perbandingan Kasus Penyakit Jantung Berdasarkan Status Olahraga",
        xlab = "Status Olahraga",
        ylab = "Jumlah Individu",
        legend.text = colnames(data),
        args.legend = list(x="topright"),
        ylim = c(0, max(data) + 20))

Interpretasi grafik:

Dari grafik terlihat bahwa

  • Pada kelompok berolahraga, jumlah individu yang mengalami penyakit jantung (20) lebih sedikit dibandingkan yang tidak mengalami penyakit jantung (80).

  • Pada kelompok tidak berolahraga, jumlah individu yang mengalami penyakit jantung (40) lebih banyak dibandingkan kelompok yang berolahraga.

Hal ini menunjukkan bahwa aktivitas olahraga kemungkinan berkaitan dengan penurunan risiko penyakit jantung.

6.2 Interpretasi Statistik

Secara statistik, nilai odds ratio sebesar 2,67 menunjukkan bahwa odds terjadinya penyakit jantung pada individu yang tidak berolahraga adalah sekitar 2,67 kali odds pada individu yang berolahraga. Karena nilai OR > 1, maka terdapat asosiasi positif antara tidak berolahraga dan kejadian penyakit jantung. Hal ini menunjukkan bahwa status tidak berolahraga berkaitan dengan peningkatan peluang terjadinya penyakit jantung dibandingkan dengan kelompok yang berolahraga.

6.3 Interpretasi Substantif dalam Konteks Kasus

Dalam konteks kasus ini, hasil tersebut dapat diartikan bahwa individu yang tidak melakukan olahraga memiliki kecenderungan lebih besar mengalami penyakit jantung dibandingkan individu yang melakukan olahraga. Dengan kata lain, aktivitas olahraga berpotensi menjadi faktor yang berhubungan dengan penurunan risiko penyakit jantung.

Hasil ini menggambarkan bahwa olahraga dapat berperan sebagai faktor protektif terhadap penyakit jantung, karena kelompok yang berolahraga memiliki peluang lebih kecil untuk mengalami penyakit tersebut dibandingkan kelompok yang tidak berolahraga.

7. Referensi

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

McHugh, M. L. (2013). The chi-square test of independence. Biochemia Medica, 23(2), 143–149. https://doi.org/10.11613/BM.2013.018

Moore, D. S., McCabe, G. P., & Craig, B. A. (2017). Introduction to the Practice of Statistics (9th ed.). W. H. Freeman.


INFERENSI TABEL KONTINGENSI DUA ARAH (Contoh Kasus)

Kasus 1 : (Tabel Kontingensi 2x2)

1. Data dan tabel kontingensi

# Input data
data_matrix <- matrix(
  c(688, 650, 21, 59),
  nrow = 2,
  byrow = TRUE,
  dimnames = list(
    "Status Merokok" = c("Smoker", "Non-Smoker"),
    "Status Kanker"  = c("Cancer (+)", "Control (-)")
  )
)

# Tampilkan tabel
knitr::kable(
  addmargins(data_matrix),
  caption = "Tabel Kontingensi 2×2: Merokok dan Kanker Paru",
  align = "c"
)
Tabel Kontingensi 2×2: Merokok dan Kanker Paru
Cancer (+) Control (-) Sum
Smoker 688 650 1338
Non-Smoker 21 59 80
Sum 709 709 1418

Keterangan sel:

Sel Notasi Nilai
Smoker & Cancer (+) a 688
Smoker & Control (-) b 650
Non-Smoker & Cancer (+) c 21
Non-Smoker & Control (-) d 59
Total n 1418

Tabel keterangan sel menunjukkan distribusi data dalam bentuk notasi a, b, c, dan d yang merepresentasikan kombinasi antara status merokok dan kejadian kanker paru. Nilai a (688) menunjukkan jumlah individu yang merokok dan mengalami kanker paru, sedangkan b (650) menunjukkan perokok yang tidak mengalami kanker. Pada kelompok non-perokok, c (21) merupakan jumlah yang mengalami kanker dan d (59) yang tidak.Terlihat bahwa jumlah kasus kanker paru lebih banyak terjadi pada kelompok perokok dibandingkan non-perokok, yang mengindikasikan adanya hubungan antara kedua variabel tersebut.

2. Estimasi Titik Proporsi Kejadian Kanker Paru Pada Kelompok Smoker dan Non-Smoker

2.1 Proporsi Kejadian Kanker Paru per Kelompok

\[\hat{p}_{\text{Smoker}} = \frac{a}{a+b} = \frac{688}{1338}, \quad \hat{p}_{\text{Non-Smoker}} = \frac{c}{c+d} = \frac{21}{80}\]

a <- 688; b <- 650; c <- 21; d <- 59
n1 <- a + b  # total smoker
n2 <- c + d  # total non-smoker
N  <- a + b + c + d

p1 <- a / n1
p2 <- c / n2

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

Interpretasi: Proporsi kejadian kanker paru pada kelompok perokok sebesar 51.42%, sedangkan pada kelompok non-perokok sebesar 26.25%. Hal ini menunjukkan bahwa kejadian kanker paru lebih tinggi pada individu yang merokok dibandingkan yang tidak merokok. Perbedaan proporsi yang cukup besar ini mengindikasikan adanya hubungan antara kebiasaan merokok dengan peningkatan risiko kanker paru, di mana perokok memiliki kemungkinan sekitar dua kali lebih besar untuk mengalami kanker paru dibandingkan non-perokok.

3. Interval Kepercayaan 95% untuk proporsi masing-masing kelompok, RD, RR, dan OR

3.1 IC untuk Proporsi Masing-Masing Kelompok (Metode Wilson)

\[\text{IC}_{95\%}(\hat{p}) = \hat{p} \pm z_{0.025} \sqrt{\frac{\hat{p}(1-\hat{p})}{n}}\]

# IC Smoker
ic_smoker <- prop.test(a, n1, conf.level = 0.95)$conf.int

# IC Non-Smoker
ic_nonsmoker <- prop.test(c, n2, conf.level = 0.95)$conf.int

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

Interpretasi: Hasil analisis menunjukkan bahwa proporsi kejadian kanker paru pada kelompok smoker sebesar 0,5142 (51,42%), sedangkan pada kelompok non-smoker sebesar 0,2625 (26,25%). Interval kepercayaan 95% untuk proporsi pada kelompok smoker berada pada rentang 0,487 hingga 0,5413, yang berarti dengan tingkat kepercayaan 95% proporsi sebenarnya kejadian kanker paru pada populasi perokok diperkirakan berada antara 48,7% hingga 54,13%. Sementara itu, interval kepercayaan 95% pada kelompok non-smoker berada pada rentang 0,1733 hingga 0,3748, sehingga proporsi sebenarnya kejadian kanker paru pada populasi non-perokok diperkirakan berada antara 17,33% hingga 37,48%. Perbedaan nilai proporsi ini menunjukkan bahwa kejadian kanker paru cenderung lebih tinggi pada kelompok perokok dibandingkan dengan kelompok non-perokok.

3.2 Risk Difference (RD)

\[RD = \hat{p}_1 - \hat{p}_2, \quad \text{SE}_{RD} = \sqrt{\frac{\hat{p}_1(1-\hat{p}_1)}{n_1} + \frac{\hat{p}_2(1-\hat{p}_2)}{n_2}}\]

RD <- p1 - p2
SE_RD <- sqrt(p1*(1-p1)/n1 + p2*(1-p2)/n2)
IC_RD_low  <- RD - 1.96 * SE_RD
IC_RD_high <- RD + 1.96 * SE_RD

cat("Risk Difference (RD):", round(RD, 4), "\n")
## Risk Difference (RD): 0.2517
cat("IC 95% RD: [", round(IC_RD_low,4), ",", round(IC_RD_high,4), "]\n")
## IC 95% RD: [ 0.1516 , 0.3518 ]

Interpretasi: Hasil analisis menunjukkan bahwa proporsi kejadian kanker paru pada kelompok smoker sebesar 0,5142 (51,42%), sedangkan pada kelompok non-smoker sebesar 0,2625 (26,25%). Selisih risiko antara kedua kelompok yang diukur menggunakan Risk Difference (RD) adalah sebesar 0,2517, yang berarti terdapat peningkatan risiko kejadian kanker paru sekitar 25,17% lebih tinggi pada kelompok perokok dibandingkan non-perokok. Interval kepercayaan 95% untuk nilai RD berada pada rentang 0,1516 hingga 0,3518, yang menunjukkan bahwa dengan tingkat kepercayaan 95% selisih risiko sebenarnya di populasi diperkirakan berada antara 15,16% hingga 35,18%. Karena seluruh rentang interval kepercayaan bernilai positif, hal ini mengindikasikan bahwa risiko kanker paru secara konsisten lebih tinggi pada kelompok perokok dibandingkan non-perokok.

3.3 Risk Ratio / Relative Risk (RR)

\[RR = \frac{\hat{p}_1}{\hat{p}_2}, \quad \ln(RR) \pm 1.96 \cdot \text{SE}_{\ln RR}\]

data_matrix <- matrix(c(688,650,21,59), nrow=2, byrow=TRUE)

rr_result <- epitools::riskratio(data_matrix, method="wald", rev="columns")

rr_result$measure
##           risk ratio with 95% C.I.
## Predictor   estimate    lower   upper
##   Exposed1 1.0000000       NA      NA
##   Exposed2 0.5105015 0.352278 0.73979

Interpretasi: Hasil analisis Risk Ratio (RR) menunjukkan bahwa nilai estimasi untuk kelompok Exposed2 adalah 0,5105 dengan interval kepercayaan 95% sebesar 0,3523 hingga 0,7398. Nilai RR yang lebih kecil dari 1 menunjukkan bahwa risiko kejadian kanker paru pada kelompok non-smoker sekitar 0,51 kali dibandingkan dengan kelompok smoker, atau dengan kata lain kelompok non-smoker memiliki risiko yang lebih rendah mengalami kanker paru dibandingkan kelompok perokok. Selain itu, karena seluruh rentang interval kepercayaan 95% berada di bawah 1, hal ini menunjukkan bahwa perbedaan risiko tersebut konsisten dan mengindikasikan adanya hubungan antara status merokok dan kejadian kanker paru.

3.4 Odds Ratio (OR)

\[OR = \frac{a \cdot d}{b \cdot c}, \quad \ln(OR) \pm 1.96 \cdot \text{SE}_{\ln OR}\]

or_result <- epitools::oddsratio(data_matrix, method = "wald")
print(or_result$measure)
##           odds ratio with 95% C.I.
## Predictor  estimate    lower    upper
##   Exposed1 1.000000       NA       NA
##   Exposed2 2.973773 1.786737 4.949427

Interpretasi: Hasil analisis menunjukkan bahwa proporsi kanker pada perokok (51,42%) lebih tinggi dibandingkan non-perokok (26,25%). Nilai Risk Difference sebesar 0,2517 (CI 95%: 0,1516–0,3518) menandakan adanya peningkatan risiko sekitar 25% pada perokok dan signifikan secara statistik. Selain itu, Risk Ratio menunjukkan bahwa perokok memiliki risiko hampir 2 kali lebih besar terkena kanker, sedangkan Odds Ratio sebesar 2,97 (CI 95%: 1,79–4,95) menunjukkan bahwa peluang perokok untuk mengalami kanker hampir 3 kali lebih tinggi dibandingkan non-perokok. Secara keseluruhan, merokok berhubungan signifikan dengan peningkatan risiko kanker.

4. Uji Dua Proporsi

4.1 Hipotesis

\[H_0: p_1 = p_2 \quad \text{vs} \quad H_1: p_1 \neq p_2\]

4.2 Statistik Uji

\[z = \frac{\hat{p}_1 - \hat{p}_2}{\sqrt{\hat{p}(1-\hat{p})\left(\frac{1}{n_1}+\frac{1}{n_2}\right)}}, \quad \hat{p} = \frac{a+c}{N}\]

uji2prop <- prop.test(
  x = c(a, c),
  n = c(n1, n2),
  alternative = "two.sided",
  correct = FALSE
)
print(uji2prop)
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  c(a, c) out of c(n1, n2)
## 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 = 1.22e-05 < 0.05 → Tolak H₀

Interpretasi: Terdapat perbedaan proporsi kejadian kanker yang signifikan antara kelompok perokok dan non-perokok. Secara interpretatif, proporsi kanker pada perokok (0,5142) lebih tinggi dibandingkan non-perokok (0,2625), dengan selisih proporsi yang berada pada interval kepercayaan 95% sebesar [0,1516 ; 0,3518]. Dengan demikian, dapat disimpulkan bahwa merokok berhubungan signifikan dengan peningkatan kejadian kanker.

5. Uji Chi-Square Independensi

5.1 Hipotesis

\[H_0: \text{Status merokok dan kanker paru independen} \quad \text{vs} \quad H_1: \text{Tidak independen}\]

5.2 Statistik Uji

\[\chi^2 = \sum \frac{(O_{ij} - E_{ij})^2}{E_{ij}}, \quad E_{ij} = \frac{n_{i\cdot} \cdot n_{\cdot j}}{n}\]

chi_result <- chisq.test(data_matrix, correct = FALSE)
print(chi_result)
## 
##  Pearson's Chi-squared test
## 
## data:  data_matrix
## X-squared = 19.129, df = 1, p-value = 1.222e-05
# Frekuensi yang diharapkan
cat("\nFrekuensi yang Diharapkan (E_ij):\n")
## 
## Frekuensi yang Diharapkan (E_ij):
print(round(chi_result$expected, 2))
##      [,1] [,2]
## [1,]  669  669
## [2,]   40   40
# Residual standar
cat("\nResidual Pearson:\n")
## 
## Residual Pearson:
print(round(chi_result$residuals, 3))
##        [,1]   [,2]
## [1,]  0.735 -0.735
## [2,] -3.004  3.004

Keputusan: p-value = 1.22e-05 < 0.05 → Tolak H₀

Interpretasi: Terdapat hubungan yang signifikan antara status merokok dan kejadian kanker. Frekuensi yang diharapkan (Eᵢⱼ) menunjukkan distribusi yang seimbang jika tidak ada hubungan, namun residual Pearson mengindikasikan adanya penyimpangan, terutama pada sel dengan nilai residual ±3,004 yang tergolong besar. Ini berarti terdapat perbedaan nyata antara frekuensi yang diamati dan yang diharapkan, sehingga memperkuat kesimpulan bahwa kejadian kanker tidak independen terhadap status merokok, di mana perokok cenderung memiliki kejadian kanker yang lebih tinggi dibandingkan non-perokok.

6. Uji Likelihood Ratio (G²)

6.1 Hipotesis

Sama dengan uji Chi-Square: \(H_0\) independensi vs \(H_1\) asosiasi.

6.2 Statistik Uji

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

# Hitung G^2 secara manual
O <- as.vector(data_matrix)
E <- as.vector(chi_result$expected)
G2 <- 2 * sum(O * log(O / E))
df_g2 <- (nrow(data_matrix) - 1) * (ncol(data_matrix) - 1)
pval_g2 <- pchisq(G2, df = df_g2, lower.tail = FALSE)

cat("Statistik G²  :", round(G2, 4), "\n")
## Statistik G²  : 19.878
cat("Derajat bebas :", df_g2, "\n")
## Derajat bebas : 1
cat("p-value       :", format(pval_g2, scientific=TRUE, digits=3), "\n")
## p-value       : 8.25e-06

Keputusan: p-value = 8.25e-06 < 0.05 → Tolak H₀

Interpretasi: Uji likelihood ratio menunjukkan terdapat hubungan yang signifikan antara status merokok dan kejadian kanker. Dengan demikian, kejadian kanker tidak bersifat independen terhadap kebiasaan merokok, di mana individu yang merokok cenderung memiliki risiko kanker yang lebih tinggi dibandingkan yang tidak merokok.

7. Fisher Exact Test

7.1 Hipotesis

\[H_0: OR = 1 \quad \text{vs} \quad H_1: OR \neq 1\]

7.2 Dasar Inferensi

Fisher Exact Test menghitung probabilitas eksak menggunakan distribusi hipergeometrik, tanpa asumsi distribusi asimptotik. Cocok untuk sel dengan frekuensi kecil.

fisher_result <- fisher.test(data_matrix, alternative = "two.sided")
print(fisher_result)
## 
##  Fisher's Exact Test for Count Data
## 
## data:  data_matrix
## 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 = 1.48e-05 < 0.05 → Tolak H₀

Interpretasi: Fisher Exact Test menunjukkan terdapat hubungan yang signifikan antara status merokok dan kejadian kanker. Nilai odds ratio sebesar 2,97 dengan interval kepercayaan 95% [1,76 ; 5,21] mengindikasikan bahwa perokok memiliki peluang hampir 3 kali lebih besar untuk mengalami kanker dibandingkan non-perokok, dan karena interval kepercayaan tidak mencakup nilai 1, hasil ini signifikan secara statistik.

8. Perbandingan Hasil Uji (Butir 4–7)

hasil <- data.frame(
  Uji = c("Uji Dua Proporsi", "Chi-Square", "Likelihood Ratio (G²)", "Fisher Exact Test"),
  Hipotesis_H0 = c(
    "p1 = p2",
    "Independen",
    "Independen",
    "OR = 1"
  ),
  Statistik_Uji = c(
    paste0("z = ", round(sqrt(uji2prop$statistic), 3)),
    paste0("χ² = ", round(chi_result$statistic, 3)),
    paste0("G² = ", round(G2, 3)),
    paste0("OR = ", round(fisher_result$estimate, 3))
  ),
  p_value = c(
    format(uji2prop$p.value, scientific=TRUE, digits=3),
    format(chi_result$p.value, scientific=TRUE, digits=3),
    format(pval_g2, scientific=TRUE, digits=3),
    format(fisher_result$p.value, scientific=TRUE, digits=3)
  ),
  Keputusan = rep("Tolak H₀", 4),
  Interpretasi = rep("Terdapat asosiasi signifikan", 4)
)

knitr::kable(hasil, caption = "Perbandingan Hasil Keempat Uji Statistik", align = "l")
Perbandingan Hasil Keempat Uji Statistik
Uji Hipotesis_H0 Statistik_Uji p_value Keputusan Interpretasi
Uji Dua Proporsi p1 = p2 z = 4.374 1.22e-05 Tolak H₀ Terdapat asosiasi signifikan
Chi-Square Independen χ² = 19.129 1.22e-05 Tolak H₀ Terdapat asosiasi signifikan
Likelihood Ratio (G²) Independen G² = 19.878 8.25e-06 Tolak H₀ Terdapat asosiasi signifikan
Fisher Exact Test OR = 1 OR = 2.972 1.48e-05 Tolak H₀ Terdapat asosiasi signifikan

Perbandingan:

  • Hipotesis: Keempat uji menguji ada/tidaknya asosiasi antara merokok dan kanker paru, dengan formulasi yang sedikit berbeda (proporsi, independensi, atau odds ratio).
  • Statistik uji: Uji dua proporsi dan chi-square menghasilkan nilai yang ekuivalen (χ² = z²). G² sedikit berbeda karena menggunakan log-likelihood. Fisher menggunakan probabilitas hipergeometrik.
  • p-value: Keempat uji menghasilkan p-value yang sangat kecil (<< 0.05), konsisten satu sama lain.
  • Keputusan: Semua uji menolak H₀ pada α = 0.05.
  • Interpretasi substantif: Seluruh pendekatan inferensi sepakat bahwa terdapat hubungan yang bermakna secara statistik antara kebiasaan merokok dan kejadian kanker paru.

9. Visualisasi

par(mfrow = c(1, 3))

# 1. Mosaic Plot
mosaicplot(
  data_matrix,
  main = "Mosaic Plot: Merokok vs Kanker Paru",
  color = c("#E74C3C", "#3498DB"),
  xlab = "Status Merokok",
  ylab = "Status Kanker",
  las = 1
)

# 2. Grafik Proporsi
proporsi_df <- data.frame(
  Kelompok = c("Smoker", "Non-Smoker"),
  Proporsi  = c(p1, p2),
  Lower = c(ic_smoker[1], ic_nonsmoker[1]),
  Upper = c(ic_smoker[2], ic_nonsmoker[2])
)

barplot_pos <- barplot(
  proporsi_df$Proporsi,
  names.arg = proporsi_df$Kelompok,
  col = c("#E74C3C", "#3498DB"),
  ylim = c(0, 0.8),
  main = "Proporsi Kanker Paru\nper Kelompok (±95% CI)",
  ylab = "Proporsi",
  las = 1
)
arrows(
  barplot_pos, proporsi_df$Lower,
  barplot_pos, proporsi_df$Upper,
  angle = 90, code = 3, length = 0.1
)

# 3. Plot Residual Pearson
residuals_mat <- chi_result$residuals
barplot(
  t(residuals_mat),
  beside = TRUE,
  col = c("#E74C3C", "#3498DB"),
  main = "Residual Pearson\n(Chi-Square)",
  ylab = "Residual",
  legend.text = c("Cancer (+)", "Control (-)"),
  args.legend = list(x = "topright", cex = 0.8),
  las = 1
)
abline(h = c(-1.96, 1.96), lty = 2, col = "gray50")

par(mfrow = c(1, 1))

Interpretasi visualisasi:

  • Mosaic Plot: Luas area “Smoker–Cancer(+)” jauh lebih besar dari yang diharapkan di bawah independensi, menunjukkan asosiasi positif yang kuat.
  • Grafik Proporsi: IC 95% kedua kelompok tidak saling tumpang tindih, mengonfirmasi perbedaan proporsi yang signifikan.
  • Plot Residual: Residual Pearson untuk sel Smoker–Cancer(+) jauh melampaui batas ±1.96, menunjukkan sel tersebut berkontribusi paling besar pada statistik chi-square.

10. Kesimpulan Akhir

Berdasarkan seluruh analisis inferensi yang dilakukan:

  1. Proporsi: Proporsi kanker paru pada perokok (≈51.4%) jauh lebih tinggi dibandingkan bukan perokok (≈26.25%).

  2. Ukuran asosiasi:

    • Risk Difference (RD): Perokok memiliki risiko absolut lebih tinggi sebesar ≈25% dibandingkan bukan perokok.
    • Risk Ratio (RR): Perokok berisiko ≈2× lebih besar untuk terkena kanker paru.
    • Odds Ratio (OR): Odds kanker paru pada perokok ≈3× lebih besar dibandingkan bukan perokok, dan interval kepercayaan 95% tidak mencakup nilai 1.
  3. Uji statistik (butir 4–7): Keempat metode uji—uji dua proporsi, chi-square, likelihood ratio (G²), dan Fisher exact test—seluruhnya menghasilkan p-value yang sangat kecil (< 0.001) dan secara konsisten menolak hipotesis nol pada tingkat signifikansi α = 0.05.

  4. Kesimpulan umum: Terdapat hubungan yang signifikan secara statistik antara kebiasaan merokok dan kejadian kanker paru. Temuan ini konsisten di seluruh metode inferensi yang digunakan. Perokok memiliki risiko dan odds yang jauh lebih tinggi untuk menderita kanker paru dibandingkan bukan perokok, yang mendukung konsensus ilmiah tentang bahaya merokok sebagai faktor risiko utama kanker paru.


Kasus 2 : (Tabel Kontingensi 2x3)

1. Data dan tabel kontingensi

Data Mentah

Gender Democrat Republican Independent Total
Female 495 272 590 1357
Male 330 265 498 1093
Total 825 537 1088 2450
# Input data
data_partai <- matrix(
  c(495, 272, 590,
    330, 265, 498),
  nrow = 2,
  byrow = TRUE,
  dimnames = list(
    "Gender" = c("Female", "Male"),
    "Partai" = c("Democrat", "Republican", "Independent")
  )
)

# Tampilkan dengan margin total
knitr::kable(
  addmargins(data_partai),
  caption = "Tabel Kontingensi 2×3: Gender dan Identifikasi Partai Politik",
  align = "c"
)
Tabel Kontingensi 2×3: Gender dan Identifikasi Partai Politik
Democrat Republican Independent Sum
Female 495 272 590 1357
Male 330 265 498 1093
Sum 825 537 1088 2450

Keterangan notasi:

Sel Nilai
Female–Democrat 495
Female–Republican 272
Female–Independent 590
Male–Democrat 330
Male–Republican 265
Male–Independent 498
Total (n) 2450

2. Frekuensi Harapan

Frekuensi harapan untuk setiap sel dihitung dengan:

\[E_{ij} = \frac{n_{i\cdot} \times n_{\cdot j}}{n}\]

di mana:

  • \(n_{i\cdot}\) = total baris ke-\(i\)
  • \(n_{\cdot j}\) = total kolom ke-\(j\)
  • \(n\) = total keseluruhan (2450)

2.1 Perhitungan Manual

Total baris: Female = 1357, Male = 1093
Total kolom: Democrat = 825, Republican = 537, Independent = 1088

\[E_{\text{Female,Dem}} = \frac{1357 \times 825}{2450} = \frac{1119525}{2450} = 456{,}95\]

\[E_{\text{Female,Rep}} = \frac{1357 \times 537}{2450} = \frac{728709}{2450} = 297{,}43\]

\[E_{\text{Female,Ind}} = \frac{1357 \times 1088}{2450} = \frac{1476416}{2450} = 602{,}62\]

\[E_{\text{Male,Dem}} = \frac{1093 \times 825}{2450} = \frac{901725}{2450} = 368{,}05\]

\[E_{\text{Male,Rep}} = \frac{1093 \times 537}{2450} = \frac{586941}{2450} = 239{,}57\]

\[E_{\text{Male,Ind}} = \frac{1093 \times 1088}{2450} = \frac{1189184}{2450} = 485{,}38\]

2.2 Verifikasi dengan R

chi_partai <- chisq.test(data_partai, correct = FALSE)

cat("Frekuensi yang Diamati (O_ij):\n")
## Frekuensi yang Diamati (O_ij):
knitr::kable(data_partai, caption = "Frekuensi Diamati (O_ij)")
Frekuensi Diamati (O_ij)
Democrat Republican Independent
Female 495 272 590
Male 330 265 498
knitr::kable(
  round(chi_partai$expected, 3),
  caption = "Frekuensi Harapan (E_ij)"
)
Frekuensi Harapan (E_ij)
Democrat Republican Independent
Female 456.949 297.432 602.619
Male 368.051 239.568 485.381

Interpretasi: Semua sel memiliki frekuensi harapan > 5 (syarat uji chi-square terpenuhi). Tidak ada sel yang memerlukan penggabungan kategori.

3. Uji Chi-Square Independensi

3.1 Hipotesis

\[H_0: \text{Gender dan identifikasi partai politik saling independen}\] \[H_1: \text{Gender dan identifikasi partai politik tidak independen (ada asosiasi)}\]

3.2 Statistik Uji

\[\chi^2 = \sum_{i=1}^{r}\sum_{j=1}^{c} \frac{(O_{ij} - E_{ij})^2}{E_{ij}}\]

Derajat bebas:

\[df = (r - 1)(c - 1) = (2 - 1)(3 - 1) = 2\]

3.3 Perhitungan Komponen

\[\frac{(495 - 456{,}95)^2}{456{,}95} + \frac{(272 - 297{,}43)^2}{297{,}43} + \frac{(590 - 602{,}62)^2}{602{,}62} + \frac{(330 - 368{,}05)^2}{368{,}05} + \frac{(265 - 239{,}57)^2}{239{,}57} + \frac{(498 - 485{,}38)^2}{485{,}38}\]

O <- as.vector(data_partai)
E <- as.vector(chi_partai$expected)

komponen <- (O - E)^2 / E
df_komponen <- data.frame(
  Sel = c("Female-Dem", "Male-Dem",
          "Female-Rep", "Male-Rep",
          "Female-Ind", "Male-Ind"),
  O   = O,
  E   = round(E, 3),
  `(O-E)^2/E` = round(komponen, 4)
)

knitr::kable(
  df_komponen,
  caption = "Komponen Chi-Square per Sel",
  align = "c"
)
Komponen Chi-Square per Sel
Sel O E X.O.E..2.E
Female-Dem 495 456.949 3.1686
Male-Dem 330 368.051 3.9339
Female-Rep 272 297.432 2.1746
Male-Rep 265 239.568 2.6999
Female-Ind 590 602.619 0.2642
Male-Ind 498 485.381 0.3281
cat("\nTotal Chi-Square:", round(sum(komponen), 4), "\n")
## 
## Total Chi-Square: 12.5693

3.4 Hasil Uji R

print(chi_partai)
## 
##  Pearson's Chi-squared test
## 
## data:  data_partai
## X-squared = 12.569, df = 2, p-value = 0.001865

3.5 Keputusan dan Interpretasi

cat("Statistik chi-square:", round(chi_partai$statistic, 4), "\n")
## Statistik chi-square: 12.5693
cat("Derajat bebas       :", chi_partai$parameter, "\n")
## Derajat bebas       : 2
cat("p-value             :", format(chi_partai$p.value, scientific = TRUE, digits = 3), "\n")
## p-value             : 1.86e-03
cat("Nilai kritis (α=0.05):", round(qchisq(0.95, df = 2), 4), "\n")
## Nilai kritis (α=0.05): 5.9915

Keputusan: p-value = 1.86e-03 < 0.05 dan χ² = 12.5693 > χ²_kritis = 5.9915 → Tolak H₀

Interpretasi: Terdapat hubungan yang signifikan secara statistik antara gender dan identifikasi partai politik pada tingkat signifikansi α = 0.05.

4. Residual Pearson dan Standardized Residual

Residual Pearson:

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

Standardized Residual (Residual Terstandarisasi):

\[d_{ij} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij}(1 - p_{i\cdot})(1 - p_{\cdot j})}}\]

di mana \(p_{i\cdot} = n_{i\cdot}/n\) dan \(p_{\cdot j} = n_{\cdot j}/n\).

Nilai \(|d_{ij}| > 1{,}96\) menandakan sel berkontribusi signifikan pada α = 0.05.

4.1 Hasil R

cat("Residual Pearson (r_ij):\n")
## Residual Pearson (r_ij):
knitr::kable(
  round(chi_partai$residuals, 4),
  caption = "Residual Pearson"
)
Residual Pearson
Democrat Republican Independent
Female 1.7801 -1.4747 -0.5140
Male -1.9834 1.6431 0.5728
cat("Standardized Residual (d_ij):\n")
## Standardized Residual (d_ij):
knitr::kable(
  round(chi_partai$stdres, 4),
  caption = "Standardized Residual"
)
Standardized Residual
Democrat Republican Independent
Female 3.2724 -2.4986 -1.0322
Male -3.2724 2.4986 1.0322

4.2 Interpretasi Residual

stdres_df <- data.frame(
  Sel = c("Female–Democrat", "Female–Republican", "Female–Independent",
          "Male–Democrat",   "Male–Republican",   "Male–Independent"),
  Std_Residual = round(as.vector(t(chi_partai$stdres)), 3),
  Signifikan = ifelse(abs(as.vector(t(chi_partai$stdres))) > 1.96, "Ya (|d| > 1.96)", "Tidak"),
  Arah = ifelse(as.vector(t(chi_partai$stdres)) > 0,
                "Lebih banyak dari harapan",
                "Lebih sedikit dari harapan")
)

knitr::kable(
  stdres_df,
  caption = "Interpretasi Standardized Residual per Sel",
  align = "c"
)
Interpretasi Standardized Residual per Sel
Sel Std_Residual Signifikan Arah
Female–Democrat 3.272 Ya (|d| > 1.96) Lebih banyak dari harapan
Female–Republican -2.499 Ya (|d| > 1.96) Lebih sedikit dari harapan
Female–Independent -1.032 Tidak Lebih sedikit dari harapan
Male–Democrat -3.272 Ya (|d| > 1.96) Lebih sedikit dari harapan
Male–Republican 2.499 Ya (|d| > 1.96) Lebih banyak dari harapan
Male–Independent 1.032 Tidak Lebih banyak dari harapan

4.3 Interpretasi substantif:

  • Female–Democrat (3.27): Perempuan lebih banyak mengidentifikasi diri sebagai Democrat dari yang diharapkan. Kontribusi positif dan signifikan.
  • Male–Democrat (-3.27): Laki-laki lebih sedikit mengidentifikasi diri sebagai Democrat dari yang diharapkan. Kontribusi negatif dan signifikan.
  • Female–Republican (-2.5): Perempuan lebih sedikit memilih Republican dari yang diharapkan.
  • Male–Republican (2.5): Laki-laki lebih banyak memilih Republican dari yang diharapkan.
  • Female–Independent dan Male–Independent: Kontribusi relatif kecil (|d| < 1.96), tidak signifikan.

5. Partisi Chi-Square

5.1Konsep Partisi

Partisi chi-square memecah \(\chi^2\) keseluruhan (df = 2) menjadi dua komponen independen masing-masing berdf = 1:

  • Partisi 1: Democrat vs Republican (mengabaikan Independent)
  • Partisi 2: (Democrat + Republican) vs Independent

5.2 Partisi 1: Democrat vs Republican

\[H_0: \text{Gender tidak berhubungan dengan pilihan Democrat vs Republican}\]

data_DR <- data_partai[, c("Democrat", "Republican")]

knitr::kable(
  addmargins(data_DR),
  caption = "Partisi 1: Democrat vs Republican"
)
Partisi 1: Democrat vs Republican
Democrat Republican Sum
Female 495 272 767
Male 330 265 595
Sum 825 537 1362
chi_DR <- chisq.test(data_DR, correct = FALSE)
cat("\nChi-square:", round(chi_DR$statistic, 4), "\n")
## 
## Chi-square: 11.5545
cat("df        :", chi_DR$parameter, "\n")
## df        : 1
cat("p-value   :", format(chi_DR$p.value, scientific=TRUE, digits=3), "\n")
## p-value   : 6.76e-04

Keputusan: p-value = 6.76e-04 < 0.05 → Tolak H₀

Interpretasi: Gender berpengaruh signifikan terhadap pilihan antara Democrat dan Republican. Perempuan lebih cenderung Democrat, laki-laki lebih cenderung Republican.

5.3 Partisi 2: (Democrat + Republican) vs Independent

\[H_0: \text{Gender tidak berhubungan dengan pilihan partai vs Independent}\]

data_DRvsI <- matrix(
  c(data_partai[1,1] + data_partai[1,2], data_partai[1,3],
    data_partai[2,1] + data_partai[2,2], data_partai[2,3]),
  nrow = 2,
  byrow = TRUE,
  dimnames = list(
    c("Female", "Male"),
    c("Dem + Rep", "Independent")
  )
)

knitr::kable(
  addmargins(data_DRvsI),
  caption = "Partisi 2: (Democrat+Republican) vs Independent"
)
Partisi 2: (Democrat+Republican) vs Independent
Dem + Rep Independent Sum
Female 767 590 1357
Male 595 498 1093
Sum 1362 1088 2450
chi_DRvsI <- chisq.test(data_DRvsI, correct = FALSE)
cat("\nChi-square:", round(chi_DRvsI$statistic, 4), "\n")
## 
## Chi-square: 1.0654
cat("df        :", chi_DRvsI$parameter, "\n")
## df        : 1
cat("p-value   :", format(chi_DRvsI$p.value, scientific=TRUE, digits=3), "\n")
## p-value   : 3.02e-01

Keputusan: p-value = 3.02e-01 → Gagal Tolak H₀

Interpretasi: Gender tidak berpengaruh signifikan terhadap kecenderungan memilih partai (Democrat/Republican) vs Independent.

6. Perbandingan Hasil Partisi dengan Chi-Square Keseluruhan

tbl_partisi <- data.frame(
  Komponen = c(
    "Keseluruhan (2×3)",
    "Partisi 1: Democrat vs Republican",
    "Partisi 2: (Dem+Rep) vs Independent",
    "Jumlah Partisi 1 + 2"
  ),
  Chi_Square = c(
    round(chi_partai$statistic, 4),
    round(chi_DR$statistic, 4),
    round(chi_DRvsI$statistic, 4),
    round(chi_DR$statistic + chi_DRvsI$statistic, 4)
  ),
  df = c(2, 1, 1, 2),
  p_value = c(
    format(chi_partai$p.value, scientific=TRUE, digits=3),
    format(chi_DR$p.value, scientific=TRUE, digits=3),
    format(chi_DRvsI$p.value, scientific=TRUE, digits=3),
    "-"
  ),
  Keputusan = c(
    "Tolak H₀", "Tolak H₀",
    ifelse(chi_DRvsI$p.value < 0.05, "Tolak H₀", "Gagal Tolak H₀"),
    "-"
  )
)

knitr::kable(
  tbl_partisi,
  caption = "Perbandingan Chi-Square Keseluruhan dan Partisi",
  align = "c"
)
Perbandingan Chi-Square Keseluruhan dan Partisi
Komponen Chi_Square df p_value Keputusan
Keseluruhan (2×3) 12.5693 2 1.86e-03 Tolak H₀
Partisi 1: Democrat vs Republican 11.5545 1 6.76e-04 Tolak H₀
Partisi 2: (Dem+Rep) vs Independent 1.0654 1 3.02e-01 Gagal Tolak H₀
Jumlah Partisi 1 + 2 12.6200 2 - -

6.1 Verifikasi additivitas:

total_partisi <- chi_DR$statistic + chi_DRvsI$statistic
cat("Chi-square keseluruhan :", round(chi_partai$statistic, 4), "(df = 2)\n")
## Chi-square keseluruhan : 12.5693 (df = 2)
cat("Partisi 1              :", round(chi_DR$statistic, 4),    "(df = 1)\n")
## Partisi 1              : 11.5545 (df = 1)
cat("Partisi 2              :", round(chi_DRvsI$statistic, 4), "(df = 1)\n")
## Partisi 2              : 1.0654 (df = 1)
cat("Jumlah partisi         :", round(total_partisi, 4),       "(df = 2)\n")
## Jumlah partisi         : 12.62 (df = 2)
cat("Selisih                :", round(chi_partai$statistic - total_partisi, 4), "\n")
## Selisih                : -0.0507

6.2 Interpretasi perbandingan:

  • Jumlah χ² dari dua partisi mendekati χ² keseluruhan, memverifikasi bahwa partisi memecah variasi secara lengkap dan independen.
  • Partisi 1 (Democrat vs Republican) memiliki χ² lebih besar, menunjukkan bahwa perbedaan gender paling dominan terjadi pada dimensi Democrat vs Republican.
  • Partisi 2 ((Dem+Rep) vs Independent) memiliki χ² lebih kecil, artinya perbedaan gender dalam kecenderungan memilih partai vs Independent relatif lebih lemah.
  • Kedua partisi bersama-sama menjelaskan seluruh asosiasi dalam tabel 2×3.

7. Kategori yang Paling Berkontribusi terhadap hubungan antara Gender dan Identifiksi Partai Politik

7.1 Visualisasi

par(mfrow = c(1, 3))

# 1. Mosaic Plot
mosaicplot(
  data_partai,
  main  = "Mosaic Plot:\nGender vs Partai Politik",
  color = c("#E74C3C", "#2ECC71", "#3498DB"),
  xlab  = "Gender",
  ylab  = "Identifikasi Partai",
  las   = 1
)

# 2. Grouped Barplot Proporsi
prop_mat <- prop.table(data_partai, margin = 1)
barplot(
  t(prop_mat),
  beside    = FALSE,
  col       = c("#E74C3C", "#2ECC71", "#3498DB"),
  main      = "Proporsi Identifikasi Partai\nper Gender",
  ylab      = "Proporsi",
  legend.text = colnames(data_partai),
  args.legend = list(x = "topright", cex = 0.8),
  ylim      = c(0, 1.2),
  las       = 1
)

# 3. Heatmap Standardized Residual
stdres <- chi_partai$stdres
image(
  1:ncol(stdres), 1:nrow(stdres),
  t(stdres),
  col  = colorRampPalette(c("#3498DB", "white", "#E74C3C"))(100),
  axes = FALSE,
  main = "Heatmap Standardized Residual",
  xlab = "Partai",
  ylab = "Gender"
)
axis(1, at = 1:3, labels = colnames(stdres))
axis(2, at = 1:2, labels = rownames(stdres), las = 1)
for (i in 1:nrow(stdres)) {
  for (j in 1:ncol(stdres)) {
    text(j, i, labels = round(stdres[i,j], 2), cex = 1.3, font = 2)
  }
}
box()

par(mfrow = c(1, 1))

7.2 Rangkuman Kontribusi

stdres_vec <- round(as.vector(t(chi_partai$stdres)), 3)
pearson_vec <- round(as.vector(t(chi_partai$residuals)), 3)
kontrib_vec <- round((pearson_vec)^2, 3)

rangkuman <- data.frame(
  Sel              = c("Female–Democrat","Female–Republican","Female–Independent",
                       "Male–Democrat","Male–Republican","Male–Independent"),
  O                = as.vector(t(data_partai)),
  E                = round(as.vector(t(chi_partai$expected)), 3),
  Res_Pearson      = pearson_vec,
  Std_Residual     = stdres_vec,
  Kontribusi_X2    = kontrib_vec,
  Persen_Kontribusi = paste0(round(kontrib_vec / chi_partai$statistic * 100, 1), "%")
)

knitr::kable(
  rangkuman,
  caption = "Rangkuman Kontribusi Setiap Sel terhadap Chi-Square",
  align   = "c"
)
Rangkuman Kontribusi Setiap Sel terhadap Chi-Square
Sel O E Res_Pearson Std_Residual Kontribusi_X2 Persen_Kontribusi
Female–Democrat 495 456.949 1.780 3.272 3.168 25.2%
Female–Republican 272 297.432 -1.475 -2.499 2.176 17.3%
Female–Independent 590 602.619 -0.514 -1.032 0.264 2.1%
Male–Democrat 330 368.051 -1.983 -3.272 3.932 31.3%
Male–Republican 265 239.568 1.643 2.499 2.699 21.5%
Male–Independent 498 485.381 0.573 1.032 0.328 2.6%

7.3 Interpretasi Akhir

Berdasarkan standardized residual dan kontribusi terhadap χ²:

Kategori yang paling berkontribusi terhadap hubungan antara gender dan identifikasi partai politik adalah:

  1. Female–Democrat (stdres = 3.27) — Perempuan jauh lebih banyak memilih Democrat dari yang diharapkan. Ini adalah sel dengan kontribusi terbesar dan merupakan pola paling mencolok dalam data.

  2. Male–Democrat (stdres = -3.27) — Laki-laki jauh lebih sedikit memilih Democrat dari yang diharapkan. Merupakan bayangan cermin dari pola Female–Democrat.

  3. Female–Republican (stdres = -2.5) — Perempuan lebih sedikit mengidentifikasi diri sebagai Republican.

  4. Male–Republican (stdres = 2.5) — Laki-laki lebih banyak mengidentifikasi diri sebagai Republican.

  5. Female–Independent dan Male–Independent — Kontribusi tidak signifikan (|stdres| < 1.96), artinya distribusi gender pada Independent sesuai dengan yang diharapkan di bawah independensi.

Pola utama: Perbedaan gender paling kuat ditemukan pada dimensi Democrat vs Republican, perempuan lebih condong ke Democrat, laki-laki lebih condong ke Republican. Afiliasi terhadap Independent relatif serupa antara kedua gender.

Kesimpulan Akhir

Berdasarkan hasil seluruh analisis:

  1. Uji Chi-Square Keseluruhan: χ² = 12.5693, df = 2, p-value = 1.86e-03 → terdapat hubungan yang signifikan antara gender dan identifikasi partai politik.

  2. Frekuensi harapan seluruh sel > 5, sehingga asumsi chi-square terpenuhi.

  3. Residual: Sel Female–Democrat dan Male–Democrat memiliki standardized residual terbesar (|d| > 1.96), menjadikannya kontributor utama terhadap asosiasi.

  4. Partisi chi-square mengonfirmasi bahwa perbedaan gender paling dominan pada dimensi Democrat vs Republican (Partisi 1), sedangkan perbedaan pada dimensi partai vs Independent (Partisi 2) lebih kecil.

  5. Kesimpulan substantif: Perempuan secara signifikan lebih cenderung mengidentifikasi diri sebagai Democrat, sedangkan laki-laki lebih cenderung mengidentifikasi diri sebagai Republican. Kecenderungan terhadap Independent relatif tidak berbeda antara kedua gender.


Referensi

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

McHugh, M. L. (2013). The chi-square test of independence. Biochemia Medica, 23(2), 143–149. https://doi.org/10.11613/BM.2013.018

Moore, D. S., McCabe, G. P., & Craig, B. A. (2017). Introduction to the Practice of Statistics (9th ed.). W. H. Freeman.