Pada Tugas ini, kita akan membahas inferensi statistik, yaitu menggunakan data sampel untuk membuat kesimpulan tentang populasi. Hal yang akan dilakukan:
Terdapat dua kasus yang akan dianalisis:
Tabel kontingensi menyusun frekuensi dua variabel kategori secara silang. Berikut data hubungan antara status merokok dan kanker paru:
# Membuat matriks data untuk Kasus 1
# Baris : Status Merokok (Smoker / Non-Smoker)
# Kolom : Status Kanker (Cancer+ / Control-)
tabel1 <- matrix(
c(688, 650,
21, 59),
nrow = 2, byrow = TRUE
)
rownames(tabel1) <- c("Smoker", "Non-Smoker")
colnames(tabel1) <- c("Cancer (+)", "Control (-)")
# Tampilkan tabel dengan baris/kolom Total
addmargins(tabel1)
## Cancer (+) Control (-) Sum
## Smoker 688 650 1338
## Non-Smoker 21 59 80
## Sum 709 709 1418
Keterangan sel:
Estimasi titik adalah satu nilai tunggal yang digunakan untuk menduga parameter populasi. Di sini kita menduga proporsi (probabilitas) seseorang terkena kanker paru pada masing-masing kelompok.
\[\hat{p}_1 = \frac{a}{a+b} \quad \text{(proporsi kanker pada Smoker)}\]
\[\hat{p}_2 = \frac{c}{c+d} \quad \text{(proporsi kanker pada Non-Smoker)}\]
# Mengambil nilai dari tabel
a <- tabel1[1, 1] # 688
b <- tabel1[1, 2] # 650
c <- tabel1[2, 1] # 21
d <- tabel1[2, 2] # 59
n1 <- a + b # total Smoker = 1338
n2 <- c + d # total Non-Smoker = 80
n <- n1 + n2 # grand total = 1418
# Hitung proporsi
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: Sekitar 51.42% perokok adalah kasus kanker paru, sedangkan hanya 26.25% bukan perokok yang merupakan kasus kanker paru. Secara deskriptif, perokok memiliki proporsi kanker yang jauh lebih tinggi.
Interval kepercayaan (CI) adalah rentang nilai yang dengan tingkat keyakinan 95% kita percaya memuat nilai parameter sebenarnya. Kita hitung CI untuk proporsi masing-masing kelompok, serta tiga ukuran asosiasi: RD, RR, dan OR (sudah dikenalkan pada tugas sebelumnya).
Rumus (metode Wald): \[\hat{p} \pm 1.96 \times \sqrt{\frac{\hat{p}(1-\hat{p})}{n}}\]
z <- qnorm(0.975) # z = 1.96 untuk CI 95%
# CI untuk Smoker
se_p1 <- sqrt(p1 * (1 - p1) / n1)
ci_p1 <- c(p1 - z * se_p1, p1 + z * se_p1)
# CI untuk Non-Smoker
se_p2 <- sqrt(p2 * (1 - p2) / n2)
ci_p2 <- c(p2 - z * se_p2, p2 + z * se_p2)
cat("CI 95% untuk Smoker : [", round(ci_p1[1], 4),
",", round(ci_p1[2], 4), "]\n")
## CI 95% untuk Smoker : [ 0.4874 , 0.541 ]
cat("CI 95% untuk Non-Smoker : [", round(ci_p2[1], 4),
",", round(ci_p2[2], 4), "]\n")
## CI 95% untuk Non-Smoker : [ 0.1661 , 0.3589 ]
Risk Difference (RD) adalah selisih proporsi antara dua kelompok (risiko absolut).
\[RD = \hat{p}_1 - \hat{p}_2\]
\[SE(RD) = \sqrt{\frac{\hat{p}_1(1-\hat{p}_1)}{n_1} + \frac{\hat{p}_2(1-\hat{p}_2)}{n_2}}\]
\[CI_{95\%}(RD) = RD \pm 1.96 \times SE(RD)\]
Nilai null RD = 0 (artinya tidak ada perbedaan risiko).
RD <- p1 - p2
se_RD <- sqrt(p1*(1-p1)/n1 + p2*(1-p2)/n2)
ci_RD <- c(RD - z*se_RD, RD + z*se_RD)
cat("Risk Difference (RD) :", round(RD, 4), "\n")
## Risk Difference (RD) : 0.2517
cat("SE(RD) :", round(se_RD, 4), "\n")
## SE(RD) : 0.0511
cat("CI 95% untuk RD : [", round(ci_RD[1], 4),
",", round(ci_RD[2], 4), "]\n")
## CI 95% untuk RD : [ 0.1516 , 0.3518 ]
Diketahui bahwa RR terbentuk sebagai berikut: \[RR = \frac{\hat{p}_1}{\hat{p}_2}\]
CI dihitung pada skala logaritma natural karena distribusi RR miring ke kanan:
\[SE(\ln RR) = \sqrt{\frac{1-\hat{p}_1}{n_1 \hat{p}_1} + \frac{1-\hat{p}_2}{n_2 \hat{p}_2}}\]
\[CI_{95\%}(RR) = \exp\!\left[\ln(RR) \pm 1.96 \times SE(\ln RR)\right]\]
Nilai null RR = 1 (artinya risiko sama di kedua kelompok).
RR <- p1 / p2
se_lnRR <- sqrt((1-p1)/(n1*p1) + (1-p2)/(n2*p2))
ci_RR <- exp(log(RR) + c(-1, 1) * z * se_lnRR)
cat("Relative Risk (RR) :", round(RR, 4), "\n")
## Relative Risk (RR) : 1.9589
cat("SE(ln RR) :", round(se_lnRR, 4), "\n")
## SE(ln RR) : 0.1893
cat("CI 95% untuk RR : [", round(ci_RR[1], 4),
",", round(ci_RR[2], 4), "]\n")
## CI 95% untuk RR : [ 1.3517 , 2.8387 ]
Diketahui bahwa OR terbentuk sebagai berikut: \[OR = \frac{a \times d}{b \times c}\]
\[SE(\ln OR) = \sqrt{\frac{1}{a} + \frac{1}{b} + \frac{1}{c} + \frac{1}{d}}\]
\[CI_{95\%}(OR) = \exp\!\left[\ln(OR) \pm 1.96 \times SE(\ln OR)\right]\]
Nilai null OR = 1 (artinya odds sama di kedua kelompok).
OR <- (a * d) / (b * c)
se_lnOR <- sqrt(1/a + 1/b + 1/c + 1/d)
ci_OR <- exp(log(OR) + c(-1, 1) * z * se_lnOR)
cat("Odds Ratio (OR) :", round(OR, 4), "\n")
## Odds Ratio (OR) : 2.9738
cat("SE(ln OR) :", round(se_lnOR, 4), "\n")
## SE(ln OR) : 0.2599
cat("CI 95% untuk OR : [", round(ci_OR[1], 4),
",", round(ci_OR[2], 4), "]\n")
## CI 95% untuk OR : [ 1.7867 , 4.9494 ]
cat("==================================================\n")
## ==================================================
cat(" Ukuran Estimasi CI 95% Bawah CI 95% Atas\n")
## Ukuran Estimasi CI 95% Bawah CI 95% Atas
cat("==================================================\n")
## ==================================================
cat(sprintf(" p̂ Smoker %-10.4f %-12.4f %.4f\n",
p1, ci_p1[1], ci_p1[2]))
## p̂ Smoker 0.5142 0.4874 0.5410
cat(sprintf(" p̂ Non-Smoker %-10.4f %-12.4f %.4f\n",
p2, ci_p2[1], ci_p2[2]))
## p̂ Non-Smoker 0.2625 0.1661 0.3589
cat(sprintf(" RD %-10.4f %-12.4f %.4f\n",
RD, ci_RD[1], ci_RD[2]))
## RD 0.2517 0.1516 0.3518
cat(sprintf(" RR %-10.4f %-12.4f %.4f\n",
RR, ci_RR[1], ci_RR[2]))
## RR 1.9589 1.3517 2.8387
cat(sprintf(" OR %-10.4f %-12.4f %.4f\n",
OR, ci_OR[1], ci_OR[2]))
## OR 2.9738 1.7867 4.9494
cat("==================================================\n")
## ==================================================
Interpretasi:
Uji ini menguji apakah proporsi kanker paru pada dua kelompok berbeda secara statistik.
Hipotesis:
Statistik Uji:
\[\hat{p}_{pool} = \frac{a + c}{n}, \qquad Z = \frac{\hat{p}_1 - \hat{p}_2} {\sqrt{\hat{p}_{pool}(1-\hat{p}_{pool})\left(\dfrac{1}{n_1}+\dfrac{1}{n_2}\right)}}\]
Tolak \(H_0\) jika \(|Z| > 1.96\) atau \(p\)-value \(< 0.05\).
hasil_prop <- prop.test(
x = c(a, c),
n = c(n1, n2),
alternative = "two.sided",
conf.level = 0.95,
correct = FALSE
)
cat("=== Uji Dua Proporsi ===\n\n")
## === Uji Dua Proporsi ===
cat("Statistik uji X² :", round(hasil_prop$statistic, 4),
" (Z =", round(sqrt(hasil_prop$statistic), 4), ")\n")
## Statistik uji X² : 19.1292 (Z = 4.3737 )
cat("p-value :", format(hasil_prop$p.value, scientific = TRUE), "\n\n")
## p-value : 1.221601e-05
cat("Keputusan: p-value < 0.05 --> TOLAK H0\n")
## Keputusan: p-value < 0.05 --> TOLAK H0
cat("Kesimpulan: Terdapat perbedaan proporsi kanker yang signifikan\n")
## Kesimpulan: Terdapat perbedaan proporsi kanker yang signifikan
cat("antara perokok dan bukan perokok.\n")
## antara perokok dan bukan perokok.
Uji chi-square independensi menguji apakah dua variabel kategori independen atau tidak.
Hipotesis:
Frekuensi Harapan: \[E_{ij} = \frac{n_{i.} \times n_{.j}}{n}\]
Statistik Uji Pearson Chi-Square: \[\chi^2 = \sum_{i,j} \frac{(O_{ij} - E_{ij})^2}{E_{ij}}, \quad df = (r-1)(c-1) = 1\]
# Frekuensi harapan manual
E11 <- (n1 * (a + c)) / n
E12 <- (n1 * (b + d)) / n
E21 <- (n2 * (a + c)) / n
E22 <- (n2 * (b + d)) / n
cat("=== Frekuensi Harapan ===\n")
## === Frekuensi Harapan ===
tabel_E <- matrix(c(round(E11,2), round(E12,2),
round(E21,2), round(E22,2)),
nrow = 2, byrow = TRUE)
rownames(tabel_E) <- c("Smoker", "Non-Smoker")
colnames(tabel_E) <- c("Cancer (+)", "Control (-)")
print(tabel_E)
## Cancer (+) Control (-)
## Smoker 669 669
## Non-Smoker 40 40
# Uji chi-square dengan R
hasil_chi1 <- chisq.test(tabel1, correct = FALSE)
cat("\n=== Uji Chi-Square ===\n\n")
##
## === Uji Chi-Square ===
cat("Statistik uji χ² :", round(hasil_chi1$statistic, 4), "\n")
## Statistik uji χ² : 19.1292
cat("Derajat bebas df :", hasil_chi1$parameter, "\n")
## Derajat bebas df : 1
cat("p-value :", format(hasil_chi1$p.value, scientific = TRUE), "\n\n")
## p-value : 1.221601e-05
cat("Nilai kritis χ²(0.05,1) :", round(qchisq(0.95, 1), 4), "\n\n")
## Nilai kritis χ²(0.05,1) : 3.8415
cat("Keputusan: χ² > nilai kritis --> TOLAK H0\n")
## Keputusan: χ² > nilai kritis --> TOLAK H0
cat("Kesimpulan: Terdapat asosiasi yang signifikan antara\n")
## Kesimpulan: Terdapat asosiasi yang signifikan antara
cat("kebiasaan merokok dan kanker paru.\n")
## kebiasaan merokok dan kanker paru.
Uji Likelihood Ratio adalah alternatif dari uji chi-square Pearson, menggunakan perbandingan log-likelihood antara model jenuh dan model independensi.
Statistik Uji: \[G^2 = 2 \sum_{i,j} O_{ij} \ln\!\left(\frac{O_{ij}}{E_{ij}}\right)\]
Seperti chi-square, \(G^2\) mengikuti distribusi \(\chi^2\) dengan \(df = (r-1)(c-1) = 1\).
# Hitung G² secara manual
obs <- c(a, b, c, d)
exp <- c(E11, E12, E21, E22)
G2 <- 2 * sum(obs * log(obs / exp))
pval_G2 <- pchisq(G2, df = 1, lower.tail = FALSE)
cat("=== Uji Likelihood Ratio ===\n\n")
## === Uji Likelihood Ratio ===
cat("Statistik uji G² :", round(G2, 4), "\n")
## Statistik uji G² : 19.878
cat("Derajat bebas df :", 1, "\n")
## Derajat bebas df : 1
cat("p-value :", format(pval_G2, scientific = TRUE), "\n\n")
## p-value : 8.25441e-06
cat("Keputusan: p-value < 0.05 --> TOLAK H0\n")
## Keputusan: p-value < 0.05 --> TOLAK H0
cat("Kesimpulan: Uji likelihood ratio juga menunjukkan asosiasi\n")
## Kesimpulan: Uji likelihood ratio juga menunjukkan asosiasi
cat("yang signifikan antara merokok dan kanker paru.\n")
## yang signifikan antara merokok dan kanker paru.
Fisher Exact Test menghitung probabilitas secara eksak dari tabel kontingensi, tanpa bergantung pada asumsi distribusi chi-square. Cocok untuk sampel kecil atau frekuensi harapan < 5.
Hipotesis:
hasil_fisher <- fisher.test(tabel1, alternative = "two.sided")
cat("=== Fisher Exact Test ===\n\n")
## === Fisher Exact Test ===
cat("OR estimasi (Fisher) :", round(hasil_fisher$estimate, 4), "\n")
## OR estimasi (Fisher) : 2.9716
cat("CI 95% untuk OR : [",
round(hasil_fisher$conf.int[1], 4), ",",
round(hasil_fisher$conf.int[2], 4), "]\n")
## CI 95% untuk OR : [ 1.7556 , 5.2107 ]
cat("p-value :", format(hasil_fisher$p.value, scientific = TRUE), "\n\n")
## p-value : 1.476303e-05
cat("Keputusan: p-value < 0.05 --> TOLAK H0\n")
## Keputusan: p-value < 0.05 --> TOLAK H0
cat("Kesimpulan: Secara eksak, terdapat asosiasi yang signifikan\n")
## Kesimpulan: Secara eksak, terdapat asosiasi yang signifikan
cat("antara merokok dan kanker paru.\n")
## antara merokok dan kanker paru.
cat("=================================================================\n")
## =================================================================
cat(" Metode Uji H0 Statistik df p-value Keputusan\n")
## Metode Uji H0 Statistik df p-value Keputusan
cat("=================================================================\n")
## =================================================================
cat(sprintf(" Uji Dua Proporsi p1 = p2 Z = %-6.4f 1 %-10s %s\n",
sqrt(hasil_prop$statistic),
format(hasil_prop$p.value, scientific=TRUE, digits=3),
"Tolak H0"))
## Uji Dua Proporsi p1 = p2 Z = 4.3737 1 1.22e-05 Tolak H0
cat(sprintf(" Chi-Square Independen χ² = %-6.4f 1 %-10s %s\n",
hasil_chi1$statistic,
format(hasil_chi1$p.value, scientific=TRUE, digits=3),
"Tolak H0"))
## Chi-Square Independen χ² = 19.1292 1 1.22e-05 Tolak H0
cat(sprintf(" Likelihood Ratio Independen G² = %-6.4f 1 %-10s %s\n",
G2,
format(pval_G2, scientific=TRUE, digits=3),
"Tolak H0"))
## Likelihood Ratio Independen G² = 19.8780 1 8.25e-06 Tolak H0
cat(sprintf(" Fisher Exact Test OR = 1 (eksak) %-10s %s\n",
format(hasil_fisher$p.value, scientific=TRUE, digits=3),
"Tolak H0"))
## Fisher Exact Test OR = 1 (eksak) 1.48e-05 Tolak H0
cat("=================================================================\n")
## =================================================================
Perbandingan:
Meskipun cara penghitungannya berbeda, semua keempat uji menghasilkan keputusan yang sama: tolak \(H_0\). Ini menunjukkan hasil yang robust (tidak sensitif terhadap pilihan metode).
# Mosaic Plot untuk visualisasi asosiasi
mosaicplot(tabel1,
main = "Hubungan Merokok dan Kanker Paru",
color = c("#e74c3c", "#3498db"),
xlab = "Status Merokok",
ylab = "Status Kanker")
Kesimpulan Kasus 1:
Berdasarkan seluruh analisis terhadap data hubungan merokok dan kanker paru:
Proporsi kanker pada perokok (51.4%) jauh lebih tinggi dibandingkan bukan perokok (26.2%).
Ukuran asosiasi menunjukkan hubungan yang kuat:
Keempat uji hipotesis (uji Z, chi-square, likelihood ratio, Fisher exact) konsisten menolak \(H_0\) dengan p-value yang kecil.
Terdapat asosiasi yang signifikan dan kuat antara kebiasaan merokok dan kanker paru. Perokok memiliki risiko yang jauh lebih tinggi terkena kanker paru dibandingkan bukan perokok.
Berbeda dari Kasus 1, tabel 2x3 memiliki 3 kategori pada salah satu variabel (partai: Democrat, Republican, Independent), sehingga analisis menjadi lebih kompleks.
tabel2 <- matrix(
c(495, 272, 590,
330, 265, 498),
nrow = 2, byrow = TRUE
)
rownames(tabel2) <- c("Female", "Male")
colnames(tabel2) <- c("Democrat", "Republican", "Independent")
addmargins(tabel2)
## Democrat Republican Independent Sum
## Female 495 272 590 1357
## Male 330 265 498 1093
## Sum 825 537 1088 2450
Frekuensi harapan adalah frekuensi yang diharapkan terjadi jika \(H_0\) benar (kedua variabel independen).
\[E_{ij} = \frac{n_{i.} \times n_{.j}}{n}\]
Di mana \(n_{i.}\) = total baris ke-\(i\), \(n_{.j}\) = total kolom ke-\(j\), \(n\) = grand total.
Aturan penting: Asumsi chi-square terpenuhi jika semua \(E_{ij} \geq 5\).
n_total2 <- sum(tabel2)
n_baris2 <- rowSums(tabel2)
n_kolom2 <- colSums(tabel2)
# Matriks frekuensi harapan
E2 <- outer(n_baris2, n_kolom2) / n_total2
cat("=== Frekuensi Harapan ===\n\n")
## === Frekuensi Harapan ===
print(round(addmargins(E2), 2))
## Democrat Republican Independent Sum
## Female 456.95 297.43 602.62 1357
## Male 368.05 239.57 485.38 1093
## Sum 825.00 537.00 1088.00 2450
cat("\nNilai minimum E :", round(min(E2), 2),
" --> Semua E >= 5? :",
ifelse(min(E2) >= 5, "YA, asumsi terpenuhi.",
"TIDAK, perlu metode alternatif."), "\n")
##
## Nilai minimum E : 239.57 --> Semua E >= 5? : YA, asumsi terpenuhi.
Hipotesis:
Derajat bebas untuk tabel \(r \times c\): \[df = (r-1)(c-1) = (2-1)(3-1) = 2\]
hasil_chi2 <- chisq.test(tabel2, correct = FALSE)
cat("=== Uji Chi-Square Kasus 2 ===\n\n")
## === Uji Chi-Square Kasus 2 ===
cat("Statistik uji χ² :", round(hasil_chi2$statistic, 4), "\n")
## Statistik uji χ² : 12.5693
cat("Derajat bebas df :", hasil_chi2$parameter, "\n")
## Derajat bebas df : 2
cat("p-value :", format(hasil_chi2$p.value, scientific = TRUE), "\n\n")
## p-value : 1.86475e-03
cat("Nilai kritis χ²(0.05, 2) :", round(qchisq(0.95, 2), 4), "\n\n")
## Nilai kritis χ²(0.05, 2) : 5.9915
cat("Keputusan: χ² > nilai kritis --> TOLAK H0\n")
## Keputusan: χ² > nilai kritis --> TOLAK H0
cat("Kesimpulan: Terdapat asosiasi signifikan antara gender\n")
## Kesimpulan: Terdapat asosiasi signifikan antara gender
cat("dan identifikasi partai politik.\n")
## dan identifikasi partai politik.
Setelah mengetahui bahwa ada asosiasi, kita ingin tahu sel mana yang paling menyimpang dari yang diharapkan di bawah \(H_0\).
Residual Pearson: \[r_{ij} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij}}}\]
Standardized Residual: \[d_{ij} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij}(1-\hat{p}_{i.})(1-\hat{p}_{.j})}}\]
Aturan interpretasi: \(|d_{ij}| > 2\) → sel tersebut menyimpang secara signifikan.
# Residual Pearson
resid_pearson2 <- hasil_chi2$residuals
# Standardized Residual
resid_std2 <- hasil_chi2$stdres
cat("=== Residual Pearson ===\n")
## === Residual Pearson ===
print(round(resid_pearson2, 4))
## Democrat Republican Independent
## Female 1.7801 -1.4747 -0.5140
## Male -1.9834 1.6431 0.5728
cat("\n=== Standardized Residual ===\n")
##
## === Standardized Residual ===
print(round(resid_std2, 4))
## Democrat Republican Independent
## Female 3.2724 -2.4986 -1.0322
## Male -3.2724 2.4986 1.0322
cat("\n=== Interpretasi (|d| > 2 = signifikan) ===\n\n")
##
## === Interpretasi (|d| > 2 = signifikan) ===
for (i in rownames(resid_std2)) {
for (j in colnames(resid_std2)) {
val <- resid_std2[i, j]
arah <- ifelse(val > 0, "lebih BANYAK dari harapan",
"lebih SEDIKIT dari harapan")
flag <- ifelse(abs(val) > 2, "* SIGNIFIKAN", " normal")
cat(sprintf(" %-8s & %-12s : d = %+.4f %s [%s]\n",
i, j, val, flag, arah))
}
}
## Female & Democrat : d = +3.2724 * SIGNIFIKAN [lebih BANYAK dari harapan]
## Female & Republican : d = -2.4986 * SIGNIFIKAN [lebih SEDIKIT dari harapan]
## Female & Independent : d = -1.0322 normal [lebih SEDIKIT dari harapan]
## Male & Democrat : d = -3.2724 * SIGNIFIKAN [lebih SEDIKIT dari harapan]
## Male & Republican : d = +2.4986 * SIGNIFIKAN [lebih BANYAK dari harapan]
## Male & Independent : d = +1.0322 normal [lebih BANYAK dari harapan]
# Visualisasi dengan mosaic plot (shading berdasarkan residual)
mosaicplot(tabel2,
shade = TRUE,
legend = TRUE,
main = "Mosaic Plot Gender vs Partai Politik\n(Shading = Standardized Residual)",
xlab = "Gender",
ylab = "Identifikasi Partai")
## Warning: In mosaicplot.default(tabel2, shade = TRUE, legend = TRUE, main = "Mosaic Plot Gender vs Partai Politik\n(Shading = Standardized Residual)",
## xlab = "Gender", ylab = "Identifikasi Partai") :
## extra argument 'legend' will be disregarded
Interpretasi Residual:
Partisi chi-square memecah tabel 2x3 menjadi sub-tabel yang lebih kecil untuk mengidentifikasi di mana tepatnya asosiasi terjadi.
Partisi yang dilakukan:
Syarat valid: jumlah \(df\) dari partisi = \(df\) total (\(1 + 1 = 2\)). ✓
# --- Partisi A: Democrat vs Republican ---
tabel_A <- tabel2[, c("Democrat", "Republican")]
hasil_A <- chisq.test(tabel_A, correct = FALSE)
cat("=== Partisi A: Democrat vs Republican ===\n\n")
## === Partisi A: Democrat vs Republican ===
print(addmargins(tabel_A))
## Democrat Republican Sum
## Female 495 272 767
## Male 330 265 595
## Sum 825 537 1362
cat("\nχ²(A) :", round(hasil_A$statistic, 4), "\n")
##
## χ²(A) : 11.5545
cat("df(A) :", hasil_A$parameter, "\n")
## df(A) : 1
cat("p-value :", format(hasil_A$p.value, scientific = TRUE), "\n")
## p-value : 6.758479e-04
# --- Partisi B: (Dem + Rep) vs Independent ---
tabel_B <- cbind(
"Dem+Rep" = tabel2[, "Democrat"] + tabel2[, "Republican"],
"Independent" = tabel2[, "Independent"]
)
hasil_B <- chisq.test(tabel_B, correct = FALSE)
cat("\n=== Partisi B: (Democrat+Republican) vs Independent ===\n\n")
##
## === Partisi B: (Democrat+Republican) vs Independent ===
print(addmargins(tabel_B))
## Dem+Rep Independent Sum
## Female 767 590 1357
## Male 595 498 1093
## Sum 1362 1088 2450
cat("\nχ²(B) :", round(hasil_B$statistic, 4), "\n")
##
## χ²(B) : 1.0654
cat("df(B) :", hasil_B$parameter, "\n")
## df(B) : 1
cat("p-value :", format(hasil_B$p.value, scientific = TRUE), "\n")
## p-value : 3.01979e-01
chi2_total2 <- hasil_chi2$statistic
chi2_A <- hasil_A$statistic
chi2_B <- hasil_B$statistic
chi2_sum <- chi2_A + chi2_B
cat("==============================================\n")
## ==============================================
cat(" Sumber χ² df p-value\n")
## Sumber χ² df p-value
cat("==============================================\n")
## ==============================================
cat(sprintf(" Keseluruhan (2x3) %-9.4f 2 %s\n",
chi2_total2,
format(hasil_chi2$p.value, scientific=TRUE, digits=3)))
## Keseluruhan (2x3) 12.5693 2 1.86e-03
cat(sprintf(" Partisi A (Dem-Rep)%-9.4f 1 %s\n",
chi2_A,
format(hasil_A$p.value, scientific=TRUE, digits=3)))
## Partisi A (Dem-Rep)11.5545 1 6.76e-04
cat(sprintf(" Partisi B (D+R-Ind)%-9.4f 1 %s\n",
chi2_B,
format(hasil_B$p.value, scientific=TRUE, digits=3)))
## Partisi B (D+R-Ind)1.0654 1 3.02e-01
cat("----------------------------------------------\n")
## ----------------------------------------------
cat(sprintf(" Jumlah A + B %-9.4f 2\n", chi2_sum))
## Jumlah A + B 12.6200 2
cat("==============================================\n")
## ==============================================
cat("\nSelisih χ² total vs jumlah partisi:",
round(chi2_total2 - chi2_sum, 4),
"(perbedaan kecil karena pembulatan)\n")
##
## Selisih χ² total vs jumlah partisi: -0.0507 (perbedaan kecil karena pembulatan)
Perbandingan:
# Kontribusi tiap sel terhadap chi-square total
kontrib2 <- (tabel2 - E2)^2 / E2
cat("=== Kontribusi Tiap Sel terhadap χ² ===\n\n")
## === Kontribusi Tiap Sel terhadap χ² ===
print(round(addmargins(kontrib2), 4))
## Democrat Republican Independent Sum
## Female 3.1686 2.1746 0.2642 5.6074
## Male 3.9339 2.6999 0.3281 6.9618
## Sum 7.1025 4.8745 0.5923 12.5693
cat("\n=== Standardized Residual (nilai absolut, diurutkan) ===\n\n")
##
## === Standardized Residual (nilai absolut, diurutkan) ===
# Menyusun data residual untuk identifikasi sel paling berkontribusi
resid_vec <- as.vector(abs(resid_std2))
names(resid_vec) <- paste(
rep(rownames(resid_std2), ncol(resid_std2)),
rep(colnames(resid_std2), each = nrow(resid_std2)),
sep = " & "
)
print(round(sort(resid_vec, decreasing = TRUE), 4))
## Female & Democrat Male & Democrat Female & Republican
## 3.2724 3.2724 2.4986
## Male & Republican Male & Independent Female & Independent
## 2.4986 1.0322 1.0322
Interpretasi — Kategori Paling Berkontribusi:
Berdasarkan nilai standardized residual dan kontribusi \(\chi^2\), kategori yang paling berkontribusi terhadap asosiasi antara Gender dan Identifikasi Partai adalah:
Kesimpulan Kasus 2:
Uji chi-square keseluruhan (\(\chi^2 =\) 12.5693, \(df = 2\), \(p < 0.001\)): Terdapat asosiasi yang signifikan antara gender dan identifikasi partai politik.
Standardized residual mengungkap pola asosiasi:
Partisi chi-square mengkonfirmasi bahwa asosiasi utama bersumber dari perbedaan antara Democrat vs Republican berdasarkan gender.
Kategori yang paling berkontribusi adalah Democrat (dan Republican sebagai kontrasnya), bukan Independent.
Tugas 6 ini memperluas pemahaman yang telah dibangun dari tugas-tugas sebelumnya:
Laporan ini dibuat menggunakan R Markdown dan dapat direproduksi sepenuhnya.