Analisis data kategorik memainkan peran penting dalam statistika terapan karena banyak fenomena dalam kehidupan nyata menghasilkan data dalam bentuk kategori, seperti jenis kelamin, status pekerjaan, tingkat pendidikan, preferensi konsumen, atau hasil diagnosis medis. Untuk menganalisis data semacam ini, umumnya digunakan pendekatan seperti tabel kontingensi, model log-linier, dan regresi logistik. Setiap metode memiliki keunggulan dan keterbatasan masing-masing, tergantung pada tujuan analisis serta struktur data yang dimiliki.
Tabel kontingensi sering menjadi langkah awal dalam analisis data kategorik untuk mengamati hubungan antara dua atau lebih variabel. Misalnya, dalam penelitian mengenai pengaruh obat terhadap serangan jantung, tabel kontingensi dapat menunjukkan jumlah pasien yang mengalami atau tidak mengalami serangan berdasarkan jenis obat yang digunakan. Analisis ini membantu mengidentifikasi pola hubungan awal dan menghitung ukuran asosiasi seperti odds ratio, risk ratio, serta statistik chi-kuadrat untuk menguji independensi antar variabel.
Untuk analisis yang lebih kompleks, terutama ketika ingin mempertimbangkan banyak variabel secara bersamaan serta interaksinya, model log-linier menjadi alat yang lebih tepat. Model ini merupakan bentuk khusus dari Generalized Linear Model (GLM) yang digunakan untuk memodelkan frekuensi dalam tabel kontingensi dan mengasumsikan distribusi Poisson. Berbeda dengan regresi logistik, model log-linier memperlakukan semua variabel secara setara, tanpa membedakan antara variabel dependen dan independen. Model ini lebih cocok untuk mengeksplorasi struktur asosiasi atau independensi di antara variabel-variabel kategorik.
Struktur dalam model log-linier dibentuk dari efek utama masing-masing variabel serta interaksi antara variabel. Misalnya, dalam tabel tiga arah (seperti jenis kelamin, kebiasaan merokok, dan penyakit paru), model ini bisa menentukan apakah cukup dengan mempertimbangkan interaksi dua variabel, atau perlu mempertimbangkan interaksi tiga arah. Evaluasi terhadap model biasanya dilakukan menggunakan likelihood ratio test untuk membandingkan antara model sederhana dan model yang lebih kompleks.
Sementara itu, regresi logistik merupakan metode yang paling umum digunakan ketika satu variabel kategorik dianggap sebagai variabel dependen (contohnya, status penyakit: ya atau tidak), dan satu atau lebih variabel kategorik atau numerik sebagai prediktor. Model ini memodelkan logit dari probabilitas kejadian (yakni log dari odds) dan sangat berguna dalam studi observasional maupun eksperimental, baik untuk menjelaskan maupun memprediksi kemungkinan terjadinya suatu peristiwa. Regresi logistik juga memiliki varian untuk outcome yang terdiri dari lebih dari dua kategori, seperti regresi logistik multinomial dan ordinal.
Dengan demikian, meskipun ketiganya berfokus pada data kategorik, masing-masing metode memiliki orientasi yang berbeda: tabel kontingensi bersifat deskriptif, model log-linier bersifat eksploratif untuk memahami hubungan antar variabel secara simetris, dan regresi logistik bersifat prediktif terhadap outcome. Pemilihan metode tergantung pada tujuan analisis, apakah untuk menggambarkan data, mengeksplorasi struktur hubungan, atau memprediksi hasil berdasarkan variabel penjelas. Dalam praktik, ketiganya sering digunakan secara terpadu untuk mendapatkan pemahaman menyeluruh terhadap data kategorik yang dianalisis.
Ringkasan
Dalam analisis data kategorik, terdapat beberapa pendekatan statistik yang umum digunakan, antara lain:
Meskipun ketiganya dapat digunakan pada data kategorik, pendekatan dan interpretasinya sangat berbeda.
Tabel kontingensi menyajikan jumlah frekuensi dari kombinasi kategori antar variabel.
Contoh tabel 2x2:
table_data <- matrix(c(30, 20, 50, 70), nrow=2, dimnames = list(Obat = c("Timolol", "Placebo"), Serangan = c("Ya", "Tidak")))
table_data
## Serangan
## Obat Ya Tidak
## Timolol 30 50
## Placebo 20 70
Tabel kontingensi bersifat deskriptif dan tidak melibatkan pemodelan probabilitas.
Model loglinear memodelkan logaritma dari ekspektasi frekuensi sel dalam tabel kontingensi.
\[ \log(\mu_{ij}) = \lambda + \lambda_{i}^{A} + \lambda_{j}^{B} + \lambda_{ij}^{AB} \]
library(MASS)
loglm(~ Obat * Serangan, data = table_data)
## Call:
## loglm(formula = ~Obat * Serangan, data = table_data)
##
## Statistics:
## X^2 df P(> X^2)
## Likelihood Ratio 0 0 1
## Pearson 0 0 1
Model Regresi Logistik Biner:
\[ \log\left(\frac{p}{1-p}\right) = \beta_0 + \beta_1x \]
Contoh:
data_glm <- data.frame(
Serangan = c(1, 0, 1, 0),
Obat = factor(c("Timolol", "Timolol", "Placebo", "Placebo")),
Frek = c(30, 20, 50, 70)
)
model_logit <- glm(Serangan ~ Obat, weights = Frek, family = binomial, data = data_glm)
summary(model_logit)
##
## Call:
## glm(formula = Serangan ~ Obat, family = binomial, data = data_glm,
## weights = Frek)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.3365 0.1852 -1.817 0.0692 .
## ObatTimolol 0.7419 0.3430 2.163 0.0305 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 235.08 on 3 degrees of freedom
## Residual deviance: 230.31 on 2 degrees of freedom
## AIC: 234.31
##
## Number of Fisher Scoring iterations: 4
| Aspek | Tabel Kontingensi | Model Loglinear | Regresi Logistik |
|---|---|---|---|
| Tujuan | Deskripsi frekuensi | Deteksi asosiasi | Prediksi probabilitas |
| Variabel dependen | Tidak ada | Tidak ada (simetris) | Ada (eksplisit) |
| Distribusi | Tidak diasumsikan | Poisson (frekuensi sel) | Binomial (probabilitas) |
| Bentuk Model | Tidak ada | GLM: \(\log(\mu) \sim \text{efek}\) | GLM: \(\log\left(\frac{p}{1-p}\right) \sim \text{prediktor}\) |
| Cocok untuk | Eksplorasi awal | Tabel > 2 variabel | Studi prediktif |
Tabel kontingensi menyajikan frekuensi dari kombinasi kategori antar dua atau lebih variabel. Misal:
# Contoh tabel 2x2
matrix(c(30, 20, 50, 70), nrow=2, dimnames = list(Obat = c("Timolol", "Placebo"), Serangan = c("Ya", "Tidak")))
## Serangan
## Obat Ya Tidak
## Timolol 30 50
## Placebo 20 70
Model log-linier untuk tabel \(I \times J\) dapat dituliskan:
\[ \log(\mu_{ij})=\lambda+\lambda_i^T+\lambda_j^R+\lambda_{ij}^{TR} \]
Model saturated atau model penuh menyertakan seluruh efek utama dan interaksi:
Contoh formulasi untuk tabel 2x2:
# Data
library(MASS)
data <- matrix(c(35, 65, 45, 55), nrow=2, byrow=TRUE)
dimnames(data) <- list(Obat = c("Timolol", "Placebo"), Serangan = c("Ya", "Tidak"))
ftable(data)
## Serangan Ya Tidak
## Obat
## Timolol 35 65
## Placebo 45 55
# Model saturated
model_saturated <- loglm(~ Obat * Serangan, data = data)
summary(model_saturated)
## Formula:
## ~Obat * Serangan
## attr(,"variables")
## list(Obat, Serangan)
## attr(,"factors")
## Obat Serangan Obat:Serangan
## Obat 1 0 1
## Serangan 0 1 1
## attr(,"term.labels")
## [1] "Obat" "Serangan" "Obat:Serangan"
## attr(,"order")
## [1] 1 1 2
## attr(,"intercept")
## [1] 1
## attr(,"response")
## [1] 0
## attr(,".Environment")
## <environment: R_GlobalEnv>
##
## Statistics:
## X^2 df P(> X^2)
## Likelihood Ratio 0 0 1
## Pearson 0 0 1
Model independen mengasumsikan bahwa tidak ada interaksi antara variabel:
\[ \log(\mu_{ij})=\mu+\lambda_i^T+\lambda_j^R \]
Model ini menguji hipotesis bahwa variabel X dan Y saling independen.
model_indep <- loglm(~ Obat + Serangan, data = data)
summary(model_indep)
## Formula:
## ~Obat + Serangan
## attr(,"variables")
## list(Obat, Serangan)
## attr(,"factors")
## Obat Serangan
## Obat 1 0
## Serangan 0 1
## attr(,"term.labels")
## [1] "Obat" "Serangan"
## attr(,"order")
## [1] 1 1
## attr(,"intercept")
## [1] 1
## attr(,"response")
## [1] 0
## attr(,".Environment")
## <environment: R_GlobalEnv>
##
## Statistics:
## X^2 df P(> X^2)
## Likelihood Ratio 2.087576 1 0.1485015
## Pearson 2.083333 1 0.1489147
Odds ratio untuk tabel 2x2:
\[ \text{OR}=\frac{n_{11}n_{22}}{n_{12}n_{21}} \]
Interpretasi nilai OR:
Dalam model saturated:
# Estimasi odds ratio dan log-odds
logOR <- log((data[1,1] * data[2,2]) / (data[1,2] * data[2,1]))
logOR
## [1] -0.4183685
Perbandingan antar model dilakukan dengan menggunakan statistik deviance (\(G^2\)) atau likelihood ratio test.
anova(model_indep, model_saturated)
## LR tests for hierarchical log-linear models
##
## Model 1:
## ~Obat + Serangan
## Model 2:
## ~Obat * Serangan
##
## Deviance df Delta(Dev) Delta(df) P(> Delta(Dev)
## Model 1 2.087576 1
## Model 2 0.000000 0 2.087576 1 0.1485
## Saturated 0.000000 0 0.000000 0 1.0000
Studi dari Agresti (2019) membahas hubungan antara kebahagiaan dan kepercayaan terhadap kehidupan akhirat.
data_survey <- matrix(c(32,190,113,611,51,326), nrow = 3, byrow = TRUE, dimnames = list(Kebahagiaan = c("Tidak", "Cukup", "Sangat"), Surga = c("Tidak Percaya", "Percaya")))
ftable(data_survey)
## Surga Tidak Percaya Percaya
## Kebahagiaan
## Tidak 32 190
## Cukup 113 611
## Sangat 51 326
loglm(~ Kebahagiaan + Surga, data = data_survey)
## Call:
## loglm(formula = ~Kebahagiaan + Surga, data = data_survey)
##
## Statistics:
## X^2 df P(> X^2)
## Likelihood Ratio 0.8911136 2 0.6404675
## Pearson 0.8836760 2 0.6428538
Model log-linear adalah model yang digunakan untuk menganalisis hubungan antara dua atau lebih variabel kategorik yang disajikan dalam tabel kontingensi. Model ini mengasumsikan bahwa logaritma dari nilai ekspektasi frekuensi sel (\(\mu_{ij}\)) dapat dinyatakan sebagai penjumlahan efek variabel dan (bila perlu) interaksinya. Untuk tabel 2x2:
\[ \log(\mu_{ij})=\lambda+\lambda_i^A+\lambda_j^B+\lambda_{ij}^{AB} \]
Model log-linear digunakan untuk memodelkan frekuensi (count) pada tabel kontingensi dan menguji asosiasi antar variabel kategorik, tanpa menganggap ada variabel respon dan prediktor.
Model regresi logistik digunakan untuk memodelkan probabilitas kejadian suatu outcome (biner) berdasarkan satu atau lebih prediktor (bisa kategorik maupun kontinu).
Sistem Persamaan Model Log-Linear
\[ \begin{aligned} \log(\mu_{11}) &= \lambda+\lambda_1^A+\lambda_1^B+\lambda_{11}^{AB} \\ \log(\mu_{12}) &= \lambda+\lambda_1^A+\lambda_2^B+\lambda_{12}^{AB} \\ \log(\mu_{21}) &= \lambda+\lambda_2^A+\lambda_1^B+\lambda_{21}^{AB} \\ \log(\mu_{22}) &= \lambda+\lambda_2^A+\lambda_2^B+\lambda_{22}^{AB} \end{aligned} \]
Constraint Sum-to-Zero
\[ \lambda_1^A+\lambda_2^A=0, \quad \lambda_1^B+\lambda_2^B=0, \quad \lambda_{11}^{AB}+\lambda_{12}^{AB}+\lambda_{21}^{AB}+\lambda_{22}^{AB}=0 \]
Rumus Estimasi Parameter dengan Sum-to-Zero Constraint
\[ \begin{aligned} \lambda_1^A &= \frac{1}{2} \left[ (\log \mu_{11} + \log \mu_{12}) - (\log \mu_{21} + \log \mu_{22}) \right] \\ \lambda_1^B &= \frac{1}{2} \left[ (\log \mu_{11} + \log \mu_{21}) - (\log \mu_{12} + \log \mu_{22}) \right] \\ \lambda_{12}^{AB} &= \frac{1}{4} \left[ \log \mu_{12} - \log \mu_{11} - \log \mu_{22} + \log \mu_{21} \right] \end{aligned} \]
Diberikan data:
| Merokok | Sakit | Sehat |
|---|---|---|
| Ya | 30 | 20 |
| Tidak | 10 | 40 |
Model log-linear pada tabel 2x2:
\[ \log(\mu_{ij})=\lambda+\lambda_i^A+\lambda_j^B+\lambda_{ij}^{AB} \]
dengan constraint sum-to-zero:
\[ \sum_i \lambda_i^A=0, \quad \sum_j \lambda_j^B=0, \quad \sum_{i,j} \lambda_{ij}^{AB}=0 \]
Misalkan:
Observasi:
\[ \begin{aligned} \log(\mu_{11}) &= \lambda+\lambda_1^A+\lambda_1^B+\lambda_{11}^{AB} \\ \log(\mu_{12}) &= \lambda+\lambda_1^A+\lambda_2^B+\lambda_{12}^{AB} \\ \log(\mu_{21}) &= \lambda+\lambda_2^A+\lambda_1^B+\lambda_{21}^{AB} \\ \log(\mu_{22}) &= \lambda+\lambda_2^A+\lambda_2^B+\lambda_{22}^{AB} \end{aligned} \]
Constraint sum-to-zero:
\[ \lambda_1^A+\lambda_2^A=0 \]
\[ \lambda_1^B+\lambda_2^B=0 \]
\[ \lambda_{11}^{AB}+\lambda_{12}^{AB}+\lambda_{21}^{AB}+\lambda_{22}^{AB}=0 \]
Langkah-langkah:
Hitung rata-rata log frekuensi sel:
\[ \lambda = \frac{1}{4} \sum_{i=1}^2 \sum_{j=1}^2 \log(n_{ij}) = \frac{1}{4} \left[ \log(30) + \log(20) + \log(10) + \log(40) \right] = 3.0971 \]
Efek utama A (Merokok):
\[ \begin{aligned} \lambda_1^A &= \frac{1}{2} \left[ (\log(30) + \log(20)) - (\log(10) + \log(40)) \right] \\ &= \frac{1}{2} \left[ (3.4012 + 2.9957) - (2.3026 + 3.6889) \right] \\ &= \frac{1}{2} (6.3969 - 5.9915) = \frac{1}{2} (0.4054) = 0.2027 \\ \lambda_2^A &= -0.2027 \end{aligned} \]
Efek utama B (Status):
\[ \begin{aligned} \lambda_1^B &= \frac{1}{2} \left[ (\log(30) + \log(10)) - (\log(20) + \log(40)) \right] \\ &= \frac{1}{2} \left[ (3.4012 + 2.3026) - (2.9957 + 3.6889) \right] \\ &= \frac{1}{2} (5.7038 - 6.6846) = \frac{1}{2} (-0.9808) = -0.4904 \\ \lambda_2^B &= +0.4904 \end{aligned} \]
Efek interaksi:
\[ \begin{aligned} \lambda_{11}^{AB} &= \frac{1}{4} \left[ \log(30) - \log(20) - \log(10) + \log(40) \right] \\ &= \frac{1}{4} \left[ 3.4012 - 2.9957 - 2.3026 + 3.6889 \right] \\ &= \frac{1}{4} (3.4012 - 2.9957 - 2.3026 + 3.6889) = \frac{1}{4} (1.7918) = 0.4479 \\ \lambda_{12}^{AB} &= -\lambda_{11}^{AB} = -0.4479 \\ \lambda_{21}^{AB} &= -0.4479 \\ \lambda_{22}^{AB} &= +0.4479 \end{aligned} \]
Ringkasan parameter:
\[ \text{OR} = \frac{n_{11}n_{22}}{n_{12}n_{21}} = \frac{30 \times 40}{20 \times 10} = \frac{1200}{200} = 6 \]
Log odds ratio:
\[ \log(\text{OR}) = \log(6) = 1.7918 \]
Standard error (SE):
\[ \text{SE} = \sqrt{\frac{1}{n_{11}} + \frac{1}{n_{12}} + \frac{1}{n_{21}} + \frac{1}{n_{22}}} = \sqrt{\frac{1}{30} + \frac{1}{20} + \frac{1}{10} + \frac{1}{40}} = \sqrt{0.0333 + 0.05 + 0.1 + 0.025} = \sqrt{0.2083} = 0.4564 \]
95% Confidence Interval for log(OR):
\[ \log(\text{OR}) \pm 1.96 \times \text{SE} = 1.7918 \pm 1.96 \times 0.4564 = (1.7918 - 0.895, 1.7918 + 0.895) = (0.8968, 2.6868) \]
Back-transform to get CI for OR:
\[ \text{Lower} = \exp(0.8968) = 2.452, \quad \text{Upper} = \exp(2.6868) = 14.68 \]
Jadi, OR = 6 (95% CI: 2.45 – 14.68)
# Data 2x2
tabel <- matrix(c(30, 20, 10, 40), nrow = 2, byrow = TRUE)
colnames(tabel) <- c("Sakit", "Sehat")
rownames(tabel) <- c("Ya", "Tidak")
data <- as.data.frame(as.table(tabel))
colnames(data) <- c("Merokok", "Status", "Freq")
# Model tanpa interaksi
fit_no_inter <- glm(Freq ~ Merokok + Status, family = poisson, data = data)
summary(fit_no_inter)
##
## Call:
## glm(formula = Freq ~ Merokok + Status, family = poisson, data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.996e+00 1.871e-01 16.013 <2e-16 ***
## MerokokTidak 3.892e-10 2.000e-01 0.000 1.000
## StatusSehat 4.055e-01 2.041e-01 1.986 0.047 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 21.288 on 3 degrees of freedom
## Residual deviance: 17.261 on 1 degrees of freedom
## AIC: 43.036
##
## Number of Fisher Scoring iterations: 4
# Model dengan interaksi
fit_inter <- glm(Freq ~ Merokok * Status, family = poisson, data = data)
summary(fit_inter)
##
## Call:
## glm(formula = Freq ~ Merokok * Status, family = poisson, data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.4012 0.1826 18.629 < 2e-16 ***
## MerokokTidak -1.0986 0.3651 -3.009 0.00262 **
## StatusSehat -0.4055 0.2887 -1.405 0.16015
## MerokokTidak:StatusSehat 1.7918 0.4564 3.926 8.65e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 2.1288e+01 on 3 degrees of freedom
## Residual deviance: 3.9968e-15 on 0 degrees of freedom
## AIC: 27.775
##
## Number of Fisher Scoring iterations: 3
Parameter utama (intercept) menunjukkan rata-rata log frekuensi
sel.
Efek “Merokok” dan “Status” menunjukkan perbedaan log frekuensi antar
kategori.
Interaksi signifikan menunjukkan adanya asosiasi antara Merokok dan
Status.
Nilai \(\log(6) = 1.79\) itu sama
dengan efek interaksi output R.
Suatu survei dilakukan untuk mengetahui hubungan antara Jenis Kelamin (Laki-laki/Perempuan) dan Kategori BMI (Kurus/Normal/Gemuk):
| Kurus | Normal | Gemuk | |
|---|---|---|---|
| Laki-laki | 12 | 20 | 8 |
| Perempuan | 18 | 24 | 10 |
Bentuk umum model log-linear untuk tabel 2x3 (dengan sum-to-zero constraint):
\[ \log(\mu_{ij})=\lambda+\lambda_i^A+\lambda_j^B+\lambda_{ij}^{AB} \]
dengan:
Constraint:
\[ \sum_i \lambda_i^A=0, \quad \sum_j \lambda_j^B=0, \quad \sum_i \lambda_{ij}^{AB}=0, \quad \sum_j \lambda_{ij}^{AB}=0 \]
Secara eksplisit:
\[ \log(\mu_{ij}) = \lambda + \lambda_1^A \text{(Laki-laki)}, \lambda_2^A \text{(Perempuan)} + \lambda_1^B \text{(Kurus)}, \lambda_2^B \text{(Normal)}, \lambda_3^B \text{(Gemuk)} + \lambda_{ij}^{AB} \text{(interaksi jika ada)} \]
# Membuat data frame dari tabel
tabel2x3 <- matrix(c(12, 20, 8, 18, 24, 10), nrow = 2, byrow = TRUE)
colnames(tabel2x3) <- c("Kurus", "Normal", "Gemuk")
rownames(tabel2x3) <- c("Laki-laki", "Perempuan")
data2x3 <- as.data.frame(as.table(tabel2x3))
colnames(data2x3) <- c("JenisKelamin", "BMI", "Freq")
# Model log-linear tanpa interaksi (asumsi independen)
fit_no_inter <- glm(Freq ~ JenisKelamin + BMI, family = poisson, data = data2x3)
summary(fit_no_inter)
##
## Call:
## glm(formula = Freq ~ JenisKelamin + BMI, family = poisson, data = data2x3)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.5683 0.2179 11.789 <2e-16 ***
## JenisKelaminPerempuan 0.2624 0.2103 1.248 0.2122
## BMINormal 0.3830 0.2368 1.618 0.1058
## BMIGemuk -0.5108 0.2981 -1.713 0.0866 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 13.06443 on 5 degrees of freedom
## Residual deviance: 0.22527 on 2 degrees of freedom
## AIC: 35.26
##
## Number of Fisher Scoring iterations: 3
# Model log-linear dengan interaksi (untuk cek asosiasi)
fit_inter <- glm(Freq ~ JenisKelamin * BMI, family = poisson, data = data2x3)
summary(fit_inter)
##
## Call:
## glm(formula = Freq ~ JenisKelamin * BMI, family = poisson, data = data2x3)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.4849 0.2887 8.608 <2e-16 ***
## JenisKelaminPerempuan 0.4055 0.3727 1.088 0.277
## BMINormal 0.5108 0.3651 1.399 0.162
## BMIGemuk -0.4055 0.4564 -0.888 0.374
## JenisKelaminPerempuan:BMINormal -0.2231 0.4802 -0.465 0.642
## JenisKelaminPerempuan:BMIGemuk -0.1823 0.6032 -0.302 0.762
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 1.3064e+01 on 5 degrees of freedom
## Residual deviance: -9.0719e-30 on 0 degrees of freedom
## AIC: 39.034
##
## Number of Fisher Scoring iterations: 3
Model tanpa interaksi:
- Jika deviance tidak signifikan, maka Jenis Kelamin dan BMI
independen.
Intercept: log frekuensi pada kategori referensi (Laki-laki, Kurus)
Koefisien JenisKelaminPerempuan: perbedaan log-frekuensi antara Perempuan vs Laki-laki (pada Kurus)
Koefisien BMI: perbedaan log-frekuensi kategori BMI (Normal/Gemuk) terhadap Kurus (pada Laki-laki)
Model dengan interaksi:
Jika koefisien interaksi signifikan, berarti ada hubungan/asosiasi antara Jenis Kelamin dan BMI. Artinya distribusi BMI berbeda antara Laki-laki dan Perempuan.
Contoh interpretasi hasil (misal):
Pada pembahasan sebelumnya, kita telah memahami bahwa salah satu tujuan utama dari penyusunan model log linear adalah untuk mengestimasi parameter-parameter yang menjelaskan hubungan di antara variabel-variabel kategorik.
Pada materi kali ini, kita akan membahas model log linear yang lebih kompleks, yaitu model log linear untuk tabel kontingensi tiga arah. Model ini melibatkan tiga variabel kategorik, sehingga kemungkinan interaksi yang dapat terjadi di dalam model pun menjadi lebih banyak. Dalam konteks ini, interaksi paling tinggi yang dapat dimodelkan adalah interaksi tiga arah, yaitu interaksi yang melibatkan ketiga variabel secara bersamaan.
Model log-linear yang melibatkan tiga variabel kategorik (misal: X, Y, dan Z) dapat dibangun dalam berbagai bentuk model, tergantung pada tingkat interaksi yang ingin dimasukkan. Berikut adalah beberapa alternatif model log-linear yang umum digunakan:
Model Saturated
\[ \log(\mu_{ijk})=\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ij}^{XY}+\lambda_{ik}^{XZ}+\lambda_{jk}^{YZ}+\lambda_{ijk}^{XYZ} \]
Model ini memuat semua kemungkinan interaksi, termasuk interaksi tiga arah (X, Y, dan Z).
Model Homogen
\[ \log(\mu_{ijk})=\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ij}^{XY}+\lambda_{ik}^{XZ}+\lambda_{jk}^{YZ} \]
Model ini hanya mengakomodasi interaksi dua arah antar variabel tanpa memasukkan interaksi tiga arah.
Model Conditional
Conditional pada X:
\[ \log(\mu_{ijk})=\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ij}^{XY}+\lambda_{ik}^{XZ} \]
Memuat interaksi X dengan Y dan X dengan Z.
Conditional pada Y:
\[ \log(\mu_{ijk})=\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ij}^{XY}+\lambda_{jk}^{YZ} \]
Memuat interaksi Y dengan X dan Y dengan Z.
Conditional pada Z:
\[ \log(\mu_{ijk})=\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ik}^{XZ}+\lambda_{jk}^{YZ} \]
Memuat interaksi Z dengan X dan Z dengan Y.
Model Joint Independence
Independensi antara X & Y:
\[ \log(\mu_{ijk})=\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ij}^{XY} \]
Independensi antara X & Z:
\[ \log(\mu_{ijk})=\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ik}^{XZ} \]
Independensi antara Y & Z:
\[ \log(\mu_{ijk})=\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{jk}^{YZ} \]
Model Tanpa Interaksi
\[ \log(\mu_{ijk})=\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z \]
Model ini hanya memasukkan efek utama tanpa interaksi antar variabel.
Dalam analisis model log-linear tiga arah, pengujian interaksi dilakukan untuk mengetahui ada atau tidaknya interaksi antar variabel. Pengujian ini dilakukan secara bertahap, dimulai dari tingkat interaksi tertinggi ke yang lebih rendah. Untuk model log-linear dengan tiga peubah (X, Y, dan Z), tahapan pengujian meliputi:
Pengujian Interaksi Tiga Arah (XYZ):
Pengujian Interaksi Dua Arah (XY, XZ, YZ):
Setiap tahapan pengujian dilakukan untuk menilai kecocokan model dan menentukan struktur interaksi mana yang paling sesuai dengan data yang diamati.
Gunakan Program R untuk menyelesaikan soal berikut:
Tabel berikut menyajikan data dari survei General Social Survey (GSS) tahun 1994 mengenai jenis kelamin responden, tingkat fundamentalisme, dan sikap terhadap hukuman mati untuk kasus pembunuhan. Susun dan interpretasikan model log-linear paling sederhana (paling parsimonious) untuk data ini. Jelaskan proses yang Anda lakukan dalam menentukan model terbaik serta asosiasi apa saja yang teridentifikasi. Tunjukkan juga bagaimana nilai yang diprediksi dari model menggambarkan asosiasi tersebut.
| Fundamentalisme | Jenis Kelamin | Mendukung | Menolak | Total |
|---|---|---|---|---|
| Fundamentalist | Laki-laki | 128 | 32 | 160 |
| Fundamentalist | Perempuan | 123 | 73 | 196 |
| Fundamentalist | Total | 251 | 105 | 356 |
| Moderate | Laki-laki | 182 | 56 | 238 |
| Moderate | Perempuan | 168 | 105 | 273 |
| Moderate | Total | 350 | 161 | 511 |
| Liberal | Laki-laki | 119 | 49 | 168 |
| Liberal | Perempuan | 111 | 70 | 181 |
| Liberal | Total | 230 | 119 | 349 |
Keterangan:
library("epitools")
library("DescTools")
## Warning: package 'DescTools' was built under R version 4.3.3
library("lawstat")
## Warning: package 'lawstat' was built under R version 4.3.3
Input Data
# Input data sesuai tabel praktikum
z.fund <- factor(rep(c("1fund", "2mod", "3lib"), each = 4))
x.sex <- factor(rep(c("1M", "2F"), each = 2, times = 3))
y.fav <- factor(rep(c("1fav", "2opp"), times = 6))
counts <- c(128, 32, 123, 73, 182, 56, 168, 105, 119, 49, 111, 70)
data <- data.frame(
Fundamentalisme = z.fund,
Jenis_Kelamin = x.sex,
Sikap = y.fav,
Frekuensi = counts
)
# Membentuk Tabel Kontingensi 3 Arah
table3d <- xtabs(Frekuensi ~ Fundamentalisme + Jenis_Kelamin + Sikap, data = data)
ftable(table3d)
## Sikap 1fav 2opp
## Fundamentalisme Jenis_Kelamin
## 1fund 1M 128 32
## 2F 123 73
## 2mod 1M 182 56
## 2F 168 105
## 3lib 1M 119 49
## 2F 111 70
Kita akan memodelkan tabel ini menggunakan beberapa model log-linear dan membandingkan kecocokan model (parsimonious model):
# Penentuan kategori reference
x.sex <- relevel(x.sex, ref = "2F")
y.fav <- relevel(y.fav, ref = "2opp")
z.fund <- relevel(z.fund, ref = "3lib")
Model Saturated
Model log-linear saturated memasukkan semua interaksi hingga tiga arah:
\[ \log(\mu_{ijk})=\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ij}^{XY}+\lambda_{ik}^{XZ}+\lambda_{jk}^{YZ}+\lambda_{ijk}^{XYZ} \]
# Model saturated
model_saturated <- glm(counts ~ x.sex + y.fav + z.fund +
x.sex*y.fav + x.sex*z.fund + y.fav*z.fund +
x.sex*y.fav*z.fund,
family = poisson(link = "log"))
summary(model_saturated)
##
## Call:
## glm(formula = counts ~ x.sex + y.fav + z.fund + x.sex * y.fav +
## x.sex * z.fund + y.fav * z.fund + x.sex * y.fav * z.fund,
## family = poisson(link = "log"))
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 4.248495 0.119523 35.545 < 2e-16 ***
## x.sex1M -0.356675 0.186263 -1.915 0.05551 .
## y.fav1fav 0.461035 0.152626 3.021 0.00252 **
## z.fund1fund 0.041964 0.167285 0.251 0.80193
## z.fund2mod 0.405465 0.154303 2.628 0.00860 **
## x.sex1M:y.fav1fav 0.426268 0.228268 1.867 0.06185 .
## x.sex1M:z.fund1fund -0.468049 0.282210 -1.659 0.09721 .
## x.sex1M:z.fund2mod -0.271934 0.249148 -1.091 0.27507
## y.fav1fav:z.fund1fund 0.060690 0.212423 0.286 0.77511
## y.fav1fav:z.fund2mod 0.008969 0.196903 0.046 0.96367
## x.sex1M:y.fav1fav:z.fund1fund 0.438301 0.336151 1.304 0.19227
## x.sex1M:y.fav1fav:z.fund2mod 0.282383 0.301553 0.936 0.34905
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 2.4536e+02 on 11 degrees of freedom
## Residual deviance: 5.9952e-15 on 0 degrees of freedom
## AIC: 100.14
##
## Number of Fisher Scoring iterations: 3
Model yang digunakan adalah model log-linear saturated dengan semua efek utama, interaksi dua arah, dan interaksi tiga arah. Model ini memodelkan hubungan antara jenis kelamin (x.sex), sikap terhadap hukuman mati (y.fav), dan tingkat fundamentalisme (z.fund) terhadap frekuensi responden.
| Parameter | Estimate | Std. Error | z value | Pr(> | z |
|---|---|---|---|---|---|
| (Intercept) | 4.25 | 0.12 | 35.55 | <2e-16 *** | 70.00 |
| x.sex1M | -0.36 | 0.19 | -1.92 | 0.055 . | 0.70 |
| y.fav1fav | 0.46 | 0.15 | 3.02 | 0.0025 ** | 1.59 |
| z.fund1fund | 0.04 | 0.17 | 0.25 | 0.80 | 1.04 |
| z.fund2mod | 0.41 | 0.15 | 2.63 | 0.0086 ** | 1.50 |
| x.sex1M:y.fav1fav | 0.43 | 0.23 | 1.87 | 0.062 . | 1.53 |
| x.sex1M:z.fund1fund | -0.47 | 0.283 | -1.66 | 0.097 . | 0.63 |
| x.sex1M:z.fundadorable | f 0.28 | 0.30 | 0.94 | 0.35 | 1.33 |
| y.fav1fav:z.fund1fund | 0.06 | 0.21 | 0.29 | 0.78 | 1.06 |
| y.fav1fav:z.fav z | 0.01 | 0.20 | 0.05 | 0.96 | 1.01 |
| x.sex1M:y.fav1fav:z.fund1 | 0.44 | 0.34 | 1.30 | 0.194 | |
| x.sex1M:y.fav1fav:z.fund2mod | f0.28 | 0.30 | 0.943 | 0.346 | 1.33 |
Residual deviance \(\approx 0\)
menandakan model saturated benar-benar fit terhadap data (seluruh
variasi data dijelaskan oleh model).
AIC = 100.14 dapat digunakan untuk perbandingan dengan model yang lebih
sederhana.
Model saturated ini sangat fit dengan data, namun tidak semua parameter/interaksi signifikan.
Efek utama yang paling signifikan adalah:
Tidak ditemukan bukti kuat interaksi dua atau tiga arah yang signifikan.
Model yang lebih sederhana (tanpa interaksi tiga arah) perlu dipertimbangkan untuk model final yang lebih parsimonious.
Catatan interpretasi:
Model log-linear homogenous memasukkan semua efek utama dan semua interaksi dua arah, tanpa interaksi tiga arah:
\[ \log(\mu_{ijk})=\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ij}^{XY}+\lambda_{ik}^{XZ}+\lambda_{jk}^{YZ} \]
# Homogenous Model
model_homogenous <- glm(counts ~ x.sex + y.fav + z.fund +
x.sex*y.fav + x.sex*z.fund + y.fav*z.fund,
family = poisson(link = "log"))
summary(model_homogenous)
##
## Call:
## glm(formula = counts ~ x.sex + y.fav + z.fund + x.sex * y.fav +
## x.sex * z.fund + y.fav * z.fund, family = poisson(link = "log"))
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 4.31096 0.10522 40.972 < 2e-16 ***
## x.sex1M -0.51575 0.13814 -3.733 0.000189 ***
## y.fav1fav 0.35707 0.12658 2.821 0.004788 **
## z.fund1fund -0.06762 0.14452 -0.468 0.639854
## z.fund2mod 0.33196 0.13142 2.526 0.011540 *
## x.sex1M:y.fav1fav 0.66406 0.12728 5.217 1.81e-07 ***
## x.sex1M:z.fund1fund -0.16201 0.15300 -1.059 0.289649
## x.sex1M:z.fund2mod -0.08146 0.14079 -0.579 0.562887
## y.fav1fav:z.fund1fund 0.23873 0.16402 1.455 0.145551
## y.fav1fav:z.fund2mod 0.13081 0.14951 0.875 0.381614
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 245.361 on 11 degrees of freedom
## Residual deviance: 1.798 on 2 degrees of freedom
## AIC: 97.934
##
## Number of Fisher Scoring iterations: 3
# Deviance antar model
Deviance.model <- model_homogenous$deviance - model_saturated$deviance
Deviance.model
## [1] 1.797977
# Derajat bebas = db model homogenous - db model saturated
derajat.bebas <- (model_homogenous$df.residual - model_saturated$df.residual)
derajat.bebas
## [1] 2
chi.tabel <- qchisq(1 - 0.05, df = derajat.bebas)
chi.tabel
## [1] 5.991465
Keputusan <- ifelse(Deviance.model <= chi.tabel, "Terima H0", "Tolak H0")
Keputusan
## [1] "Terima H0"
Interpretasi
Pada taraf nyata 5%, belum cukup bukti untuk menolak \(H_0\) atau dapat dikatakan bahwa tidak ada interaksi tiga arah antara jenis kelamin, fundamentalisme, dan pendapat mengenai hukuman mati.
Catatan:
Hipotesis
Tingkat Signifikansi
Statistik Uji
\[ \Delta \text{Deviance} = \text{Deviance model homogenous} - \text{Deviance model saturated} \]
Daerah Penolakan
Tolak \(H_0\) jika \(\Delta \text{Deviance} > \chi^2_{0.05, \text{2}} = 4.991\)
Interpretasi
Pada taraf nyata 5%, belum cukup bukti untuk menolak \(H_0\) atau dapat dikatakan bahwa tidak ada interaksi tiga arah antara jenis kelamin, fundamentalisme, dan pendapat mengenai hukuman mati.
Catatan Perhitungan Derajat Bebas dan Selisih Deviance
Ingat, dalam membuat selisih deviance, model yang menjadi pengurang adalah model yang lebih lengkap (parameter yang lebih banyak atau derajat bebasnya lebih kecil).
Makin banyak parameter, makin kecil derajat bebasnya, karena:
- \(\text{df} =\) banyaknya amatan
(atau perkalian dimensi tabel kontingensi, misal $2 \(\times\) 3 = 12$) dikurangi banyaknya
parameter (koefisien, termasuk intercept).
Cek di output R ada berapa banyak coefficients-nya (termasuk intercept) untuk menghitung derajat bebas yang benar.
Model log-linear conditional pada X memasukkan efek utama dan interaksi dua arah antara X dengan Y dan X dengan Z, tanpa interaksi antara Y dengan Z maupun interaksi tiga arah.
\[ \log(\mu_{ijk})=\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ij}^{XY}+\lambda_{ik}^{XZ} \]
# Conditional Association on X
model_conditional_X <- glm(counts ~ x.sex + y.fav + z.fund +
x.sex*y.fav + x.sex*z.fund,
family = poisson(link = "log"))
summary(model_conditional_X)
##
## Call:
## glm(formula = counts ~ x.sex + y.fav + z.fund + x.sex * y.fav +
## x.sex * z.fund, family = poisson(link = "log"))
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 4.23495 0.08955 47.293 < 2e-16 ***
## x.sex1M -0.52960 0.13966 -3.792 0.000149 ***
## y.fav1fav 0.48302 0.08075 5.982 2.20e-09 ***
## z.fund1fund 0.07962 0.10309 0.772 0.439916
## z.fund2mod 0.41097 0.09585 4.288 1.81e-05 ***
## x.sex1M:y.fav1fav 0.65845 0.12708 5.181 2.20e-07 ***
## x.sex1M:z.fund1fund -0.12841 0.15109 -0.850 0.395405
## x.sex1M:z.fund2mod -0.06267 0.13908 -0.451 0.652274
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 245.3612 on 11 degrees of freedom
## Residual deviance: 3.9303 on 4 degrees of freedom
## AIC: 96.067
##
## Number of Fisher Scoring iterations: 4
Pengujian Ada Tidaknya Interaksi Antara Y dan Z (Homogenous Model vs Conditional Association on X)
Hipotesis
Tingkat Signifikansi
Statistik Uji
\[ \Delta \text{Deviance} = \text{Deviance model conditional on X} - \text{Deviance model homogenous} \]
Daerah Penolakan
Tolak \(H_0\) jika \(\Delta \text{Deviance} > \chi^2_{0.05, 2} = 5.991\)
Pengujian Hipotesis
# Selisih deviance antar model
Deviance.model <- model_conditional_X$deviance - model_homogenous$deviance
Deviance.model
## [1] 2.132302
# Hitung Derajat Bebas
derajat.bebas <- (4 - 2)
derajat.bebas
## [1] 2
# Nilai Chi-Square Tabel
chi.tabel <- qchisq((1 - 0.05), df = derajat.bebas)
chi.tabel
## [1] 5.991465
# Keputusan Uji
Keputusan <- ifelse(Deviance.model <= chi.tabel, "Terima", "Ada")
Keputusan
## [1] "Terima"
Interpretasi
Karena nilai \(\text{Deviance.model} = 2.13\) lebih kecil dari nilai kritis chi-square tabel = 5.99 (dengan df=2, alpha=0.05), maka keputusan uji adalah “Terima”.
Kesimpulan: Pada taraf nyata 5%, belum cukup bukti untuk menolak \(H_0}\), atau dengan kata lain tidak ada interaksi antara pendapat mengenai hukuman mati (Y) dan fundamentalisme (Z). Model yang terbentuk cukup hanya sampai dua interaksi dengan X (conditional on X), sehingga interaksi Y*Z tidak signifikan secara statistik.
Model log-linear conditional pada Y memasukkan efek utama dan interaksi dua arah antara X dengan Y dan Y dengan Z, tanpa interaksi antara X dengan Z maupun interaksi tiga arah.
\[ \log(\mu_{ijk})=\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ij}^{XY}+\lambda_{jk}^{YZ} \]
# Conditional Association on Y
model_conditional_Y <- glm(counts ~ x.sex + y.fav + z.fund +
x.sex*y.fav + y.fav*z.fund,
family = poisson(link = "log"))
summary(model_conditional_Y)
##
## Call:
## glm(formula = counts ~ x.sex + y.fav + z.fund + x.sex * y.fav +
## y.fav * z.fund, family = poisson(link = "log"))
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 4.33931 0.09919 43.748 < 2e-16 ***
## x.sex1M -0.59345 0.10645 -5.575 2.48e-08 ***
## y.fav1fav 0.37259 0.12438 2.996 0.00274 **
## z.fund1fund -0.12516 0.13389 -0.935 0.34989
## z.fund2mod 0.30228 0.12089 2.500 0.01240 *
## x.sex1M:y.fav1fav 0.65845 0.12708 5.181 2.20e-07 ***
## y.fav1fav:z.fund1fund 0.21254 0.16205 1.312 0.18966
## y.fav1fav:z.fund2mod 0.11757 0.14771 0.796 0.42606
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 245.3612 on 11 degrees of freedom
## Residual deviance: 2.9203 on 4 degrees of freedom
## AIC: 95.057
##
## Number of Fisher Scoring iterations: 4
Pengujian Ada Tidaknya Interaksi antara X dan Z (Homogenous model vs Conditional Association on Y)
Hipotesis
Tingkat Signifikansi
Statistik Uji
\[ \Delta \text{Deviance} = \text{Deviance model conditional on Y} - \text{Deviance model homogenous} \]
Daerah Penolakan
Tolak \(H_0\) jika \(\Delta \text{0.05, 2} = 5.991\)
Pengujian Hipotesis
{r}
# Deviance of Model
Deviance.model <- model_conditional_Y$deviance - model_homogenous$deviance
Deviance.model
# Hitung Derajat Bebas
derajat.bebas <- (4 - 2)
derajat.bebas
# Nilai Chi-Square Tabel
chi.tabel <- qchisq((1 - 0.05), df = derajat.bebas)
chi.tabel
# Keputusan Uji
Keputusan <- ifelse(Deviance.model <= chi.tabel, "Terima", "Tolak")
Keputusan
Interpretasi
Karena nilai \(\text{Deviance.model} = 1.12\) lebih kecil dari nilai kritis chi-square tabel = 5.99 (df = 2, alpha = 0.05), maka keputusan uji adalah “Terima”.
Kesimpulan: Pada taraf nyata 5%, belum cukup bukti untuk menolak \(H_0\). Artinya, tidak ada interaksi antara jenis kelamin (X) dan fundamentalisme (Z) yang signifikan secara statistik. Model tanpa parameter \(\lambda_{ik}^{XZ}\) sudah cukup baik untuk data ini.
Model log-linear conditional pada Z memasukkan efek utama dan interaksi dua arah antara X dengan Z dan Y dengan Z, tanpa interaksi antara X dengan Y maupun interaksi tiga arah.
\[ \log(\mu_{ijk})=\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ik}^{XZ}+\lambda_{jk}^{YZ} \]
# Conditional Association on Z
model_conditional_Z <- glm(counts ~ x.sex + y.fav + z.fund +
x.sex*z.fund + y.fav*z.fund,
family = poisson(link = "log"))
summary(model_conditional_Z)
##
## Call:
## glm(formula = counts ~ x.sex + y.fav + z.fund + x.sex * z.fund +
## y.fav * z.fund, family = poisson(link = "log"))
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 4.12255 0.10518 39.195 < 2e-16 ***
## x.sex1M -0.07453 0.10713 -0.696 0.487
## y.fav1fav 0.65896 0.11292 5.836 5.36e-09 ***
## z.fund1fund -0.06540 0.15126 -0.432 0.665
## z.fund2mod 0.33196 0.13777 2.410 0.016 *
## x.sex1M:z.fund1fund -0.12841 0.15109 -0.850 0.395
## x.sex1M:z.fund2mod -0.06267 0.13908 -0.451 0.652
## y.fav1fav:z.fund1fund 0.21254 0.16205 1.312 0.190
## y.fav1fav:z.fund2mod 0.11757 0.14771 0.796 0.426
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 245.361 on 11 degrees of freedom
## Residual deviance: 29.729 on 3 degrees of freedom
## AIC: 123.87
##
## Number of Fisher Scoring iterations: 4
Pengujian Ada Tidaknya Interaksi antara X dan Y (Homogenous model vs Conditional Association on Z)
Hipotesis
Tingkat Signifikasi
Statistik Uji
\[ \Delta \text{Deviance} = \text{Deviance model conditional on Z} - \text{Deviance model homogenous} \]
Daerah Penolakan
Tolak \(H_0\) jika \(\Delta \text{Deviance} > \chi^2_{0.05, 1} = 3.841\)
Pengujian Hipotesis
# Deviance of Model
Deviance.model <- model_conditional_Z$deviance - model_homogenous$deviance
Deviance.model
## [1] 27.93095
# Hitung Derajat Bebas
derajat.bebas <- (3 - 2)
derajat.bebas
## [1] 1
# Nilai Chi-Square Tabel
chi.tabel <- qchisq((1 - 0.05), df = derajat.bebas)
chi.tabel
## [1] 3.841459
# Keputusan Uji
Keputusan <- ifelse(Deviance.model <= chi.tabel, "Terima", "Tolak")
Keputusan
## [1] "Tolak"
Interpretasi
Karena nilai \(\text{Deviance.model} = 27.93\) jauh lebih besar dari nilai kritis chi-square tabel = 3.841 (df = 1, alpha = 0.05), maka keputusan uji adalah “Tolak”.
Kesimpulan: Pada taraf nyata 5%, terdapat bukti yang cukup untuk menolak \(H_0\). Artinya, ada interaksi yang signifikan antara jenis kelamin (X) dan pendapat tentang hukuman mati (Y). Dengan kata lain, model terbaik yang terbentuk adalah model yang menyertakan parameter interaksi \(\lambda_{ij}^{XY}\).
| Model | Parameter | Deviance | Jumlah Parameter | df | AIC |
|---|---|---|---|---|---|
| Saturated | \(\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ij}^{XY}+\lambda_{ik}^{XZ}+\lambda_{jk}^{YZ}+\lambda_{ijk}^{XYZ}\) | 0.00 | 12 | 0 | 100.14 |
| Homogenous | \(\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ij}^{XY}+\lambda_{ik}^{XZ}+\lambda_{jk}^{YZ}\) | 1.798 | 10 | 2 | 97.934 |
| Conditional on X | \(\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ij}^{XY}+\lambda_{ik}^{XZ}\) | 3.9303 | 8 | 4 | 96.067 |
| Conditional on Y | \(\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ij}^{XY}+\lambda_{jk}^{YZ}\) | 2.9203 | 8 | 4 | 95.057 |
| Conditional on Z | \(\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ik}^{XZ}+\lambda_{jk}^{YZ}\) | 29.729 | 9 | 3 | 123.87 |
| Interaksi | Pengujian | \(\Delta\) deviance | \(\Delta\) df | Chi-square Tabel | Keputusan | Keterangan |
|---|---|---|---|---|---|---|
| XYZ | Saturated vs Homogenous | 1.798 | 2 | 5.991 | Tidak Tolak | tidak ada interaksi |
| YZ | Conditional on X vs Homogenous | 2.1323 | 2 | 5.991 | Tidak Tolak | tidak ada interaksi |
| XZ | Conditional on Y vs Homogenous | 1.1223 | 2 | 5.991 | Tidak Tolak | tidak ada interaksi |
| XY | Conditional on Z vs Homogenous | 27.931 | 1 | 3.841 | Tolak | ada interaksi |
Dari hasil di atas diketahui bahwa asosiasi yang nyata hanya terdapat antara jenis kelamin dan pendapat mengenai hukuman mati. Sehingga, model ini adalah:
\[ \log(\mu_{ijk})=\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ij}^{XY} \]
Model terbaik adalah model log-linear tanpa interaksi tiga arah dan hanya memuat interaksi dua arah antara jenis kelamin dan sikap terhadap hukuman mati.
Model terbaik dipilih berdasarkan pengujian interaksi yang signifikan, yaitu hanya interaksi dua arah antara jenis kelamin (X) dan sikap terhadap hukuman mati (Y):
\[ \log(\mu_{ijk})=\lambda+\lambda_i^X+\lambda_j^Y+\lambda_k^Z+\lambda_{ij}^{XY} \]
# Model Terbaik
bestmodel <- glm(counts ~ x.sex + y.fav + z.fund + x.sex*y.fav,
family = poisson(link = "log"))
summary(bestmodel)
##
## Call:
## glm(formula = counts ~ x.sex + y.fav + z.fund + x.sex * y.fav,
## family = poisson(link = "log"))
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 4.26518 0.07794 54.721 < 2e-16 ***
## x.sex1M -0.59345 0.10645 -5.575 2.48e-08 ***
## y.fav1fav 0.48302 0.08075 5.982 2.20e-09 ***
## z.fund1fund 0.01986 0.07533 0.264 0.792
## z.fund2mod 0.38130 0.06944 5.491 4.00e-08 ***
## x.sex1M:y.fav1fav 0.65845 0.12708 5.181 2.20e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 245.3612 on 11 degrees of freedom
## Residual deviance: 4.6532 on 6 degrees of freedom
## AIC: 92.79
##
## Number of Fisher Scoring iterations: 4
# Interpretasi koefisien model terbaik
data.frame(
koef = bestmodel$coefficients,
exp_koef = exp(bestmodel$coefficients)
)
## koef exp_koef
## (Intercept) 4.26517861 71.1776316
## x.sex1M -0.59344782 0.5524194
## y.fav1fav 0.48302334 1.6209677
## z.fund1fund 0.01985881 1.0200573
## z.fund2mod 0.38129767 1.4641834
## x.sex1M:y.fav1fav 0.65845265 1.9318008
# Fitted values dari model terbaik
data.frame(
Fund = z.fund,
sex = x.sex,
favor = y.fav,
counts = counts,
fitted = bestmodel$fitted.values
)
## Fund sex favor counts fitted
## 1 1fund 1M 1fav 128 125.59539
## 2 1fund 1M 2opp 32 40.10855
## 3 1fund 2F 1fav 123 117.69079
## 4 1fund 2F 2opp 73 72.60526
## 5 2mod 1M 1fav 182 180.27878
## 6 2mod 1M 2opp 56 57.57155
## 7 2mod 2F 1fav 168 168.93257
## 8 2mod 2F 2opp 105 104.21711
## 9 3lib 1M 1fav 119 123.12582
## 10 3lib 1M 2opp 49 39.31990
## 11 3lib 2F 1fav 111 115.37664
## 12 3lib 2F 2opp 70 71.17763
Secara manual, nilai dugaan (fitted values) dihitung sebagai berikut:
\[ \begin{aligned} \hat{\mu}_{111} &= \exp(\lambda + \lambda_{x_{1m}} + \lambda_{y_{1fav}} + \lambda_{z_{fund}} + \lambda_{xy_{1m,1fav}}) = \exp(4.265 - 0.593 + 0.483 + 0.01986 + 0.658) = \exp(4.833) = 125.595 \\ \hat{\mu}_{112} &= \exp(\lambda + \lambda_{x_{1m}} + \lambda_{y_{1fav}} + \lambda_{z_{2mod}} + \lambda_{xy_{1m,1fav}}) = \exp(4.265 - 0.593 + 0.483 + 0.381 + 0.658) = \exp(5.194) = 180.279 \\ \hat{\mu}_{113} &= \exp(\lambda + \lambda_{x_{1m}} + \lambda_{y_{1fav}} + \lambda_{z_{lib}} + \lambda_{xy_{1m,1fav}}) = \exp(4.265 - 0.593 + 0.483 + 0 + 0.658) = \exp(4.813) = 123.126 \\ \hat{\mu}_{121} &= \exp(\lambda + \lambda_{x_{1m}} + \lambda_{y_{2opp}} + \lambda_{z_{fund}} + \lambda_{xy_{1m,2opp}}) = \exp(4.265 - 0.593 + 0 + 0.01986 + 0) = \exp(3.692) = 40.109 \\ \hat{\mu}_{122} &= \exp(\lambda + \lambda_{x_{1m}} + \lambda_{y_{2opp}} + \lambda_{z_{2mod}} + \lambda_{xy_{1m,2opp}}) = \exp(4.265 - 0.593 + 0 + 0.381 + 0) = \exp(4.053) = 57.572 \\ \hat{\mu}_{123} &= \exp(\lambda + \lambda_{x_{1m}} + \lambda_{y_{2opp}} + \lambda_{z_{lib}} + \lambda_{xy_{1m,2opp}}) = \exp(4.265 - 0.593 + 0 + 0 + 0) = \exp(3.672) = 39.320 \\ \hat{\mu}_{211} &= \exp(\lambda + \lambda_{x_{2f}} + \lambda_{y_{1fav}} + pathway\lambda_{z_{fund}} + \lambda_{xy_{2f,1fav}}) = \exp(4.265 + 0 + 0.483 + 0.01986 + 0) = \exp(4.768) = 117.691 \\ \hat{\mu}_{212} &= \exp(\lambda + \lambda_{x_{2f}} + \lambda_{y_{1fav}} + \lambda_{z_{2mod}} + \lambda_{xy_{2f,1fav}}) = \exp(4.265 + 0 + 0.483 + 0.381 + 0) = \exp(5.129) = 168.933 \\ \hat{\mu}_{213} &= \exp(\lambda + \lambda_{x_{2f}} + \lambda_{y_{1fav}} + \lambda_{z_{lib}} + \lambda_{xy_{2f,1fav}}) = \exp(4.265 + 0 + 0.483 + 0 + 0) = \exp(4.748) = 115.377 \\ \hat{\mu}_{221} &= \exp(\lambda + \lambda_{x_{2f}} + \lambda_{y_{2opp}} + \lambda_{z_{fund}} + \lambda_{xy_{2f,2opp}}) = \exp(4.265 + 0 + 0 + 0.01986 + 0) = \exp(4.285) = 72.605 \\ \hat{\mu}_{222} &= \exp(\lambda + \lambda_{x_{2f}} + \lambda_{y_{2opp}} + \lambda_{z_{2mod}} + \lambda_{xy_{2f,2opp}}) = \exp(4.265 + 0 + 0 + 0.381 + 0) = \exp(4.646) = 104.217 \\ \hat{\mu}_{223} &= \exp(\lambda + \lambda_{x_{2f}} + \lambda_{y_{2opp}} + \lambda_{z_{lib}} + \exp(4.265 + 0 + 0 + 0 + 0) = \exp(4.265) = 71.178 \end{aligned} \]
Keterangan:
Nilai \(\hat{\mu}_{ijk}\) akan sama
apapun referensi dari kategori peubahnya yang kita gunakan.
Sumber: Reni Amelia (2022) https://rpubs.com/reniamelia/responsi5adk