A tu pregunta, como se dijo, ha sido contestada por @francium87d. La comparación de los residuales de la desviación en contra de la adecuada distribución chi-squared constituye prueba el modelo ajustado contra el modelo saturado y muestra, en este caso, una importante falta de ajuste.
Aún así, podría ayudar a buscar más a fondo en los datos y el modelo para comprender mejor lo que significa que el modelo tiene una falta de ajuste:
d = read.table(text=" age education wantsMore notUsing using
<25 low yes 53 6
<25 low no 10 4
<25 high yes 212 52
<25 high no 50 10
25-29 low yes 60 14
25-29 low no 19 10
25-29 high yes 155 54
25-29 high no 65 27
30-39 low yes 112 33
30-39 low no 77 80
30-39 high yes 118 46
30-39 high no 68 78
40-49 low yes 35 6
40-49 low no 46 48
40-49 high yes 8 8
40-49 high no 12 31", header=TRUE, stringsAsFactors=FALSE)
d = d[order(d[,3],d[,2]), c(3,2,1,5,4)]
library(binom)
d$proportion = with(d, using/(using+notUsing))
d$sum = with(d, using+notUsing)
bCI = binom.confint(x=d$using, n=d$sum, methods="exact")
m = glm(cbind(using,notUsing)~age+education+wantsMore, d, family=binomial)
preds = predict(m, new.data=d[,1:3], type="response")
windows()
par(mar=c(5, 8, 4, 2))
bp = barplot(d$proportion, horiz=T, xlim=c(0,1), xlab="proportion",
main="Birth control usage")
box()
axis(side=2, at=bp, labels=paste(d[,1], d[,2], d[,3]), las=1)
arrows(y0=bp, x0=bCI[,5], x1=bCI[,6], code=3, angle=90, length=.05)
points(x=preds, y=bp, pch=15, col="red")
La figura representa gráficamente la proporción observada de las mujeres en cada grupo de categorías que utiliza el control de la natalidad, junto con la posición exacta del 95% de intervalo de confianza. El modelo predijo proporciones se muestran en rojo. Podemos ver que dos predicho proporciones están fuera de el 95% de la Cei, y de la antera, cinco están en, o muy cerca de los límites de los respectivos países de Cei. Que siete de los dieciséis años ($44\%$) que están fuera del objetivo. Así que las predicciones del modelo no coinciden con los datos observados muy bien.
¿Cómo podría el modelo de mejor ajuste? Tal vez no son las interacciones entre las variables que son relevantes. Vamos a agregar todas las interacciones de dos y evaluar el ajuste:
m2 = glm(cbind(using,notUsing)~(age+education+wantsMore)^2, d, family=binomial)
summary(m2)
# ...
# Null deviance: 165.7724 on 15 degrees of freedom
# Residual deviance: 2.4415 on 3 degrees of freedom
# AIC: 99.949
#
# Number of Fisher Scoring iterations: 4
1-pchisq(2.4415, df=3) # [1] 0.4859562
drop1(m2, test="LRT")
# Single term deletions
#
# Model:
# cbind(using, notUsing) ~ (age + education + wantsMore)^2
# Df Deviance AIC LRT Pr(>Chi)
# <none> 2.4415 99.949
# age:education 3 10.8240 102.332 8.3826 0.03873 *
# age:wantsMore 3 13.7639 105.272 11.3224 0.01010 *
# education:wantsMore 1 5.7983 101.306 3.3568 0.06693 .
El valor de p para la falta de prueba de ajuste para este modelo es ahora $0.486$. Pero, ¿realmente necesitamos todos los términos de interacción? El drop1()
comando muestra los resultados del modelo anidado pruebas sin ellos. La interacción entre education
y wantsMore
no es muy significativo, pero quiero estar bien con ella en el modelo de todos modos. Así que vamos a ver cómo las predicciones de este modelo de comparar a los datos:
Estos no son perfectas, pero no debemos asumir que las proporciones observadas son un reflejo perfecto de la verdadera generadora de datos de proceso. Estos a mí me parece que están rebotando alrededor de la cantidad apropiada (más correctamente que los datos están rebotando alrededor de las predicciones, supongo).