By: Santiago Guerrero Rondón- Valentina Valle Velasco
Los modelos loglineales modelan los conteos de celdas en las tablas de contingencia. Se diferencian un poco de otros metodos de modelacion en que no distinguen entre variables de respuesta y explicativas. Todas las variables en un modelo loglineal son esencialmente “respuestas”.
Se realizara entonces un ejemplo en donde se podra visualizar el modelo loglineal. Resume las respuestas de una encuesta en la que se pregunto a los estudiantes del primer semestre de cierta facultad si habian consumido alcohol, cigarrillos o marihuana.
tabcon <- array(data = c(180,10,108,90,50,2,12,20),
dim = c(2,2,2),
dimnames = list("Cig" = c("S", "N"),
"Mar" = c("S", "N"),
"Alc" = c("S", "N")));tabcon
, , Alc = S
Mar
Cig S N
S 180 108
N 10 90
, , Alc = N
Mar
Cig S N
S 50 12
N 2 20
ftable(tabcon, row.vars = c("Alc", "Cig"))
Mar S N
Alc Cig
S S 180 108
N 10 90
N S 50 12
N 2 20
addmargins(tabcon)
, , Alc = S
Mar
Cig S N Sum
S 180 108 288
N 10 90 100
Sum 190 198 388
, , Alc = N
Mar
Cig S N Sum
S 50 12 62
N 2 20 22
Sum 52 32 84
, , Alc = Sum
Mar
Cig S N Sum
S 230 120 350
N 12 110 122
Sum 242 230 472
prop.table(tabcon, margin = c(1,3))
, , Alc = S
Mar
Cig S N
S 0.625 0.375
N 0.100 0.900
, , Alc = N
Mar
Cig S N
S 0.8065 0.194
N 0.0909 0.909
Cree una tabla que rompa por consumo de cigarrillo y que se vean las tablas 2*2 para las otras dos variables. 1. Percibe alguna relacion. Rta/ Si, a simple vista se puede observar que existe una relación entre los datos pues se aprecian altos valores en las proporciones, por ejemplo entre las personas que fuman o no marihuana y cigarrillo. Sin embargo, no se percibe relacion entre las personas que cosumen alcohol.
2. Aquellos que fuman cigarros son mas propensos al uso de la marihuana. Rta/
350/230; # la proporcion aqui seria de 2:1
[1] 1.52
122/12; # y aqui es de 10:1 . Hay una relacion entre el que fumen marihuana y el que fumen cigarrilo porque la proporcion es mucho mas grande. Como se puede observar, de las personas que fuman cigarrillo una gran parte tambien fuma marihuana, esto quiere decir que de cada dos personas por lo menos una ha fumado marihuana tambien.
[1] 10.2
388/100; # en esta, la razon es de casi 4:1 (3.88)
[1] 3.88
84/22; # en esta, la razon es de casi 4:1 (3.82)
[1] 3.82
#Con lo anterior Se puede inferir que no aparenta tener relación entre tomar alcohol y ser propenso al uso del cigarrillo, debido a que de cada 4 personas que beben alcohol al menos una fuma; y de cada 4 que no beben alcohl, al menos una fuma.
Cigarrillo
tabcon2 <- array(data = c(180, 50, 108, 12, 10, 2, 90, 20),
dim = c(2,2,2),
dimnames = list("Alc" = c("S", "N"),
"Mar" = c("S", "N"),
"Cig" = c("S", "N")));tabcon2
, , Cig = S
Mar
Alc S N
S 180 108
N 50 12
, , Cig = N
Mar
Alc S N
S 10 90
N 2 20
ftable(tabcon2, row.vars = c("Cig", "Alc"))
Mar S N
Cig Alc
S S 180 108
N 50 12
N S 10 90
N 2 20
addmargins(tabcon2)
, , Cig = S
Mar
Alc S N Sum
S 180 108 288
N 50 12 62
Sum 230 120 350
, , Cig = N
Mar
Alc S N Sum
S 10 90 100
N 2 20 22
Sum 12 110 122
, , Cig = Sum
Mar
Alc S N Sum
S 190 198 388
N 52 32 84
Sum 242 230 472
options(digits = 3)
prop.table(tabcon2, margin = c(1,3))
, , Cig = S
Mar
Alc S N
S 0.625 0.375
N 0.806 0.194
, , Cig = N
Mar
Alc S N
S 0.1000 0.900
N 0.0909 0.909
tabcon.df <- as.data.frame(as.table(tabcon))
tabcon.df[,-4] <- lapply(tabcon.df[,-4], relevel, ref = "N")
tabcon.df
set.seed(1)
m1000 <- sample(c("numero", "simbolo"), 40, replace = T);m1000
[1] "numero" "simbolo" "numero" "numero" "simbolo"
[6] "numero" "numero" "numero" "simbolo" "simbolo"
[11] "numero" "numero" "numero" "numero" "numero"
[16] "simbolo" "simbolo" "simbolo" "simbolo" "numero"
[21] "numero" "numero" "numero" "numero" "numero"
[26] "numero" "simbolo" "numero" "numero" "simbolo"
[31] "simbolo" "simbolo" "numero" "simbolo" "numero"
[36] "numero" "simbolo" "numero" "simbolo" "simbolo"
m200 <- sample(c("numero", "simbolo"), 40, replace = T);m200
[1] "simbolo" "simbolo" "numero" "simbolo" "simbolo"
[6] "simbolo" "simbolo" "simbolo" "numero" "numero"
[11] "simbolo" "numero" "simbolo" "simbolo" "numero"
[16] "numero" "simbolo" "simbolo" "simbolo" "numero"
[21] "numero" "simbolo" "simbolo" "simbolo" "simbolo"
[26] "simbolo" "simbolo" "numero" "simbolo" "simbolo"
[31] "simbolo" "simbolo" "numero" "numero" "numero"
[36] "simbolo" "simbolo" "numero" "numero" "simbolo"
table(m1000, m200)
m200
m1000 numero simbolo
numero 9 15
simbolo 5 11
mod0 <- glm(Freq ~ Cig + Mar + Alc,
data = tabcon.df, family = poisson)
summary(mod0)
Call:
glm(formula = Freq ~ Cig + Mar + Alc, family = poisson, data = tabcon.df)
Deviance Residuals:
1 2 3 4 5 6 7 8
2.58 -7.08 -2.83 5.26 2.95 -3.38 -3.80 2.58
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 2.3590 0.1422 16.59 <2e-16 ***
CigS 1.0539 0.1051 10.02 <2e-16 ***
MarS 0.0509 0.0921 0.55 0.58
AlcS 1.5302 0.1203 12.72 <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: 461.07 on 7 degrees of freedom
Residual deviance: 133.63 on 4 degrees of freedom
AIC: 183.2
Number of Fisher Scoring iterations: 5
pchisq(deviance(mod0), df = df.residual(mod0), lower.tail = F)
[1] 6.53e-28
exp(coef(mod0)[3])
MarS
1.05
prueba_odd <- margin.table(tabcon, margin = 2)/sum(margin.table(tabcon, margin = 2))
prueba_odd[1]/prueba_odd[2]
S
1.05
mod1 <- glm(Freq ~ (Cig + Mar + Alc)^2,
data = tabcon.df, family = poisson)
summary(mod1)
Call:
glm(formula = Freq ~ (Cig + Mar + Alc)^2, family = poisson, data = tabcon.df)
Deviance Residuals:
1 2 3 4 5 6 7
-0.116 0.522 0.151 -0.164 0.223 -0.902 -0.432
8
0.358
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 2.915 0.222 13.15 < 2e-16 ***
CigS -0.307 0.315 -0.97 0.330
MarS -1.645 0.373 -4.41 1.1e-05 ***
AlcS 1.602 0.240 6.67 2.6e-11 ***
CigS:MarS 2.918 0.329 8.88 < 2e-16 ***
CigS:AlcS 0.458 0.332 1.38 0.167
MarS:AlcS -0.739 0.297 -2.49 0.013 *
---
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for poisson family taken to be 1)
Null deviance: 461.0688 on 7 degrees of freedom
Residual deviance: 1.5132 on 1 degrees of freedom
AIC: 57.11
Number of Fisher Scoring iterations: 4
pchisq(deviance(mod1), df = df.residual(mod1), lower.tail = F)
[1] 0.219
exp(coef(mod1)["MarS:AlcS"])
MarS:AlcS
0.477
mod1$coefficients
(Intercept) CigS MarS AlcS CigS:MarS
2.915 -0.307 -1.645 1.602 2.918
CigS:AlcS MarS:AlcS
0.458 -0.739
exp(confint(mod1, parm = c("CigS:MarS", "CigS:AlcS", "MarS:AlcS")))
Waiting for profiling to be done...
2.5 % 97.5 %
CigS:MarS 10.092 36.965
CigS:AlcS 0.822 3.037
MarS:AlcS 0.262 0.844
Pregunta: Elimine interacciones dobles innecesarias y repita el proceso. Mejora el modelo. Estime todos los valores y use el AIC para seleccionar el mejor modelo. Interprete las relaciones encontradas. Haga algunos graficos definidos por ustedes para visualizar el ajuste, y para comparar las posibilidades de usar marihuana si se ha usado cigarrillos independientemente del alcohol. Escriba la ecuacion final del modelo ajustado.