Nafalla Afftanur Rismawanti
140610230044
Analisis data kategorik merupakan bagian penting dalam statistika terapan karena banyak fenomena di dunia nyata yang menghasilkan data dalam bentuk kategori, seperti jenis kelamin, status pekerjaan, tingkat pendidikan, preferensi konsumen, atau hasil diagnosis medis. Data kategori ini umumnya dianalisis menggunakan tabel kontingensi, model log-linier, dan model regresi logistik. Masing-masing pendekatan memiliki kekuatan dan kelemahan tergantung pada tujuan analisis dan struktur data.
Tabel kontingensi digunakan sebagai langkah awal eksplorasi untuk melihat hubungan antara dua atau lebih variabel kategorik. Misalnya, dalam studi tentang efek obat terhadap serangan jantung, tabel kontingensi dapat menyajikan jumlah pasien yang mengalami atau tidak mengalami serangan jantung, berdasarkan jenis obat yang dikonsumsi. Tabel ini membantu mengidentifikasi pola awal dan menghitung ukuran asosiasi seperti odds ratio, risk ratio, dan chi-square statistic untuk menguji independensi antar variabel.
Namun, ketika ingin membangun model statistik yang dapat mengendalikan efek dari banyak variabel dan interaksinya secara simultan, maka model log-linier menjadi sangat berguna. Model log-linier adalah bentuk khusus dari Generalized Linear Model (GLM) yang digunakan pada frekuensi sel dalam tabel kontingensi dan mengasumsikan distribusi Poisson. Tidak seperti regresi logistik, model log-linier tidak menetapkan variabel mana yang dependen dan mana yang independen, karena seluruh variabel diperlakukan secara simetris. Model ini lebih cocok ketika tujuan analisis adalah untuk memahami struktur asosiasi atau independensi antar variabel, bukan untuk prediksi.
Struktur model log-linier ditentukan berdasarkan efek utama dari masing-masing variabel serta interaksi di antara variabel-variabel tersebut. Misalnya, dalam tabel kontingensi tiga arah (misalnya: jenis kelamin, status merokok, dan penyakit paru), model log-linier dapat membedakan apakah interaksi dua variabel cukup menjelaskan data, ataukah diperlukan interaksi tiga arah untuk menangkap struktur asosiasinya. Penyesuaian model dapat dilakukan menggunakan metode likelihood ratio test untuk membandingkan model sederhana dengan model lebih kompleks.
Di sisi lain, regresi logistik adalah pendekatan paling umum ketika terdapat satu variabel kategorik yang secara eksplisit dianggap sebagai variabel dependen (misalnya, kejadian penyakit: ya/tidak), dan satu atau lebih variabel kategorik atau numerik sebagai prediktor. Model ini memodelkan logit dari probabilitas kejadian (yaitu log odds), dan sangat berguna dalam studi observasional dan eksperimental untuk menjelaskan atau memprediksi peluang suatu outcome. Regresi logistik juga memiliki ekstensi untuk outcome kategorik lebih dari dua kelas, seperti regresi logistik multinomial dan regresi logistik ordinal.
Dengan demikian, meskipun ketiganya beroperasi pada data kategorik, tabel kontingensi bersifat deskriptif, model log-linier bersifat eksploratif terhadap hubungan simetris, sedangkan regresi logistik bersifat prediktif terhadap outcome kategorik. Pemilihan metode tergantung pada apakah fokus utama analisis adalah deskripsi, eksplorasi struktur, atau prediksi hasil berdasarkan variabel penjelas. Kombinasi dari ketiganya sering digunakan dalam praktik untuk memperoleh pemahaman komprehensif dari data kategorik yang dianalisis.
Ringkasan Dalam analisis data kategorik, terdapat beberapa pendekatan statistik yang umum digunakan, antara lain:
Tabel Kontingensi: penyajian frekuensi gabungan dari dua atau lebih variabel kategorik. Model Loglinear: digunakan untuk memodelkan struktur asosiasi di dalam tabel kontingensi tanpa menganggap ada variabel dependen. Model Regresi Logistik: digunakan untuk memodelkan probabilitas dari kategori variabel dependen berdasarkan variabel independen. Meskipun ketiganya dapat digunakan pada data kategorik, pendekatan dan interpretasinya sangat berbeda.”
Tabel Kontingensi
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
\[ \log(\mu_{ij}) = \lambda + \lambda^{A}_i + \lambda^{B}_j + \lambda^{AB}_{ij} \]
Model loglinear memodelkan logaritma dari ekspektasi frekuensi sel dalam tabel kontingensi.
Cocok untuk menyelidiki asosiasi dan independensi antar variabel.
Tidak membedakan antara variabel respon dan penjelas.
Umumnya digunakan pada tabel multi-dimensi (2 arah, 3 arah, dst).
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
Model regresi logistik biner:
\[ \log \left(\frac{p}{1 - p}\right) = \beta_0 + \beta_1 x \]
Digunakan jika ada variabel dependen kategorik (biasanya biner).
Bertujuan untuk memprediksi probabilitas suatu outcome.
Umumnya digunakan dalam studi observasional atau eksperimental.
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
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 x J dapat dituliskan:
\[ \log(\mu_{ij}) = \lambda + \lambda^{T}_i + \lambda^{R}_j + \lambda^{TR}_{ij} \]
Model saturated atau model penuh menyertakan seluruh efek utama dan interaksi:
Cocok sempurna terhadap data
Tidak mengasumsikan independensi antar variabel
Contoh formulasi untuk tabel 2x2:
Model saturated dapat dipasang dengan loglm
dari
package {MASS}
# 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 <- 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^{T}_i + \lambda^{R}_j \]
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:
\[ OR = \frac{n_{11} n_{22}}{n_{12} n_{21}} \]
Interpretasi nilai OR:
OR = 1: Tidak ada asosiasi
OR > 1: Asosiasi positif
OR < 1: Asosiasi negatif
Dalam model saturated:
Estimasi dilakukan dengan pembatasan seperti sum-to-zero
Estimasi parameter dilakukan dengan iterative proportional fitting (IPF)
# 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²) 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 (μ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
\[ 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} \]
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 \]
Rumus Estimasi Parameter dengan Sum-to-Zero Constraint
\[ \lambda_1^A=1/2[(\log\mu_{11}+\log\mu_{12})-(\log\mu_{21}+\log\mu_{22})] \]
\[ \lambda_1^B=1/2[(\log\mu_{11}+\log\mu_{12})-(\log\mu_{21}+\log\mu_{22})] \]
\[ \lambda_{12}^{AB}=1/4[\log\mu_{12}-\log\mu_{11}-\log\mu_{22}-\log\mu_{21}] \]
Diberikan data:
Merokok | Sakit | Sehat |
---|---|---|
Ya | 30 | 20 |
Tidak | 10 | 40 |
Model log-linear pada tabel 2x2:
\[ \log(\mu_{ij}) = \lambda + \lambda^A_i + \lambda^B_j + \lambda^{AB}_{ij} \]
dengan constraint sum-to-zero:
\[ \sum_i \lambda^A_i = 0, \quad \sum_j \lambda^B_j = 0, \quad \sum_{i,j} \lambda^{AB}_{ij} = 0 \]
Misalkan:
Observasi:
Model log-linear:
\[ \begin{aligned} \log(\mu_{11}) &= \lambda + \lambda^A_1 + \lambda^B_1 + \lambda^{AB}_{11} \\ \log(\mu_{12}) &= \lambda + \lambda^A_1 + \lambda^B_2 + \lambda^{AB}_{12} \\ \log(\mu_{21}) &= \lambda + \lambda^A_2 + \lambda^B_1 + \lambda^{AB}_{21} \\ \log(\mu_{22}) &= \lambda + \lambda^A_2 + \lambda^B_2 + \lambda^{AB}_{22} \end{aligned} \]
Constraint sum-to-zero:
\[ \begin{aligned} \lambda^A_1 + \lambda^A_2 &= 0 \\ \lambda^B_1 + \lambda^B_2 &= 0 \\ \lambda^{AB}_{11} + \lambda^{AB}_{12} + \lambda^{AB}_{21} + \lambda^{AB}_{22} &= 0 \end{aligned} \]
Langkah-langkah:
1. Hitung rata-rata log frekuensi sel:
\[ \begin{aligned} \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 \end{aligned} \]
2. Efek utama A (Merokok):
\[ \begin{aligned} \lambda^A_1 &= \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^A_2 &= -0.2027 \end{aligned} \]
3. Efek utama B (Status):
\[ \begin{aligned} \lambda^B_1 &= \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} \left[ 5.7038 - 6.6846 \right] \\ &= \frac{1}{2} (-0.9808) \\ &= -0.4904 \\ \lambda^B_2 &= +0.4904 \end{aligned} \]
4. Efek Interaksi:
\[ \begin{aligned} \lambda^{AB}_{11} &= \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} \left(3.4012 - 2.9957 - 2.3026 + 3.6889\right) \\ &= \frac{1}{4} (1.7918) \\ &= 0.4479 \\ \\ \lambda^{AB}_{12} &= -\lambda^{AB}_{11} = -0.4479 \\ \lambda^{AB}_{21} &= -0.4479 \\ \lambda^{AB}_{22} &= +0.4479 \end{aligned} \]
Ringkasan parameter:
\(\lambda = 3.0971\)
\(\lambda^A_1 = 0.2027,\quad \lambda^A_2 = -0.2027\)
\(\lambda^B_1 = -0.4904,\quad \lambda^B_2 = 0.4904\)
\(\lambda^{AB}_{11} = 0.4479,\quad \lambda^{AB}_{12} = -0.4479,\quad \lambda^{AB}_{21} = -0.4479,\quad \lambda^{AB}_{22} = 0.4479\)
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(OR) = \log(6) = 1.7918 \]
Standard error (SE):
\[ 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(OR) \pm 1.96 \times 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:
Lower = \(\exp(0.8968) = 2.452\)
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")
tabel
## Sakit Sehat
## Ya 30 20
## Tidak 10 40
data <- as.data.frame(as.table(tabel))
colnames(data) <- c("Merokok", "Status", "Freq")
data
## Merokok Status Freq
## 1 Ya Sakit 30
## 2 Tidak Sakit 10
## 3 Ya Sehat 20
## 4 Tidak Sehat 40
# 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
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:
\(\mu_{ij}\): ekspektasi frekuensi pada baris ke-\(i\), kolom ke-\(j\)
\(A\): Jenis Kelamin (\(i = 1\): Laki-laki, \(i = 2\): Perempuan)
\(B\): Kategori BMI (\(j = 1\): Kurus, \(j = 2\): Normal, \(j = 3\): Gemuk)
Constraint: \(\sum_i \lambda_i^A = 0\), \(\sum_j \lambda_j^B = 0\), \(\sum_i \lambda_{ij}^{AB} = 0\) dan \(\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)} \]
# 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")
tabel2x3
## Kurus Normal Gemuk
## Laki-laki 12 20 8
## Perempuan 18 24 10
# Ubah menjadi data.frame untuk glm
data2x3 <- as.data.frame(as.table(tabel2x3))
colnames(data2x3) <- c("JenisKelamin", "BMI", "Freq")
data2x3
## JenisKelamin BMI Freq
## 1 Laki-laki Kurus 12
## 2 Perempuan Kurus 18
## 3 Laki-laki Normal 20
## 4 Perempuan Normal 24
## 5 Laki-laki Gemuk 8
## 6 Perempuan Gemuk 10
# 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
Pada pembahasan sebelumnya, telah dijelaskan bahwa salah satu tujuan utama dalam pengembangan model log-linear adalah untuk mengestimasi parameter-parameter yang merepresentasikan hubungan antar variabel kategorik.
Pada bagian ini, akan dibahas bentuk model log-linear yang lebih kompleks, yakni model log-linear untuk tabel kontingensi tiga dimensi. Model ini melibatkan tiga variabel kategorik, sehingga jumlah kemungkinan interaksi yang dapat dimasukkan ke dalam model menjadi lebih beragam. Dalam konteks ini, bentuk interaksi tertinggi yang dapat dimodelkan adalah interaksi tiga arah, yaitu interaksi yang mencakup ketiga variabel secara simultan.
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:
\[ \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).
\[ \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.
\[ \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.
\[ \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.
\[ \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.
\[ \log(\mu_{ijk}) = \lambda + \lambda_i^X + \lambda_j^Y + \lambda_k^Z + \lambda_{ij}^{XY} \]
\[ \log(\mu_{ijk}) = \lambda + \lambda_i^X + \lambda_j^Y + \lambda_k^Z + \lambda_{ik}^{XZ} \]
\[ \log(\mu_{ijk}) = \lambda + \lambda_i^X + \lambda_j^Y + \lambda_k^Z + \lambda_{jk}^{YZ} \]
\[ \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:
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 |
---|---|---|---|---|
Fundamentalis | Laki-laki | 128 | 32 | 160 |
Fundamentalis | Perempuan | 123 | 73 | 196 |
Fundamentalis | 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 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
)
data
## Fundamentalisme Jenis_Kelamin Sikap Frekuensi
## 1 1fund 1M 1fav 128
## 2 1fund 1M 2opp 32
## 3 1fund 2F 1fav 123
## 4 1fund 2F 2opp 73
## 5 2mod 1M 1fav 182
## 6 2mod 1M 2opp 56
## 7 2mod 2F 1fav 168
## 8 2mod 2F 2opp 105
## 9 3lib 1M 1fav 119
## 10 3lib 1M 2opp 49
## 11 3lib 2F 1fav 111
## 12 3lib 2F 2opp 70
#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
Analisis Log-Linear: Tahap Pemodelan 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
exp(model_saturated$coefficients)
## (Intercept) x.sex1M
## 70.0000000 0.7000000
## y.fav1fav z.fund1fund
## 1.5857143 1.0428571
## z.fund2mod x.sex1M:y.fav1fav
## 1.5000000 1.5315315
## x.sex1M:z.fund1fund x.sex1M:z.fund2mod
## 0.6262231 0.7619048
## y.fav1fav:z.fund1fund y.fav1fav:z.fund2mod
## 1.0625694 1.0090090
## x.sex1M:y.fav1fav:z.fund1fund x.sex1M:y.fav1fav:z.fund2mod
## 1.5500717 1.3262868
Interpretasi Output Model Saturated
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|) | 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.28 | -1.66 | 0.097 . | 0.63 |
x.sex1M:z.fund2mod | -0.27 | 0.25 | -1.09 | 0.28 | 0.76 |
y.fav1fav:z.fund1fund | 0.06 | 0.21 | 0.29 | 0.78 | 1.06 |
y.fav1fav:z.fund2mod | 0.01 | 0.20 | 0.05 | 0.96 | 1.01 |
x.sex1M:y.fav1fav:z.fund1fund | 0.44 | 0.30 | 1.30 | 0.19 | 1.55 |
x.sex1M:y.fav1fav:z.fund2mod | 0.28 | 0.30 | 0.94 | 0.35 | 1.33 |
Keterangan:
-***
signifikan pada α = 0.001
-**
signifikan pada α = 0.01
-.
marginally signifikan pada α = 0.1
# 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
#4.2
# 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"
#4.3 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 hipotesis
# Deviance of Model
Deviance.model <- model_conditional_X$deviance - model_homogenous$deviance # model_conditional_X: conditional on X, model_homogenous: homogenous
Deviance.model
## [1] 2.132302
# Selisih deviance antar model
Deviance.model <- model_conditional_X$deviance - model_homogenous$deviance
Deviance.model
## [1] 2.132302
# Chi Square tabel dengan alpha = 0.05
derajat.bebas <- (4 - 2)
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", "Tolak")
Keputusan
## [1] "Terima"
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
## Deviance of Model
Deviance.model <- model_conditional_Y$deviance - model_homogenous$deviance # model_conditional_Y: conditional on Y, model_homogenous: homogenous
Deviance.model
## [1] 1.122315
derajat.bebas <- (4 - 2)
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", "Tolak")
Keputusan
## [1] "Terima"
#4.5 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
## Deviance of Model
Deviance.model <- model_conditional_Z$deviance - model_homogenous$deviance # model_conditional_Z: conditional on Z, model_homogenous: homogenous
Deviance.model
## [1] 27.93095
derajat.bebas <- (3 - 2)
derajat.bebas
## [1] 1
chi.tabel <- qchisq((1 - 0.05), df = derajat.bebas)
chi.tabel
## [1] 3.841459
Keputusan <- ifelse(Deviance.model <= chi.tabel, "Terima", "Tolak")
Keputusan
## [1] "Tolak"
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
\(H_0 : \lambda_{ik}^{XZ} = 0) \text{(Tidak ada interaksi antara jenis kelamin (X) dan fundamentalisme (Z)}\)
\(H_1 : \lambda_{ik}^{XZ} \neq 0) \text{(Ada interaksi antara jenis kelamin (X) dan fundamentalisme (Z)}\)
Tingkat Signifikansi
Statistik Uji
\(\Delta \text{Deviance}\)
\(=\text{Deviance model conditional on Y} - \text{Deviance model homogenous}\)
\(= 2.9203 - 1.798 = 1.1223\)
\(db = db \text{ model conditional on Y} - db \text{ model homogenous}\)
\(= 4 - 2 = 2\)
Daerah Penolakan
Keputusan
Kesimpulan
Pengujian Hipotesis Interaksi X dan Z (Conditional on Y vs Homogenous)
# Deviance of Model
Deviance_model <- - model_conditional_Y$deviance - model_homogenous$deviance
# model_conditional_Y: conditional on Y, model_homogenous: homogenous
Deviance_model
## [1] -4.718268
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", "Tolak")
Keputusan
## [1] "Terima"
Interpretasi Karena nilai 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 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 Y (Homogenous model vs Conditional Association on Z)
Hipotesis
\(H_0 : \lambda_{ij}^{XY} = 0) \text{(Tidak ada interaksi antara jenis kelamin (X) dan pendapat tentang hukuman mati (Y)}\)
\(H_1 : \lambda_{ij}^{XY} \neq 0) \text{(Ada interaksi antara jenis kelamin (X) dan pendapat tentang hukuman mati (Y)}\)
Tingkat Signifikansi
Statistik Uji
\(\Delta \text{Deviance}\)
\(= \text{Deviance model conditional on Z} - \text{Deviance model homogenous}\)
\(= 29.729 - 1.798 = 27.931\)
\(db\)
\(= db \text{ model conditional on Z} - db \text{ model homogenous}\)
\(= 3 - 2 = 1\)
Daerah Penolakan
Keputusan
Kesimpulan
Pengujian Hipotesis Interaksi X dan Y (Conditional on Z vs Homogenous)
# Deviance of Model
Deviance_model <- - model_conditional_Z$deviance - model_homogenous$deviance
# model_conditional_Z: conditional on Z, model_homogenous: homogenous
Deviance_model
## [1] -31.5269
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] "Terima"
Interpretasi Karena nilai Deviance_model = 27.93 jauh lebih besar dari nilai kritis chi-square tabel = 3.84 (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 | Δ deviance | Δ df | Chi-square Tabel | Keputusan | Keterangan |
---|---|---|---|---|---|---|
XYZ | Saturated vs Homogenous | 1.798 | 2 | 5.991 | Tidak Tolak H0 | tidak ada interaksi |
YZ | Conditional on X vs Homogenous | 2.1323 | 2 | 5.991 | Tidak Tolak H0 | tidak ada interaksi |
XZ | Conditional on Y vs Homogenous | 1.1223 | 2 | 5.991 | Tidak Tolak H0 | tidak ada interaksi |
XY | Conditional on Z vs Homogenous | 27.931 | 1 | 3.841 | Tolak H0 | ada interaksi |
Dari hasil di atas diketahui bahwa asosiasi yang nyata hanya terdapat antara jenis kelamin dan pendapat mengenai hukuman mati. Sehingga, model terbaik 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^{X}_{i} + \lambda^{Y}_{j} + \lambda^{Z}_{k} + \lambda^{XY}_{ij} \]
# 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
Dari summary model diatas terlihat bahwa best model memiliki AIC yang lebih rendah dibandingkan saturated, homogeneous, dan conditional model
# 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
\[\exp(\lambda^X_M) = \exp(-0{,}593) =
0{,}552 \rightarrow \textbf{nilai odds}\]
Tanpa memperhatikan fundamentalisme dan pendapat mengenai hukuman mati,
peluang seseorang berjenis kelamin laki-laki adalah 0,55 kali
dibandingkan perempuan.
Atau, peluang seseorang berjenis kelamin perempuan adalah \(1 / 0{,}55 = 1{,}81\) kali dibandingkan
laki-laki.
\[\exp(\lambda^Y_{1_{fav}}) =
\exp(0{,}483) = 1{,}621 \rightarrow \textbf{nilai odds}\]
Tanpa memperhatikan jenis kelamin dan fundamentalisme, peluang seseorang
mendukung hukuman mati adalah 1,621 kali dibandingkan yang
menolak.
\[\exp(\lambda^Z_{1_{fund}}) =
\exp(0{,}01986) = 1{,}02 \rightarrow \textbf{nilai odds}\]
Tanpa memperhatikan jenis kelamin dan pendapat mengenai hukuman mati,
peluang seseorang fundamentalis adalah 1,02 kali dibandingkan
liberal.
\[\exp(\lambda^Z_{2_{mod}}) =
\exp(0{,}381) = 1{,}464 \rightarrow \textbf{nilai odds}\]
Tanpa memperhatikan jenis kelamin dan pendapat mengenai hukuman mati,
peluang seseorang moderate adalah 1,464 kali dibandingkan
liberal.
\[\exp(\lambda^{XY}_{1M,1_{fav}}) =
\exp(0{,}658) = 1{,}932 \rightarrow \textbf{nilai odds
ratio}\]
Tanpa memperhatikan fundamentalisme, odds mendukung hukuman mati
(dibandingkan menolak) jika dia laki-laki adalah 1,932 kali dibandingkan
odds yang sama jika dia perempuan.
# 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 fitted value diperoleh dengan cara sebagai berikut:
\[ \hat\mu_{111}=exp(\lambda+\lambda_{1m}^x+\lambda_{1fav}^y+\lambda_{fund}^z+\lambda_{1m,1fav}^{xy}) \]
\[ =exp(4.265-0.593+0.483+0.01986+0.658) \]
\[ =exp(4.833) =125.595 \]
\[ \hat\mu_{112}=exp(\lambda+\lambda_{1m}^x+\lambda_{1fav}^y+\lambda_{2mod}^z+\lambda_{1m,1fav}^{xy}) \]
\[ =exp(4.265-0.593+0.483+0.381+0.658) \]
\[ =exp(5.195) =180.279 \]
\[ \hat\mu_{113}=exp(\lambda+\lambda_{1m}^x+\lambda_{1fav}^y+\lambda_{lib}^z+\lambda_{1m,1fav}^{xy}) \]
\[ =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} + \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.1295) = 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} + \lambda^{xy}_{2f,2opp}) = \exp(4.265 + 0 + 0 + 0 + 0) = \exp(4.265) = 71.178 \]
Keterangan:
Nilai \[\hat\mu_{ijk}\] akan sama apapun referensi dari kategori peubahnya yang kita gunakan.