Menurut Agung (2003) data trivariat (W, X, Y) dengan W, X, dan Y merupakan variabel kategorik yang berturut-turut mempunyai i, j, dan k kategorik maka data trivariat dapat disajikan dalam bentuk tabel frekuensi menurut variabel W, X, dan Y. Tabel yang terbentuk merupakan tabel kontingensi dimensi tiga yang mempunyai (i x j x k) sel, yang terdiri dari i baris, j kolom, dan k lapis. Tabel kontingensi tiga dimensi disebut juga tabel kontingensi i x j x k. Dari tabel kontingensi tiga variabel (dimensi) dapat diperoleh suatu model log linear yang disebut model log linear trivariat. Bentuk umum model log linear trivariat adalah (Agung, 2003).
Dengan syarat atau asumsi bahwa jumlah nilai parameter pengaruh menurut setiap indeks i, j, dan k, sama dengan nol.
Contoh kasus adalah hasil penelitian pelajar di Ohio yang pernah menggunakan alcohol, rokok dan mariyuana dangan data sebagai berikut:
Masukkan data di atas pada program R seperti langkah sebelumnya dan lakukan pembobotan.
z.Alkohol<-factor(rep(c("Yes","No"),each=4))
x.Cigarette<-factor(rep(c("Yes","No"),each=2,times=2))
y.Marijuana<-factor(rep(c("Yes","No"),times=4))
counts<-c(911, 538, 44, 456, 3, 43, 2, 279)
data.frame(z.Alkohol,x.Cigarette,y.Marijuana,counts)
## z.Alkohol x.Cigarette y.Marijuana counts
## 1 Yes Yes Yes 911
## 2 Yes Yes No 538
## 3 Yes No Yes 44
## 4 Yes No No 456
## 5 No Yes Yes 3
## 6 No Yes No 43
## 7 No No Yes 2
## 8 No No No 279
x.Cigarette<-relevel(x.Cigarette,ref="No")
y.Marijuana<-relevel(y.Marijuana,ref="No")
z.Alkohol<-relevel(z.Alkohol,ref="No")
model<- glm(counts~ x.Cigarette+ y.Marijuana+ z.Alkohol+
x.Cigarette*y.Marijuana+ x.Cigarette*z.Alkohol+ y.Marijuana*z.Alkohol+
x.Cigarette*y.Marijuana*z.Alkohol, family=poisson("link"=log))
summary(model)
##
## Call:
## glm(formula = counts ~ x.Cigarette + y.Marijuana + z.Alkohol +
## x.Cigarette * y.Marijuana + x.Cigarette * z.Alkohol + y.Marijuana *
## z.Alkohol + x.Cigarette * y.Marijuana * z.Alkohol, family = poisson(link = log))
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 5.63121 0.05987 94.060 < 2e-16
## x.CigaretteYes -1.87001 0.16383 -11.414 < 2e-16
## y.MarijuanaYes -4.93806 0.70964 -6.959 3.44e-12
## z.AlkoholYes 0.49128 0.07601 6.464 1.02e-10
## x.CigaretteYes:y.MarijuanaYes 2.27548 0.92746 2.453 0.014149
## x.CigaretteYes:z.AlkoholYes 2.03538 0.17576 11.580 < 2e-16
## y.MarijuanaYes:z.AlkoholYes 2.59976 0.72698 3.576 0.000349
## x.CigaretteYes:y.MarijuanaYes:z.AlkoholYes 0.58951 0.94236 0.626 0.531600
##
## (Intercept) ***
## x.CigaretteYes ***
## y.MarijuanaYes ***
## z.AlkoholYes ***
## x.CigaretteYes:y.MarijuanaYes *
## x.CigaretteYes:z.AlkoholYes ***
## y.MarijuanaYes:z.AlkoholYes ***
## x.CigaretteYes:y.MarijuanaYes:z.AlkoholYes
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 2.8515e+03 on 7 degrees of freedom
## Residual deviance: 3.2618e-13 on 0 degrees of freedom
## AIC: 65.043
##
## Number of Fisher Scoring iterations: 3
exp(model$coefficients)
## (Intercept)
## 2.790000e+02
## x.CigaretteYes
## 1.541219e-01
## y.MarijuanaYes
## 7.168459e-03
## z.AlkoholYes
## 1.634409e+00
## x.CigaretteYes:y.MarijuanaYes
## 9.732558e+00
## x.CigaretteYes:z.AlkoholYes
## 7.655141e+00
## y.MarijuanaYes:z.AlkoholYes
## 1.346053e+01
## x.CigaretteYes:y.MarijuanaYes:z.AlkoholYes
## 1.803106e+00
model2 <- glm(counts~ x.Cigarette+ y.Marijuana+ z.Alkohol+
x.Cigarette*y.Marijuana+ x.Cigarette*z.Alkohol+ y.Marijuana*z.Alkohol, family=poisson("link"=log))
summary(model2)
##
## Call:
## glm(formula = counts ~ x.Cigarette + y.Marijuana + z.Alkohol +
## x.Cigarette * y.Marijuana + x.Cigarette * z.Alkohol + y.Marijuana *
## z.Alkohol, family = poisson(link = log))
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 5.63342 0.05970 94.361 < 2e-16 ***
## x.CigaretteYes -1.88667 0.16270 -11.596 < 2e-16 ***
## y.MarijuanaYes -5.30904 0.47520 -11.172 < 2e-16 ***
## z.AlkoholYes 0.48772 0.07577 6.437 1.22e-10 ***
## x.CigaretteYes:y.MarijuanaYes 2.84789 0.16384 17.382 < 2e-16 ***
## x.CigaretteYes:z.AlkoholYes 2.05453 0.17406 11.803 < 2e-16 ***
## y.MarijuanaYes:z.AlkoholYes 2.98601 0.46468 6.426 1.31e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 2851.46098 on 7 degrees of freedom
## Residual deviance: 0.37399 on 1 degrees of freedom
## AIC: 63.417
##
## Number of Fisher Scoring iterations: 4
\(H_o\) : Tidak ada interaksi antara
X, Y, dan Z
\(H_1\) : Ada
interaksi X, Y, dan Z
# Deviance of Model
Deviance.model<- model2$deviance - model$deviance
Deviance.model
## [1] 0.3739859
model2$df.residual
## [1] 1
# Chi Square tabel dengan alpa = 0.05
derajat.bebas <- (model2$df.residual - model$df.residual)
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] "Terima"
Pada taraf nyata 5%, belum cukup bukti untuk menolak 𝐻0 atau dapat
dikatakan bahwa tidak ada interaksi tiga arah antara pengguna alkohol,
pengguna rokok, dan pengguna ganja.
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 bebas nya karena derajat bebas =
banyaknya amatan atau perkalian dimensi tabel kontingensi (misal: 2x2x3
= 12) - banyaknya parameter atau koefisien (lihat di output R ada berapa
banyak coefficients nya termasuk intercept) .
model3<-glm(counts~ x.Cigarette+ y.Marijuana+ z.Alkohol+
x.Cigarette*y.Marijuana + x.Cigarette*z.Alkohol,
family=poisson("link"=log))
summary(model3)
##
## Call:
## glm(formula = counts ~ x.Cigarette + y.Marijuana + z.Alkohol +
## x.Cigarette * y.Marijuana + x.Cigarette * z.Alkohol, family = poisson(link = log))
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 5.57765 0.06032 92.463 < 2e-16 ***
## x.CigaretteYes -2.69414 0.16257 -16.572 < 2e-16 ***
## y.MarijuanaYes -2.77123 0.15199 -18.233 < 2e-16 ***
## z.AlkoholYes 0.57625 0.07456 7.729 1.08e-14 ***
## x.CigaretteYes:y.MarijuanaYes 3.22431 0.16098 20.029 < 2e-16 ***
## x.CigaretteYes:z.AlkoholYes 2.87373 0.16730 17.178 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 2851.461 on 7 degrees of freedom
## Residual deviance: 92.018 on 2 degrees of freedom
## AIC: 153.06
##
## Number of Fisher Scoring iterations: 6
\(H_o\) : Tidak ada interaksi antara
Y dan Z
\(H_1\) : Ada interaksi Y
dan Z
Conditional Association on X
#Deviance of Model
Deviance.model<- model3$deviance - model2$deviance
#model3: conditional on X, model2: homogenous
Deviance.model
## [1] 91.64437
# Chi Square tabel dengan alpa = 0.05
derajat.bebas <- (model3$df.residual - model2$df.residual)
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"
Pada taraf nyata 5%, cukup bukti untuk menolak 𝐻0 atau dapat dikatakan bahwa interaksi YZ signifikan (ada interaksi dua arah antara pengguna rokok dengan pengguna alkohol.
model4<-glm(counts~ x.Cigarette+ y.Marijuana+ z.Alkohol+
x.Cigarette*y.Marijuana+ y.Marijuana*z.Alkohol,
family=poisson("link"=log))
summary(model4)
##
## Call:
## glm(formula = counts ~ x.Cigarette + y.Marijuana + z.Alkohol +
## x.Cigarette * y.Marijuana + y.Marijuana * z.Alkohol, family = poisson(link = log))
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 5.19207 0.06088 85.285 < 2e-16 ***
## x.CigaretteYes -0.23512 0.05551 -4.235 2.28e-05 ***
## y.MarijuanaYes -6.62092 0.47370 -13.977 < 2e-16 ***
## z.AlkoholYes 1.12719 0.06412 17.579 < 2e-16 ***
## x.CigaretteYes:y.MarijuanaYes 3.22431 0.16098 20.029 < 2e-16 ***
## y.MarijuanaYes:z.AlkoholYes 4.12509 0.45294 9.107 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 2851.46 on 7 degrees of freedom
## Residual deviance: 187.75 on 2 degrees of freedom
## AIC: 248.8
##
## Number of Fisher Scoring iterations: 5
\(H_o\) : Tidak ada interaksi antara
X dan Z
\(H_1\) : Ada interaksi X
dan Z
Conditional Association on Y
# Deviance of Model
Deviance.model<- model4$deviance - model2$deviance
#model4: conditional on Y, model2: homogenous
Deviance.model
## [1] 187.3803
# Chi Square tabel dengan alpa = 0.05
derajat.bebas <- (model4$df.residual - model2$df.residual)
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"
Pada taraf nyata 5%, cukup bukti untuk menolak 𝐻0 atau dapat dikatakan bahwa interaksi XZ signifikan (ada interaksi dua arah antara pengguna ganja dengan pengguna alkohol.
model5<-glm(counts~ x.Cigarette+ y.Marijuana+ z.Alkohol+
x.Cigarette*z.Alkohol+ y.Marijuana*z.Alkohol,
family=poisson("link"=log))
summary(model5)
##
## Call:
## glm(formula = counts ~ x.Cigarette + y.Marijuana + z.Alkohol +
## x.Cigarette * z.Alkohol + y.Marijuana * z.Alkohol, family = poisson(link = log))
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 5.62295 0.06005 93.635 <2e-16 ***
## x.CigaretteYes -1.80971 0.15905 -11.378 <2e-16 ***
## y.MarijuanaYes -4.16511 0.45067 -9.242 <2e-16 ***
## z.AlkoholYes -0.08167 0.07810 -1.046 0.296
## x.CigaretteYes:z.AlkoholYes 2.87373 0.16730 17.178 <2e-16 ***
## y.MarijuanaYes:z.AlkoholYes 4.12509 0.45294 9.107 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 2851.46 on 7 degrees of freedom
## Residual deviance: 497.37 on 2 degrees of freedom
## AIC: 558.41
##
## Number of Fisher Scoring iterations: 5
\(H_o\) : Tidak ada interaksi antara
X dan Z
\(H_1\) : Ada interaksi X
dan Y
Conditional Association on Y
# Deviance of Model
Deviance.model<- model5$deviance - model2$deviance
#model5: conditional on Z, model2: homogenous
Deviance.model
## [1] 496.9953
# Chi Square tabel dengan alpa = 0.05
derajat.bebas <- (model5$df.residual - model2$df.residual)
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"
Pada taraf nyata 5%, cukup bukti untuk menolak 𝐻0 atau dapat dikatakan bahwa interaksi XY signifikan (ada interaksi dua arah antara pengguna ganja dengan pengguna rokok.
Karena terdapat interaksi YZ, XZ, dan XY maka model terbaiknya adalah model homogenous.Kenapa?
bestmodel<-glm(counts~ x.Cigarette+ y.Marijuana+ z.Alkohol+
x.Cigarette*y.Marijuana+ x.Cigarette*z.Alkohol+ y.Marijuana*z.Alkohol,
family=poisson("link"=log))
summary(bestmodel)
##
## Call:
## glm(formula = counts ~ x.Cigarette + y.Marijuana + z.Alkohol +
## x.Cigarette * y.Marijuana + x.Cigarette * z.Alkohol + y.Marijuana *
## z.Alkohol, family = poisson(link = log))
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 5.63342 0.05970 94.361 < 2e-16 ***
## x.CigaretteYes -1.88667 0.16270 -11.596 < 2e-16 ***
## y.MarijuanaYes -5.30904 0.47520 -11.172 < 2e-16 ***
## z.AlkoholYes 0.48772 0.07577 6.437 1.22e-10 ***
## x.CigaretteYes:y.MarijuanaYes 2.84789 0.16384 17.382 < 2e-16 ***
## x.CigaretteYes:z.AlkoholYes 2.05453 0.17406 11.803 < 2e-16 ***
## y.MarijuanaYes:z.AlkoholYes 2.98601 0.46468 6.426 1.31e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 2851.46098 on 7 degrees of freedom
## Residual deviance: 0.37399 on 1 degrees of freedom
## AIC: 63.417
##
## Number of Fisher Scoring iterations: 4
Dari summary model diatas terlihat bahwa best model memiliki AIC yang lebih rendah dibandingkan saturated dan conditional model.
data.frame(koef=bestmodel$coefficients,
exp_koef=exp(bestmodel$coefficients))
## koef exp_koef
## (Intercept) 5.633420 2.796168e+02
## x.CigaretteYes -1.886669 1.515759e-01
## y.MarijuanaYes -5.309042 4.946661e-03
## z.AlkoholYes 0.487719 1.628597e+00
## x.CigaretteYes:y.MarijuanaYes 2.847889 1.725133e+01
## x.CigaretteYes:z.AlkoholYes 2.054534 7.803201e+00
## y.MarijuanaYes:z.AlkoholYes 2.986014 1.980658e+01
data.frame(alkohol=z.Alkohol,Rokok=x.Cigarette,Ganja =y.Marijuana,counts=counts,
fitted=bestmodel$fitted.values)
## alkohol Rokok Ganja counts fitted
## 1 Yes Yes Yes 911 910.38317
## 2 Yes Yes No 538 538.61683
## 3 Yes No Yes 44 44.61683
## 4 Yes No No 456 455.38317
## 5 No Yes Yes 3 3.61683
## 6 No Yes No 43 42.38317
## 7 No No Yes 2 1.38317
## 8 No No No 279 279.61683