1 Pendahuluan

Dalam berbagai bidang ilmu seperti kesehatan, ekonomi, dan ilmu sosial, peneliti sering berhadapan dengan variabel yang tidak dinyatakan dalam bentuk numerik melainkan dalam bentuk kategori. Variabel tersebut dikenal sebagai variabel kategorik (categorical variables). Contoh variabel kategorik antara lain jenis kelamin, status merokok, status penyakit, tingkat pendidikan, serta preferensi politik.

Berbeda dengan variabel numerik yang memiliki makna jarak atau besaran kuantitatif, variabel kategorik hanya merepresentasikan pengelompokan atau klasifikasi objek ke dalam kategori tertentu. Oleh karena itu metode analisis yang digunakan juga berbeda dengan analisis data numerik.

Salah satu pendekatan yang paling umum digunakan dalam analisis data kategori adalah tabel kontingensi (contingency table). Tabel ini digunakan untuk menggambarkan distribusi bersama dari dua variabel kategorik sehingga hubungan antar variabel dapat dianalisis.

Tujuan dari laporan ini adalah: 1. Menjelaskan konsep dasar analisis data kategori 2. Memahami struktur tabel kontingensi 3. Menghitung ukuran asosiasi pada tabel kontingensi 4. Melakukan perhitungan manual 5. Melakukan analisis menggunakan perangkat lunak R 6. Menginterpretasikan hasil analisis

2 Konsep Analisis Data Kategori

2.1 Definisi Analisis Data Kategori

Analisis data kategori adalah metode statistik yang digunakan untuk menganalisis variabel yang berbentuk kategori atau klasifikasi. Menurut Agresti (2013), analisis data kategori berfokus pada distribusi frekuensi serta hubungan antara variabel yang memiliki skala nominal atau ordinal.

Variabel kategorik tidak memiliki nilai numerik yang bermakna secara matematis, melainkan hanya menunjukkan keanggotaan suatu objek pada kategori tertentu.

Metode yang sering digunakan dalam analisis data kategori antara lain:

  • tabel kontingensi
  • uji chi-square
  • odds ratio
  • relative risk
  • regresi logistik

2.2 Karakteristik Variabel Kategori

Variabel kategori memiliki beberapa karakteristik utama:

  1. Bersifat diskrit
  2. Tidak memiliki jarak numerik yang bermakna
  3. Dianalisis menggunakan frekuensi atau proporsi

Contoh variabel kategorik:

Variabel Kategori
Jenis kelamin Laki-laki / Perempuan
Status merokok Ya / Tidak
Tingkat pendidikan SD / SMP / SMA / PT

2.3 Contoh Penerapan

Analisis data kategori digunakan dalam berbagai bidang penelitian.

Bidang kesehatan: Meneliti hubungan antara merokok dan kanker paru.

Bidang epidemiologi: Meneliti hubungan antara vaksinasi dan infeksi.

Bidang sosial: Meneliti hubungan antara tingkat pendidikan dan status pekerjaan.

3 Tabel Kontingensi

3.1 Definisi Tabel Kontingensi

Tabel kontingensi adalah tabel yang menyajikan distribusi frekuensi bersama dari dua atau lebih variabel kategorik. Tabel ini membantu peneliti memahami hubungan antara variabel tersebut.

3.2 Struktur Tabel Kontingensi

Contoh tabel kontingensi 2×2

Penyakit Tidak Penyakit Total
Terpapar a b a+b
Tidak Terpapar c d c+d
Total a+c b+d n

3.3 Joint Distribution

Distribusi bersama dinyatakan sebagai

\[ P(X=i,Y=j)=\frac{n_{ij}}{n} \]

3.4 Marginal Distribution

Distribusi marginal dinyatakan sebagai

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

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

3.5 Conditional Probability

Probabilitas bersyarat dinyatakan sebagai

\[ P(Y=j|X=i)=\frac{n_{ij}}{n_{i+}} \]

4 Ukuran Asosiasi

Ukuran asosiasi digunakan untuk mengukur kekuatan hubungan antara dua variabel kategorik.

Misalkan tabel:

Penyakit Tidak
Terpapar a b
Tidak c d

4.1 Odds

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

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

Untuk kelompok terpapar:

\[ Odds_{terpapar}=\frac{a}{b} \]

Untuk kelompok tidak terpapar:

\[ Odds_{tidak}=\frac{c}{d} \]

4.2 Odds Ratio

Odds Ratio adalah perbandingan odds antara dua kelompok.

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

atau

\[ OR=\frac{ad}{bc} \]

Interpretasi:

  • OR = 1 → tidak ada hubungan
  • OR > 1 → faktor meningkatkan risiko
  • OR < 1 → faktor bersifat protektif

4.3 Relative Risk

Relative Risk dinyatakan sebagai

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

5 Contoh Perhitungan Manual

Misalkan penelitian mengenai hubungan antara merokok dan kanker paru.

Kanker Tidak Kanker Total
Merokok 60 40 100
Tidak Merokok 20 80 100
Total 80 120 200

Total observasi

\[ n = 60 + 40 + 20 + 80 = 200 \]

Probabilitas Bersyarat

\[ P(Kanker|Merokok)=\frac{60}{100}=0.6 \]

\[ P(Kanker|Tidak)=\frac{20}{100}=0.2 \]

Odds

\[ Odds_{merokok}=\frac{60}{40}=1.5 \]

\[ Odds_{tidak}=\frac{20}{80}=0.25 \]

Odds Ratio

\[ OR=\frac{60 \times 80}{40 \times 20} = \frac{4800}{800} = 6 \]

Interpretasi: Perokok memiliki peluang sekitar 6 kali lebih besar mengalami kanker paru dibandingkan non-perokok.

Relative Risk

\[ RR = \frac{60/100}{20/100} = \frac{0.6}{0.2} = 3 \]

Interpretasi: Perokok memiliki risiko 3 kali lebih tinggi untuk terkena kanker paru dibandingkan non-perokok.

6 Analisis Menggunakan R

6.1 Membuat Tabel Kontingensi

# Membuat data tabel kontingensi
data_kanker <- matrix(c(60, 40, 20, 80), nrow = 2, byrow = TRUE)
rownames(data_kanker) <- c("Merokok", "Tidak Merokok")
colnames(data_kanker) <- c("Kanker", "Tidak Kanker")

# Menampilkan tabel
print("Tabel Kontingensi:")
## [1] "Tabel Kontingensi:"
data_kanker
##               Kanker Tidak Kanker
## Merokok           60           40
## Tidak Merokok     20           80

6.2 Menghitung Ukuran Asosiasi

# Mengambil nilai dari tabel
a <- data_kanker[1, 1]  # Merokok & Kanker
b <- data_kanker[1, 2]  # Merokok & Tidak Kanker
c <- data_kanker[2, 1]  # Tidak Merokok & Kanker
d <- data_kanker[2, 2]  # Tidak Merokok & Tidak Kanker

# Menghitung Odds Ratio
OR <- (a * d) / (b * c)
print(paste("Odds Ratio (OR):", round(OR, 3)))
## [1] "Odds Ratio (OR): 6"
# Menghitung Relative Risk
RR <- (a/(a+b)) / (c/(c+d))
print(paste("Relative Risk (RR):", round(RR, 3)))
## [1] "Relative Risk (RR): 3"
# Menghitung selang kepercayaan 95% untuk OR
SE_OR <- sqrt(1/a + 1/b + 1/c + 1/d)
CI_lower <- exp(log(OR) - 1.96 * SE_OR)
CI_upper <- exp(log(OR) + 1.96 * SE_OR)
print(paste("95% CI untuk OR:", round(CI_lower, 3), "-", round(CI_upper, 3)))
## [1] "95% CI untuk OR: 3.187 - 11.295"

6.3 Uji Chi-Square

# Melakukan uji chi-square
hasil_chi <- chisq.test(data_kanker)
print(hasil_chi)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data_kanker
## X-squared = 31.688, df = 1, p-value = 1.811e-08
# Menampilkan tabel ekspektasi
print("Tabel Ekspektasi:")
## [1] "Tabel Ekspektasi:"
round(hasil_chi$expected, 2)
##               Kanker Tidak Kanker
## Merokok           40           60
## Tidak Merokok     40           60

6.4 Visualisasi Data

# Mosaic plot
par(mfrow = c(1, 2))  # 1 baris, 2 kolom

# Mosaic plot dasar
mosaicplot(data_kanker, 
           main = "Hubungan Merokok dan Kanker\n(Mosaic Plot)",
           xlab = "Status Merokok", 
           ylab = "Status Kanker",
           color = c("lightblue", "lightcoral"),
           cex.axis = 0.8)

# Bar plot bertumpuk
barplot(data_kanker, 
        beside = FALSE,
        main = "Distribusi Kanker berdasarkan Status Merokok",
        xlab = "Status Kanker", 
        ylab = "Jumlah",
        col = c("darkblue", "lightblue"),
        legend.text = rownames(data_kanker),
        args.legend = list(x = "topright"))

# Visualisasi dengan ggplot2
library(reshape2)

# Mengubah data ke format long untuk ggplot
data_long <- melt(data_kanker, varnames = c("Merokok", "Kanker"), value.name = "Frekuensi")

# Membuat stacked bar chart dengan proporsi
ggplot(data_long, aes(x = Kanker, y = Frekuensi, fill = Merokok)) +
  geom_bar(stat = "identity", position = "fill") +
  scale_y_continuous(labels = scales::percent) +
  labs(title = "Proporsi Kanker berdasarkan Status Merokok",
       x = "Status Kanker", 
       y = "Proporsi",
       fill = "Status Merokok") +
  theme_minimal() +
  scale_fill_manual(values = c("lightblue", "lightcoral"))

6.5 Analisis Lanjutan

# Menghitung residual dari uji chi-square
print("Residual Pearson:")
## [1] "Residual Pearson:"
round(hasil_chi$residuals, 3)
##               Kanker Tidak Kanker
## Merokok        3.162       -2.582
## Tidak Merokok -3.162        2.582
# Uji Fisher's Exact Test (alternatif ketika sampel kecil)
fisher.test(data_kanker)
## 
##  Fisher's Exact Test for Count Data
## 
## data:  data_kanker
## p-value = 1.064e-08
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##   3.055033 11.932317
## sample estimates:
## odds ratio 
##   5.940316

7 Interpretasi Hasil

Interpretasi Statistik

# Menampilkan ringkasan interpretasi
print("=== RINGKASAN HASIL ANALISIS ===")
## [1] "=== RINGKASAN HASIL ANALISIS ==="
print(paste("1. Odds Ratio (OR) =", round(OR, 3)))
## [1] "1. Odds Ratio (OR) = 6"
print(paste("   Interpretasi: Perokok memiliki peluang", round(OR, 1), 
            "kali lebih besar untuk terkena kanker paru"))
## [1] "   Interpretasi: Perokok memiliki peluang 6 kali lebih besar untuk terkena kanker paru"
print(paste("2. Relative Risk (RR) =", round(RR, 3)))
## [1] "2. Relative Risk (RR) = 3"
print(paste("   Interpretasi: Risiko kanker paru pada perokok", round(RR, 1), 
            "kali lebih tinggi"))
## [1] "   Interpretasi: Risiko kanker paru pada perokok 3 kali lebih tinggi"
print(paste("3. Uji Chi-square: X-squared =", round(hasil_chi$statistic, 3)))
## [1] "3. Uji Chi-square: X-squared = 31.688"
print(paste("   p-value =", format(hasil_chi$p.value, scientific = TRUE, digits = 3)))
## [1] "   p-value = 1.81e-08"
# Interpretasi p-value
if(hasil_chi$p.value < 0.05) {
  print("4. Kesimpulan: Terdapat hubungan yang signifikan antara merokok dan kanker paru (p < 0.05)")
} else {
  print("4. Kesimpulan: Tidak terdapat hubungan yang signifikan antara merokok dan kanker paru (p > 0.05)")
}
## [1] "4. Kesimpulan: Terdapat hubungan yang signifikan antara merokok dan kanker paru (p < 0.05)"

Interpretasi Substantif

Berdasarkan hasil analisis, ditemukan bahwa:

  1. Odds Ratio sebesar 6 menunjukkan bahwa individu yang merokok memiliki odds (peluang) 6 kali lebih tinggi untuk menderita kanker paru dibandingkan dengan individu yang tidak merokok.

  2. Relative Risk sebesar 3 menunjukkan bahwa risiko terkena kanker paru pada kelompok perokok adalah 3 kali lebih tinggi dibandingkan kelompok non-perokok.

  3. Uji Chi-square menghasilkan p-value < 0.05, yang mengindikasikan bahwa hubungan antara merokok dan kanker paru secara statistik signifikan.

Secara substantif, hasil ini menunjukkan bahwa merokok merupakan faktor risiko yang signifikan untuk kejadian kanker paru. Temuan ini konsisten dengan berbagai penelitian epidemiologi yang telah dilakukan sebelumnya.

8 Kesimpulan

Analisis data kategori merupakan metode statistik yang esensial untuk menganalisis variabel kategorik. Melalui tabel kontingensi, hubungan antara variabel kategorik dapat dipelajari secara sistematis. Ukuran asosiasi seperti odds ratio dan relative risk memberikan gambaran kuantitatif mengenai kekuatan hubungan antar variabel.

Dalam studi kasus yang dianalisis:

Kasus 1: Tabel Kontingensi 2x2 (Merokok vs Kanker Paru)

1.1 Tabel kontingensi 2x2

# Bentuk Umum Tabel Kontingensi

data <- matrix(c("a", "b", "n1.","c", "d", "n2.","n.1", "n.2", "n.."), nrow = 3, byrow = TRUE)
colnames(data) <- c("1A", "1B", "Total")
rownames(data) <- c("2A", "2B", "Total")
data
##       1A    1B    Total
## 2A    "a"   "b"   "n1."
## 2B    "c"   "d"   "n2."
## Total "n.1" "n.2" "n.."
#Tabel Kontingensi Kanker

data_kanker <- matrix(c(688, 650, 1338, 21, 59, 80, 709, 709, 1418), nrow = 3, byrow = TRUE)
rownames(data_kanker) <- c("Smoker", "Non-Smoker", "Total")
colnames(data_kanker) <- c("Cancer", "Control", "Total")

# Menampilkan tabel
print("Tabel Kontingensi:")
## [1] "Tabel Kontingensi:"
data_kanker
##            Cancer Control Total
## Smoker        688     650  1338
## Non-Smoker     21      59    80
## Total         709     709  1418

1.2 Estimasi titik proporsi kejadian kanker paru pada kelompok Smoker dan Non-Smoker.

# ================================
# 1. Ambil data dari tabel
# ================================

a <- data_kanker["Smoker", "Cancer"]      
c <- data_kanker["Non-Smoker", "Cancer"]  
b <- data_kanker["Smoker", "Control"]      
d <- data_kanker["Non-Smoker", "Control"]  
n1. <- data_kanker["Smoker", "Total"]       
n2. <- data_kanker["Non-Smoker", "Total"]   
n.1 <- data_kanker["Total", "Cancer"]       
n.2 <- data_kanker["Total", "Control"]  
n.. <- data_kanker["Total","Total"]

# ================================
# 2. Hitung proporsi masing-masing
# ================================

p_smokercancer <- a/n1.

p_nonsmokercancer <- c/n2.

cat("Proporsi Kejadian Kanker Paru pada Kelompok Smoker:", p_smokercancer, "\n")
## Proporsi Kejadian Kanker Paru pada Kelompok Smoker: 0.5142003
cat("Proporsi Kejadian Kanker Paru pada Kelompok Non-Smoker:", p_nonsmokercancer, "\n")
## Proporsi Kejadian Kanker Paru pada Kelompok Non-Smoker: 0.2625

1.3 Interval kepercayaan 95% untuk proporsi masing-masing kelompok, RD, RR, dan OR.

# ================================
# 1. CI 95% untuk proporsi
# ================================

z <- 1.96  # nilai z untuk 95%

# Smoker
SE_smokercancer <- sqrt(p_smokercancer * (1 - p_smokercancer) / n1.)
CIsmokercancer_lower <- p_smokercancer - z * SE_smokercancer
CIsmokercancer_upper <- p_smokercancer + z * SE_smokercancer

# Non-Smoker
SE_nonsmokercancer <- sqrt(p_nonsmokercancer * (1 - p_nonsmokercancer) / n2.)
CInonsmokercancer_lower <- p_nonsmokercancer - z * SE_nonsmokercancer
CInonsmokercancer_lower <- p_nonsmokercancer + z * SE_nonsmokercancer

cat("CI 95% Proporsi Smoker:", CIsmokercancer_lower, "-", CIsmokercancer_upper, "\n")
## CI 95% Proporsi Smoker: 0.4874195 - 0.5409811
cat("CI 95% Proporsi Non-Smoker:", CInonsmokercancer_lower, "-", CInonsmokercancer_lower, "\n\n")
## CI 95% Proporsi Non-Smoker: 0.3589177 - 0.3589177
# ================================
# 2. Risk Difference (RD)
# ================================

RD <- p_smokercancer - p_nonsmokercancer

SE_RD <- sqrt((p_smokercancer * (1 - p_smokercancer) / n1.) + (p_nonsmokercancer * (1 - p_nonsmokercancer) / n2.))
RD_lower <- RD - z * SE_RD
RD_upper <- RD + z * SE_RD

cat("Risk Difference (RD):", RD, "\n")
## Risk Difference (RD): 0.2517003
cat("CI 95% RD:", RD_lower, "-", RD_upper, "\n\n")
## CI 95% RD: 0.1516324 - 0.3517682
# ================================
# Risk Ratio (RR)
# ================================

RR <- p_smokercancer / p_nonsmokercancer

# pakai log
SE_log_RR <- sqrt((1 - p_smokercancer) / (n1. * p_smokercancer) + (1 - p_nonsmokercancer) / (n2. * p_nonsmokercancer))
log_RR <- log(RR)

RR_lower <- exp(log_RR - z * SE_log_RR)
RR_upper <- exp(log_RR + z * SE_log_RR)

cat("Risk Ratio (RR):", RR, "\n")
## Risk Ratio (RR): 1.958858
cat("CI 95% RR:", RR_lower, "-", RR_upper, "\n\n")
## CI 95% RR: 1.351726 - 2.838687
# ================================
# Odds Ratio (OR)
# ================================



OR <- (a * d) / (b * c)

SE_log_OR <- sqrt(1/a + 1/b + 1/c + 1/d)
log_OR <- log(OR)

OR_lower <- exp(log_OR - z * SE_log_OR)
OR_upper <- exp(log_OR + z * SE_log_OR)

cat("Odds Ratio (OR):", OR, "\n")
## Odds Ratio (OR): 2.973773
cat("CI 95% OR:", OR_lower, "-", OR_upper, "\n")
## CI 95% OR: 1.78672 - 4.949474

1.4 Uji Proporsi

# ================================
# 1. Hipotesis
# ================================

cat("Hipotesis:\n")
## Hipotesis:
cat("H0: p1 = p2 (tidak ada perbedaan proporsi)\n")
## H0: p1 = p2 (tidak ada perbedaan proporsi)
cat("H1: p1 != p2 (ada perbedaan proporsi)\n\n")
## H1: p1 != p2 (ada perbedaan proporsi)
# ================================
# 2. Taraf Signifikansi
# ================================

alpha <- 0.05
cat("Taraf Signifikansi (alpha):", alpha, "\n\n")
## Taraf Signifikansi (alpha): 0.05
# ================================
# 3. Uji Dua Proporsi
# ================================

p_gabungan <- (n.1) / (n..)
cat("Proporsi gabungan:", p_gabungan, "\n\n")
## Proporsi gabungan: 0.5
SE_gabungan <- sqrt(p_gabungan * (1 - p_gabungan) * (1/n1. + 1/n2.))
cat("Standar Error:", SE_gabungan, "\n\n")
## Standar Error: 0.05754864
Z <- (p_smokercancer - p_nonsmokercancer) / SE_gabungan
cat("Nilai Z:", Z, "\n\n")
## Nilai Z: 4.373697
p_value <- 2 * (1 - pnorm(abs(Z)))
cat("P-value:", p_value, "\n\n")
## P-value: 1.221601e-05
# ================================
# 4. Keputusan Uji
# ================================

if(p_value < alpha){
  cat("Keputusan: Tolak H0\n")
} else {
  cat("Keputusan: Gagal Tolak H0\n")
}
## Keputusan: Tolak H0
# ================================
# 5. Kesimpulan
# ================================

if(p_value < alpha){
  cat("Kesimpulan: Terdapat perbedaan proporsi kejadian kanker paru antara smoker dan non-smoker\n")
} else {
  cat("Kesimpulan: Tidak terdapat perbedaan proporsi kejadian kanker paru antara smoker dan non-smoker\n")
}
## Kesimpulan: Terdapat perbedaan proporsi kejadian kanker paru antara smoker dan non-smoker

1.5 Uji chi-square independensi

# ================================
# 1. Ambil tabel 2x2 (tanpa total)
# ================================

tabel <- data_kanker[1:2, 1:2]

cat("Tabel Kontingensi:\n")
## Tabel Kontingensi:
print(tabel)
##            Cancer Control
## Smoker        688     650
## Non-Smoker     21      59
cat("\n")
# ================================
# 2. Hipotesis
# ================================

cat("H0: Tidak ada hubungan antara status merokok dan kanker paru\n")
## H0: Tidak ada hubungan antara status merokok dan kanker paru
cat("H1: Ada hubungan antara status merokok dan kanker paru\n\n")
## H1: Ada hubungan antara status merokok dan kanker paru
# ================================
# 3. Taraf Signifikansi
# ================================

alpha <- 0.05
cat("Alpha:", alpha, "\n\n")
## Alpha: 0.05
# ================================
# 4. Expected Value
# ================================

# Total baris
row_total <- rowSums(tabel)

# Total kolom
col_total <- colSums(tabel)

# Expected (E)
E <- outer(row_total, col_total) / n..

cat("Expected Frequency (E):\n")
## Expected Frequency (E):
print(E)
##            Cancer Control
## Smoker        669     669
## Non-Smoker     40      40
cat("\n")
# ================================
# 5. Statistik Chi-Square
# ================================

O <- tabel  # observed

chi_square <- sum((O - E)^2 / E)

cat("Nilai Chi-Square hitung:", chi_square, "\n\n")
## Nilai Chi-Square hitung: 19.12922
# ================================
# 6. Derajat bebas & nilai kritis
# ================================

df <- (nrow(tabel)-1)*(ncol(tabel)-1)

chi_critical <- qchisq(0.95, df)

cat("Derajat bebas:", df, "\n")
## Derajat bebas: 1
cat("Chi-Square tabel:", chi_critical, "\n\n")
## Chi-Square tabel: 3.841459
# ================================
# 7. P-value
# ================================

p_value <- 1 - pchisq(chi_square, df)

cat("P-value:", p_value, "\n\n")
## P-value: 1.221601e-05
# ================================
# 8. Keputusan
# ================================

if(chi_square > chi_critical){
  cat("Keputusan (berdasarkan Chi-Square): Tolak H0\n")
} else {
  cat("Keputusan (berdasarkan Chi-Square): Gagal Tolak H0\n")
}
## Keputusan (berdasarkan Chi-Square): Tolak H0
if(p_value < alpha){
  cat("Keputusan (berdasarkan p-value): Tolak H0\n")
} else {
  cat("Keputusan (berdasarkan p-value): Gagal Tolak H0\n")
}
## Keputusan (berdasarkan p-value): Tolak H0
# ================================
# 9. Kesimpulan
# ================================

if(p_value < alpha){
  cat("Kesimpulan: Terdapat hubungan antara status merokok dan kejadian kanker paru\n")
} else {
  cat("Kesimpulan: Tidak terdapat hubungan antara status merokok dan kejadian kanker paru\n")
}
## Kesimpulan: Terdapat hubungan antara status merokok dan kejadian kanker paru

1.6 Uji likelihood ratio (G^2).

# ================================
# 1. Ambil tabel 2x2
# ================================

tabel <- data_kanker[1:2, 1:2]

cat("Tabel Kontingensi:\n")
## Tabel Kontingensi:
print(tabel)
##            Cancer Control
## Smoker        688     650
## Non-Smoker     21      59
cat("\n")
# ================================
# 2. Hipotesis
# ================================

cat("Hipotesis:\n")
## Hipotesis:
cat("H0: Tidak terdapat hubungan antara status merokok dan kejadian kanker paru\n")
## H0: Tidak terdapat hubungan antara status merokok dan kejadian kanker paru
cat("H1: Terdapat hubungan antara status merokok dan kejadian kanker paru\n\n")
## H1: Terdapat hubungan antara status merokok dan kejadian kanker paru
# ================================
# 3. Taraf Signifikansi
# ================================

alpha <- 0.05
cat("Taraf Signifikansi (alpha):", alpha, "\n\n")
## Taraf Signifikansi (alpha): 0.05
# ================================
# 4. Hitung Expected (E)
# ================================

row_total <- rowSums(tabel)
col_total <- colSums(tabel)

E <- outer(row_total, col_total) / n..

cat("Expected (E):\n")
## Expected (E):
print(E)
##            Cancer Control
## Smoker        669     669
## Non-Smoker     40      40
cat("\n")
# ================================
# 5. Hitung Statistik Uji G^2 (manual)
# ================================

O <- tabel

G2 <- 2 * sum(O * log(O / E))

cat("Nilai G^2 hitung:", G2, "\n\n")
## Nilai G^2 hitung: 19.87802
# ================================
# 6. Derajat Bebas & P-value
# ================================

df <- (nrow(tabel)-1)*(ncol(tabel)-1)
p_value <- 1 - pchisq(G2, df)

cat("Derajat bebas:", df, "\n")
## Derajat bebas: 1
cat("P-value:", p_value, "\n\n")
## P-value: 8.25441e-06
# ================================
# 7. Kriteria Uji
# ================================

chi_tabel <- qchisq(0.95, df)

cat("Chi-Square Tabel:", chi_tabel, "\n")
## Chi-Square Tabel: 3.841459
cat("Kriteria: Tolak H0 jika G^2 > Chi-Square tabel atau p-value < alpha\n\n")
## Kriteria: Tolak H0 jika G^2 > Chi-Square tabel atau p-value < alpha
# ================================
# 8. Keputusan
# ================================

if(G2 > chi_tabel){
  cat("Keputusan (berdasarkan G^2): Tolak H0\n")
} else {
  cat("Keputusan (berdasarkan G^2): Gagal Tolak H0\n")
}
## Keputusan (berdasarkan G^2): Tolak H0
if(p_value < alpha){
  cat("Keputusan (berdasarkan p-value): Tolak H0\n")
} else {
  cat("Keputusan (berdasarkan p-value): Gagal Tolak H0\n")
}
## Keputusan (berdasarkan p-value): Tolak H0
# ================================
# 9. Kesimpulan
# ================================

if(p_value < alpha){
  cat("Kesimpulan: Terdapat hubungan antara status merokok dan kejadian kanker paru\n")
} else {
  cat("Kesimpulan: Tidak terdapat hubungan antara status merokok dan kejadian kanker paru\n")
}
## Kesimpulan: Terdapat hubungan antara status merokok dan kejadian kanker paru

1.7 Uji Fisher Exact

# ================================
# 1. Ambil tabel 2x2 (tanpa total)
# ================================

tabel <- data_kanker[1:2, 1:2]

cat("Tabel Kontingensi:\n")
## Tabel Kontingensi:
print(tabel)
##            Cancer Control
## Smoker        688     650
## Non-Smoker     21      59
cat("\n")
# ================================
# 2. Hipotesis
# ================================

cat("Hipotesis:\n")
## Hipotesis:
cat("H0: Tidak terdapat hubungan antara status merokok dan kejadian kanker paru\n")
## H0: Tidak terdapat hubungan antara status merokok dan kejadian kanker paru
cat("H1: Terdapat hubungan antara status merokok dan kejadian kanker paru\n\n")
## H1: Terdapat hubungan antara status merokok dan kejadian kanker paru
# ================================
# 3. Taraf Signifikansi
# ================================

alpha <- 0.05
cat("Taraf Signifikansi (alpha):", alpha, "\n\n")
## Taraf Signifikansi (alpha): 0.05
# ================================
# 4. Fisher Exact Test
# ================================

hasil_fisher <- fisher.test(tabel)

print(hasil_fisher)
## 
##  Fisher's Exact Test for Count Data
## 
## data:  tabel
## 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
# ================================
# 5. Ambil p-value
# ================================

p_value <- hasil_fisher$p.value

cat("\nP-value:", p_value, "\n\n")
## 
## P-value: 1.476303e-05
# ================================
# 6. Kriteria Uji
# ================================

cat("Kriteria Uji:\n")
## Kriteria Uji:
cat("Tolak H0 jika p-value < alpha\n\n")
## Tolak H0 jika p-value < alpha
# ================================
# 7. Keputusan
# ================================

if(p_value < alpha){
  cat("Keputusan: Tolak H0\n")
} else {
  cat("Keputusan: Gagal Tolak H0\n")
}
## Keputusan: Tolak H0
# ================================
# 8. Kesimpulan
# ================================

if(p_value < alpha){
  cat("Kesimpulan: Terdapat hubungan antara status merokok dan kejadian kanker paru\n")
} else {
  cat("Kesimpulan: Tidak terdapat hubungan antara status merokok dan kejadian kanker paru\n")
}
## Kesimpulan: Terdapat hubungan antara status merokok dan kejadian kanker paru

1.8 Membandingkan hasil butir 4 sampai 7 dari sisi hipotesis, statistik uji, p-value, keputusan, dan interpretasi substantif.

# ================================
# 1. Ambil nilai dari hasil sebelumnya
# ================================

# Uji Proporsi
Z_prop <- Z
p_prop <- 2 * (1 - pnorm(abs(Z_prop)))
keputusan_prop <- ifelse(p_prop < 0.05, "Tolak H0", "Gagal Tolak H0")

# Chi-Square
chi_sq <- chi_square
p_chi <- 1 - pchisq(chi_sq, df)
keputusan_chi <- ifelse(p_chi < 0.05, "Tolak H0", "Gagal Tolak H0")

# Likelihood Ratio (G^2)
G2_stat <- G2
p_g2 <- 1 - pchisq(G2_stat, df)
keputusan_g2 <- ifelse(p_g2 < 0.05, "Tolak H0", "Gagal Tolak H0")

# Fisher
p_fisher <- hasil_fisher$p.value
keputusan_fisher <- ifelse(p_fisher < 0.05, "Tolak H0", "Gagal Tolak H0")


# ================================
# 2. Buat tabel perbandingan
# ================================

perbandingan <- data.frame(
  Metode = c("Uji Proporsi (Z)", "Chi-Square", "Likelihood Ratio (G^2)", "Fisher Exact"),
  
  Hipotesis = c(
    "p1 = p2 vs p1 ≠ p2",
    "Independen vs Tidak",
    "Independen vs Tidak",
    "Independen vs Tidak"
  ),
  
  Statistik_Uji = c(
    round(Z_prop, 3),
    round(chi_sq, 3),
    round(G2_stat, 3),
    "-"
  ),
  
  P_Value = c(
    signif(p_prop, 3),
    signif(p_chi, 3),
    signif(p_g2, 3),
    signif(p_fisher, 3)
  ),
  
  Keputusan = c(
    keputusan_prop,
    keputusan_chi,
    keputusan_g2,
    keputusan_fisher
  ),
  
  Interpretasi = c(
    "Ada perbedaan proporsi",
    "Ada hubungan",
    "Ada hubungan",
    "Ada hubungan"
  )
)

# Tampilkan tabel
cat("=== TABEL PERBANDINGAN UJI ===\n")
## === TABEL PERBANDINGAN UJI ===
print(perbandingan)
##                   Metode           Hipotesis Statistik_Uji  P_Value Keputusan
## 1       Uji Proporsi (Z)  p1 = p2 vs p1 ≠ p2         4.374 1.22e-05  Tolak H0
## 2             Chi-Square Independen vs Tidak        19.129 1.22e-05  Tolak H0
## 3 Likelihood Ratio (G^2) Independen vs Tidak        19.878 8.25e-06  Tolak H0
## 4           Fisher Exact Independen vs Tidak             - 1.48e-05  Tolak H0
##             Interpretasi
## 1 Ada perbedaan proporsi
## 2           Ada hubungan
## 3           Ada hubungan
## 4           Ada hubungan

1.9 Kesimpulan akhir tentang hubungan antara merokok dan kanker paru

Berdasarkan berbagai metode pengujian statistik yang dilakukan, diperoleh hasil yang konsisten yaitu p-value < 0,05, sehingga H₀ ditolak. Dengan demikian, dapat disimpulkan bahwa terdapat hubungan yang signifikan antara status merokok dan kejadian kanker paru. Individu yang merokok memiliki proporsi kejadian kanker paru yang lebih tinggi dibandingkan dengan non-smoker.

Kasus 1: Tabel Kontingensi 2x3 (Gender vs Identisikasi Partai Politik)

2.1 Tabel Kontingensi 2 x 3.

# Bentuk Umum Tabel Kontingensi

data <- matrix(c("a", "b", "c", "n1.","c", "d", "e", "n2.","n.1", "n.2", "n.3","n.."), nrow = 3, byrow = TRUE)
colnames(data) <- c("1A", "1B", "1C","Total")
rownames(data) <- c("2A", "2B", "Total")
data
##       1A    1B    1C    Total
## 2A    "a"   "b"   "c"   "n1."
## 2B    "c"   "d"   "e"   "n2."
## Total "n.1" "n.2" "n.3" "n.."
#Tabel Kontingensi Kanker

data_partai <- matrix(c(495, 272, 590, 1357, 330, 265, 498, 1093, 825, 537, 1088, 2450), nrow = 3, byrow = TRUE)
rownames(data_partai) <- c("Female", "Male", "Total")
colnames(data_partai) <- c("Democrat", "Republican","Independent", "Total")

# Menampilkan tabel
print("Tabel Kontingensi:")
## [1] "Tabel Kontingensi:"
data_partai
##        Democrat Republican Independent Total
## Female      495        272         590  1357
## Male        330        265         498  1093
## Total       825        537        1088  2450

2.2 Menghitung frekuensi harapan untuk setiap sel

# ================================
# 1. Ambil tabel 2x3 (tanpa total)
# ================================

tabel <- data_partai[1:2, 1:3]

cat("Tabel Kontingensi:\n")
## Tabel Kontingensi:
print(tabel)
##        Democrat Republican Independent
## Female      495        272         590
## Male        330        265         498
cat("\n")
# ================================
# 2. Mengambil Nilai Setiap Sel
# ================================

a <- data_partai["Female", "Democrat"]
b <- data_partai["Female", "Republican"]
c <- data_partai["Female", "Independent"]

d <- data_partai["Male", "Democrat"]
e <- data_partai["Male", "Republican"]
f <- data_partai["Male", "Independent"]

 
n1. <- data_partai["Female", "Total"]       
n2. <- data_partai["Male", "Total"]   
n.1 <- data_partai["Total", "Democrat"]       
n.2 <- data_partai["Total", "Republican"]  
n.3 <- data_partai["Total", "Independent"]  
n.. <- data_partai["Total","Total"]


# ================================
# 2. Hitung total baris, kolom, dan total keseluruhan
# ================================

row_total <- rowSums(tabel)
col_total <- colSums(tabel)

# ================================
# 3. Hitung Expected Frequency
# ================================

E <- outer(row_total, col_total) / n..

cat("Frekuensi Harapan (Expected):\n")
## Frekuensi Harapan (Expected):
print(round(E, 2))
##        Democrat Republican Independent
## Female   456.95     297.43      602.62
## Male     368.05     239.57      485.38

2.3 Uji chi-square independensi untuk tabel keseluruhan

# ================================
# 1. Hipotesis
# ================================

cat("Hipotesis:\n")
## Hipotesis:
cat("H0: Tidak terdapat hubungan antara gender dan preferensi partai\n")
## H0: Tidak terdapat hubungan antara gender dan preferensi partai
cat("H1: Terdapat hubungan antara gender dan preferensi partai\n\n")
## H1: Terdapat hubungan antara gender dan preferensi partai
# ================================
# 2. Taraf Signifikansi
# ================================

alpha <- 0.05
cat("Taraf Signifikansi (alpha):", alpha, "\n\n")
## Taraf Signifikansi (alpha): 0.05
# ================================
# 3. Hitung Chi-Square
# ================================

O <- tabel

chi_square <- sum((O - E)^2 / E)

cat("Nilai Chi-Square hitung:", chi_square, "\n\n")
## Nilai Chi-Square hitung: 12.56926
# ================================
# 6. Derajat Bebas & P-value
# ================================

df <- (nrow(O)-1)*(ncol(O)-1)

p_value <- 1 - pchisq(chi_square, df)

cat("Derajat bebas:", df, "\n")
## Derajat bebas: 2
cat("P-value:", p_value, "\n\n")
## P-value: 0.00186475
# ================================
# 7. Kriteria Uji
# ================================

chi_tabel <- qchisq(0.95, df)

cat("Chi-Square Tabel:", chi_tabel, "\n")
## Chi-Square Tabel: 5.991465
cat("Kriteria: Tolak H0 jika Chi-Square hitung > Chi-Square tabel atau p-value < alpha\n\n")
## Kriteria: Tolak H0 jika Chi-Square hitung > Chi-Square tabel atau p-value < alpha
# ================================
# 8. Keputusan
# ================================

if(chi_square > chi_tabel){
  cat("Keputusan (Chi-Square): Tolak H0\n")
} else {
  cat("Keputusan (Chi-Square): Gagal Tolak H0\n")
}
## Keputusan (Chi-Square): Tolak H0
if(p_value < alpha){
  cat("Keputusan (p-value): Tolak H0\n")
} else {
  cat("Keputusan (p-value): Gagal Tolak H0\n")
}
## Keputusan (p-value): Tolak H0
# ================================
# 9. Kesimpulan
# ================================

if(p_value < alpha){
  cat("Kesimpulan: Terdapat hubungan antara gender dan preferensi partai\n")
} else {
  cat("Kesimpulan: Tidak terdapat hubungan antara gender dan preferensi partai\n")
}
## Kesimpulan: Terdapat hubungan antara gender dan preferensi partai

2.4 Menghitung dan interpretasikan residual Pearson atau standardized residual

# ================================
# Residual Pearson
# ================================

residual_pearson <- (O - E) / sqrt(E)

cat("Residual Pearson:\n")
## Residual Pearson:
print(round(residual_pearson, 3))
##        Democrat Republican Independent
## Female    1.780     -1.475      -0.514
## Male     -1.983      1.643       0.573
cat("\n")
# ================================
# Standardized Residual
# ================================

row_prop <- rowSums(tabel) / sum(tabel)
col_prop <- colSums(tabel) / sum(tabel)

std <- (O - E) / sqrt(E * (1 - row_prop[row(O)]) * (1 - col_prop[col(O)]))

round(std, 3)
##        Democrat Republican Independent
## Female    3.272     -2.499      -1.032
## Male     -3.272      2.499       1.032
cat("Standardized Residual:\n")
## Standardized Residual:
print(round(std, 3))
##        Democrat Republican Independent
## Female    3.272     -2.499      -1.032
## Male     -3.272      2.499       1.032
# ================================
# Interpretasi
# ================================

interpretasi <- function(x){
  if(abs(x) > 2){
    if(x > 0){
      return("Lebih banyak dari harapan (Signifikan)")
    } else {
      return("Lebih sedikit dari harapan (Signifikan)")
    }
  } else {
    if(x > 0){
      return("Sedikit lebih banyak (Tidak signifikan)")
    } else {
      return("Sedikit lebih sedikit (Tidak signifikan)")
    }
  }
}


# ================================
# Loop interpretasi
# ================================

hasil_interpretasi <- matrix("", nrow = nrow(std), ncol = ncol(std))

for(i in 1:nrow(std)){
  for(j in 1:ncol(std)){
    hasil_interpretasi[i,j] <- interpretasi(std[i,j])
  }
}

rownames(hasil_interpretasi) <- rownames(std)
colnames(hasil_interpretasi) <- colnames(std)


# ================================
# Tambah Kesimpulan Kontekstual
# ================================

kesimpulan <- function(gender, partai, nilai){
  if(abs(nilai) > 2){
    if(nilai > 0){
      return(paste(gender, "cenderung memilih", partai, "lebih banyak dari yang diharapkan"))
    } else {
      return(paste(gender, "cenderung memilih", partai, "lebih sedikit dari yang diharapkan"))
    }
  } else {
    return(paste("Tidak terdapat kecenderungan signifikan pada", gender, "terhadap", partai))
  }
}


# ================================
# Tabel Interpretasi
# ================================

tabel_interpretasi <- data.frame(
  Gender = rep(rownames(std), each = ncol(std)),
  Partai = rep(colnames(std), times = nrow(std)),
  Residual = as.vector(t(std)),
  Interpretasi = as.vector(t(hasil_interpretasi)),
  Kesimpulan = NA
)


# ================================
# Isi kolom kesimpulan
# ================================

for(i in 1:nrow(tabel_interpretasi)){
  tabel_interpretasi$Kesimpulan[i] <- kesimpulan(
    tabel_interpretasi$Gender[i],
    tabel_interpretasi$Partai[i],
    tabel_interpretasi$Residual[i]
  )
}


print(tabel_interpretasi)
##   Gender      Partai  Residual                             Interpretasi
## 1 Female    Democrat  3.272365   Lebih banyak dari harapan (Signifikan)
## 2 Female  Republican -2.498557  Lebih sedikit dari harapan (Signifikan)
## 3 Female Independent -1.032199 Sedikit lebih sedikit (Tidak signifikan)
## 4   Male    Democrat -3.272365  Lebih sedikit dari harapan (Signifikan)
## 5   Male  Republican  2.498557   Lebih banyak dari harapan (Signifikan)
## 6   Male Independent  1.032199  Sedikit lebih banyak (Tidak signifikan)
##                                                                 Kesimpulan
## 1      Female cenderung memilih Democrat lebih banyak dari yang diharapkan
## 2   Female cenderung memilih Republican lebih sedikit dari yang diharapkan
## 3 Tidak terdapat kecenderungan signifikan pada Female terhadap Independent
## 4       Male cenderung memilih Democrat lebih sedikit dari yang diharapkan
## 5      Male cenderung memilih Republican lebih banyak dari yang diharapkan
## 6   Tidak terdapat kecenderungan signifikan pada Male terhadap Independent

2.5 Melakukan partisi chi-square untuk Democrat vs Republican dan (Democrat + Republican) vs Independent

Partisi Chi-Square untuk Democrat vs Republican

# ================================
# 1. Ambil data (2x2)
# ================================

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

cat("Tabel Demokrat vs Republican:\n")
## Tabel Demokrat vs Republican:
print(data_DR)
##        Democrat Republican
## Female      495        272
## Male        330        265
cat("\n")
# ================================
# 2. Hipotesis
# ================================

cat("H0: Tidak ada hubungan antara gender dan pilihan Demokrat vs Republican\n")
## H0: Tidak ada hubungan antara gender dan pilihan Demokrat vs Republican
cat("H1: Ada hubungan antara gender dan pilihan Demokrat vs Republican\n\n")
## H1: Ada hubungan antara gender dan pilihan Demokrat vs Republican
alpha <- 0.05


# ================================
# 3. Expected
# ================================

row_total <- rowSums(data_DR)
col_total <- colSums(data_DR)
n <- sum(data_DR)

E <- outer(row_total, col_total) / n

cat("Frekuensi Harapan:\n")
## Frekuensi Harapan:
print(round(E, 2))
##        Democrat Republican
## Female   464.59     302.41
## Male     360.41     234.59
cat("\n")
# ================================
# 4. Chi-Square
# ================================

O <- data_DR
chi_square <- sum((O - E)^2 / E)

cat("Chi-Square Hitung:", chi_square, "\n\n")
## Chi-Square Hitung: 11.55452
# ================================
# 5. Derajat Bebas & Kriteria
# ================================

df <- (nrow(O)-1)*(ncol(O)-1)
chi_tabel <- qchisq(0.95, df)

cat("df:", df, "\n")
## df: 1
cat("Chi-Square Tabel:", chi_tabel, "\n\n")
## Chi-Square Tabel: 3.841459
# ================================
# 6. Keputusan
# ================================

if(chi_square > chi_tabel){
  cat("Keputusan: Tolak H0\n")
  cat("Kesimpulan: Ada hubungan antara gender dan pilihan Demokrat vs Republican\n\n")
} else {
  cat("Keputusan: Gagal Tolak H0\n")
  cat("Kesimpulan: Tidak ada hubungan\n\n")
}
## Keputusan: Tolak H0
## Kesimpulan: Ada hubungan antara gender dan pilihan Demokrat vs Republican

Partisi Chi-Square untuk Democrat+Republican vs Independen

# ================================
# 1. Gabungkan data
# ================================

gabungan <- tabel[, "Democrat"] + tabel[, "Republican"]

data_DR_I <- cbind(gabungan, tabel[, "Independent"])
colnames(data_DR_I) <- c("DemRep", "Independent")

cat("Tabel (Dem+Rep) vs Independent:\n")
## Tabel (Dem+Rep) vs Independent:
print(data_DR_I)
##        DemRep Independent
## Female    767         590
## Male      595         498
cat("\n")
# ================================
# 2. Hipotesis
# ================================

cat("H0: Tidak ada hubungan antara gender dan pilihan (Dem+Rep) vs Independent\n")
## H0: Tidak ada hubungan antara gender dan pilihan (Dem+Rep) vs Independent
cat("H1: Ada hubungan antara gender dan pilihan (Dem+Rep) vs Independent\n\n")
## H1: Ada hubungan antara gender dan pilihan (Dem+Rep) vs Independent
alpha <- 0.05


# ================================
# 3. Expected
# ================================

row_total <- rowSums(data_DR_I)
col_total <- colSums(data_DR_I)

E <- outer(row_total, col_total) / n..

cat("Frekuensi Harapan:\n")
## Frekuensi Harapan:
print(round(E, 2))
##        DemRep Independent
## Female 754.38      602.62
## Male   607.62      485.38
cat("\n")
# ================================
# 4. Chi-Square 
# ================================

O <- data_DR_I
chi_square <- sum((O - E)^2 / E)

cat("Chi-Square Hitung:", chi_square, "\n\n")
## Chi-Square Hitung: 1.065434
# ================================
# 5. df & Kriteria
# ================================

df <- (nrow(O)-1)*(ncol(O)-1)
chi_tabel <- qchisq(0.95, df)

cat("df:", df, "\n")
## df: 1
cat("Chi-Square Tabel:", chi_tabel, "\n\n")
## Chi-Square Tabel: 3.841459
# ================================
# 6. Keputusan
# ================================

if(chi_square > chi_tabel){
  cat("Keputusan: Tolak H0\n")
  cat("Kesimpulan: Ada hubungan antara gender dan pilihan (Dem+Rep) vs Independent\n")
} else {
  cat("Keputusan: Gagal Tolak H0\n")
  cat("Kesimpulan: Tidak ada hubungan antara gender dan pilihan (Dem+Rep) vs Independent\n")
}
## Keputusan: Gagal Tolak H0
## Kesimpulan: Tidak ada hubungan antara gender dan pilihan (Dem+Rep) vs Independent

2.6 Membandingkan hasil partisi dengan hasil uji chi-square keseluruhan.

Berdasarkan uji chi-square independensi, diperoleh bahwa terdapat hubungan yang signifikan antara gender dan preferensi partai politik. Hasil partisi chi-square menunjukkan bahwa hubungan tersebut terutama disebabkan oleh perbedaan pilihan antara Demokrat dan Republican, sedangkan tidak terdapat perbedaan signifikan antara kecenderungan memilih partai (Demokrat/Republican) dan Independent berdasarkan gender. Hal ini diperkuat oleh analisis residual yang menunjukkan bahwa perempuan cenderung lebih banyak memilih Demokrat, sedangkan laki-laki lebih cenderung memilih Republican.

# ================================
# 1. Hasil uji
# ================================

hasil_uji <- data.frame(
  Metode = c("Chi-Square (2x3)",
             "Partisi: Dem vs Rep",
             "Partisi: (Dem+Rep) vs Indep"),
  
  Hipotesis = c(
    "Ada hubungan gender & preferensi partai",
    "Ada hubungan gender & pilihan Dem vs Rep",
    "Ada hubungan gender & pilihan (Partai vs Indep)"
  ),
  
  Chi_Square = c(12.56926, 11.55452, 1.065434),
  
  df = c(2, 1, 1),
  
  p_value = c(0.00186475, 
              1 - pchisq(11.55452, 1),
              1 - pchisq(1.065434, 1))
)

# ================================
# 2. Keputusan
# ================================

alpha <- 0.05

hasil_uji$Keputusan <- ifelse(
  hasil_uji$p_value < alpha,
  "Tolak H0",
  "Gagal Tolak H0"
)

# ================================
# 3. Interpretasi
# ================================

hasil_uji$Interpretasi <- c(
  "Ada hubungan antara gender dan preferensi partai",
  "Perbedaan terjadi pada pilihan Demokrat vs Republican",
  "Tidak ada perbedaan dalam memilih partai vs independen"
)

# ================================
# 4. Tampilkan tabel
# ================================

print(hasil_uji)
##                        Metode                                       Hipotesis
## 1            Chi-Square (2x3)         Ada hubungan gender & preferensi partai
## 2         Partisi: Dem vs Rep        Ada hubungan gender & pilihan Dem vs Rep
## 3 Partisi: (Dem+Rep) vs Indep Ada hubungan gender & pilihan (Partai vs Indep)
##   Chi_Square df      p_value      Keputusan
## 1  12.569260  2 0.0018647500       Tolak H0
## 2  11.554520  1 0.0006758475       Tolak H0
## 3   1.065434  1 0.3019790794 Gagal Tolak H0
##                                             Interpretasi
## 1       Ada hubungan antara gender dan preferensi partai
## 2  Perbedaan terjadi pada pilihan Demokrat vs Republican
## 3 Tidak ada perbedaan dalam memilih partai vs independen

2.7 Kategori yang paling berkontribusi terhadap hubungan antara Gender dan Identifikasi Partai Politik.

Hasil standardized residual menunjukkan bahwa tidak semua kategori memberikan kontribusi yang sama terhadap hubungan antara gender dan identifikasi partai politik.

Kategori yang paling berkontribusi signifikan adalah:

  1. Perempuan – Democrat (3.272)

Nilai residual positif dan lebih besar dari 2 menunjukkan bahwa jumlah perempuan yang memilih Partai Demokrat secara signifikan lebih banyak daripada yang diharapkan jika tidak ada hubungan. Perempuan memiliki kecenderungan kuat untuk memilih Partai Demokrat.

  1. Laki-laki – Democrat (-3.272)

Nilai residual negatif dan signifikan menunjukkan bahwa jumlah laki-laki yang memilih Partai Demokrat lebih sedikit dari yang diharapkan. Laki-laki cenderung tidak memilih Partai Demokrat dibandingkan ekspektasi.

  1. Perempuan – Republican (-2.499)

Nilai negatif signifikan menunjukkan perempuan yang memilih Partai Republik lebih sedikit dari yang diharapkan. Perempuan cenderung menghindari atau kurang memilih Partai Republik.

  1. Laki-laki – Republican (2.499)

Nilai positif signifikan menunjukkan laki-laki yang memilih Partai Republik lebih banyak dari yang diharapkan. Laki-laki memiliki kecenderungan kuat untuk memilih Partai Republik.

  1. Kategori Independent

Female: -1.032 Male: 1.032

Nilai tersebut tidak signifikan (|res| < 2)

Tidak terdapat perbedaan yang berarti antara laki-laki dan perempuan dalam memilih Independent.

Referensi

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

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

Hosmer, D. W., Lemeshow, S., & Sturdivant, R. X. (2013). Applied Logistic Regression (3rd ed.). Wiley. ```