Testen Sie das logistische Regressionsmodell unter Verwendung von Restabweichungen und Freiheitsgraden

8

Ich habe diese Seite auf Princeton.edu gelesen . Sie führen eine logistische Regression durch (mit R). Irgendwann berechnen sie die Wahrscheinlichkeit, eine Restabweichung zu erhalten, die höher ist als diejenige, die sie bei einer Verteilung mit Freiheitsgraden erhalten haben, die den Freiheitsgraden des Modells entsprechen. Kopieren-Einfügen von ihrer Website ...χ2

> glm( cbind(using,notUsing) ~ age + hiEduc + noMore, family=binomial)

Call:  glm(formula = cbind(using, notUsing) ~ age + hiEduc + noMore,      
     family = binomial) 

Coefficients:
(Intercept)     age25-29     age30-39     age40-49       hiEduc       noMore  
    -1.9662       0.3894       0.9086       1.1892       0.3250       0.8330  

Degrees of Freedom: 15 Total (i.e. Null);  10 Residual
Null Deviance:      165.8 
Residual Deviance: 29.92        AIC: 113.4 

Die Restabweichung von 29,92 auf 10 df ist hoch signifikant:

> 1-pchisq(29.92,10)
[1] 0.0008828339

Wir brauchen also ein besseres Modell


Warum ist eine Berechnung sinnvoll 1-pchisq(29.92,10)und warum weist eine geringe Wahrscheinlichkeit darauf hin, dass mit ihrem Modell etwas nicht stimmt?

Remi.b
quelle

Antworten:

7

Sie verwenden einen unten gezeigten Abweichungstest:

D(y)=2(β^;y)+2(θ^(s);y)

Hier repräsentiert das angepasste Modell von Interesse und repräsentiert das gesättigte Modell. Die Log-Wahrscheinlichkeit für das gesättigte Modell ist (meistens) , daher bleibt Ihnen die verbleibende Abweichung des Modells, das sie angepasst haben ( ). Dieser Abweichungstest ist ungefähr Chi-Quadrat mit Freiheitsgraden ( sind die Beobachtungen und ist die Anzahl der angepassten Variablen). Sie haben und so dass der Test ungefährβ^θ^(s)029.92npnpn=16p=6χ102. Der Nullpunkt des Tests ist, dass Ihr angepasstes Modell gut zu den Daten passt und es keine Fehlanpassung gibt - Sie haben keine Variationsquellen verpasst. Im obigen Test lehnen Sie die Null ab und haben daher etwas in dem Modell, das Sie angepasst haben, übersehen. Der Grund für die Verwendung dieses Tests ist, dass das gesättigte Modell perfekt zu den Daten passt. Wenn Sie also die Null zwischen Ihrem angepassten Modell und dem gesättigten Modell nicht ablehnen, bedeutet dies, dass Sie keine großen Datenquellen verpasst haben Variation in Ihrem Modell.

francium87d
quelle
3

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")

Geben Sie hier die Bildbeschreibung ein

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()educationwantsMore

Geben Sie hier die Bildbeschreibung ein

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).

gung - Monica wieder einsetzen
quelle
2

Ich glaube nicht, dass die Restabweichungsstatistik eine Verteilung hat. Ich denke, es ist eine entartete Verteilung, weil die asymptotische Theorie nicht gilt, wenn die Freiheitsgrade mit der gleichen Geschwindigkeit wie die Stichprobengröße zunehmen. Auf jeden Fall bezweifle ich, dass der Test über eine ausreichende Leistung verfügt, und ermutige gezielte Tests wie Linearitätstests mit Regressionssplines und Interaktionstests.χ2

Frank Harrell
quelle
1
Ich denke, weil in diesem Fall alle Prädiktoren kategorisch sind, die Nr. Die Freiheitsgrade des gesättigten Modells würden mit der Stichprobengröße nicht zunehmen, daher ist der asymptotische Ansatz sinnvoll. Die Stichprobengröße ist allerdings noch recht klein.
Scortchi - Monica wieder einsetzen
Ich bin mir nicht sicher, ob es das ist. Der df der Modellparameter ist fest, aber der df des Residuums " " ist minus dem. χ2n
Frank Harrell
In diesem Fall bestehen die Daten aus 1607 Personen in einer Kontingenztabelle. Der Test vergleicht ein 6-Parameter-Modell mit dem 16-Parameter-Sättigungsmodell (anstelle eines 1607-Parameter-Modells).
Scortchi - Monica wieder einsetzen
Dann sollte es nicht als Rest . χ2
Frank Harrell
1
Ich bin damit einverstanden, dass diese Terminologie unglücklich ist: glmGibt eine andere "Restabweichung" an, wenn die Daten gruppiert werden, als wenn sie nicht gruppiert sind - und eine andere "Nullabweichung" für diese Angelegenheit.
Scortchi - Monica wieder einsetzen