Ihre Frage wurde wie angegeben von @ francium87d beantwortet. Der Vergleich der Restabweichung mit der geeigneten Chi-Quadrat-Verteilung stellt das Testen des angepassten Modells mit dem gesättigten Modell dar und zeigt in diesem Fall einen signifikanten Mangel an Anpassung.
Dennoch kann es hilfreich sein, die Daten und das Modell genauer zu betrachten, um besser zu verstehen, was es bedeutet, dass das Modell nicht passt:
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")
Die Abbildung zeigt den beobachteten Anteil von Frauen in jeder Gruppe von Kategorien, die Geburtenkontrolle anwenden, sowie das genaue 95% -Konfidenzintervall. Die vorhergesagten Proportionen des Modells sind rot überlagert. Wir können sehen, dass zwei vorhergesagte Anteile außerhalb der 95% CIs liegen und weitere fünf an oder sehr nahe an den Grenzen der jeweiligen CIs liegen. Das sind sieben von sechzehn ( ), die vom Ziel abweichen. Daher stimmen die Vorhersagen des Modells nicht sehr gut mit den beobachteten Daten überein. 44%
Wie könnte das Modell besser passen? Möglicherweise gibt es Wechselwirkungen zwischen den Variablen, die relevant sind. Fügen wir alle wechselseitigen Interaktionen hinzu und bewerten Sie die Anpassung:
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 .
Der p-Wert für den fehlenden Fit-Test für dieses Modell beträgt jetzt . Aber brauchen wir wirklich all diese zusätzlichen Interaktionsbegriffe? Der Befehl zeigt die Ergebnisse der verschachtelten Modelltests ohne sie an. Die Interaktion zwischen und ist nicht ganz signifikant, aber ich würde es im Modell trotzdem gut finden. Lassen Sie uns sehen, wie die Vorhersagen dieses Modells mit den Daten verglichen werden: 0.486drop1()
education
wantsMore
Diese sind nicht perfekt, aber wir sollten nicht davon ausgehen, dass die beobachteten Proportionen den tatsächlichen Datenerzeugungsprozess perfekt widerspiegeln. Diese sehen für mich so aus, als würden sie um die entsprechende Menge springen (genauer gesagt, die Daten springen um die Vorhersagen, nehme ich an).