Die Statistik des Wahrscheinlichkeitsverhältnisses (auch bekannt als Abweichung) und der Test auf mangelnde Anpassung (oder Anpassungsgüte) sind für ein logistisches Regressionsmodell (Anpassung unter Verwendung der Funktion) in R ziemlich einfach zu erhalten . Dies kann jedoch sein Es ist leicht, einige Zellzahlen so niedrig zu halten, dass der Test unzuverlässig ist. Eine Möglichkeit, die Zuverlässigkeit des Likelihood-Ratio-Tests auf mangelnde Anpassung zu überprüfen, besteht darin, seine Teststatistik und seinen P- Wert mit denen des Pearson-Chi-Quadrat -Tests (oder ) zu vergleichen.χ 2glm(..., family = binomial)
Weder das glm
Objekt noch seine summary()
Methode geben die Teststatistik für Pearsons Chi-Quadrat-Test wegen mangelnder Anpassung an. Bei meiner Suche habe ich nur die chisq.test()
Funktion (im stats
Paket) gefunden: In der Dokumentation heißt es: " chisq.test
Führt Chi-Quadrat-Kontingenztabellentests und Anpassungstests durch." In der Dokumentation wird jedoch nur spärlich beschrieben, wie solche Tests durchgeführt werden:
Wenn
x
es sich um eine Matrix mit einer Zeile oder Spalte handelt oder wennx
es sich um einen Vektor handelt und diesery
nicht angegeben ist, wird ein Anpassungstest durchgeführt (x
wird als eindimensionale Kontingenztabelle behandelt). Die Einträge vonx
müssen nicht negative ganze Zahlen sein. In diesem Fall lautet die getestete Hypothese, ob die Populationswahrscheinlichkeiten denen in entsprechenp
oder alle gleich sind, wenn siep
nicht angegeben werden.
Ich würde mir vorstellen, dass Sie die y
Komponente des glm
Objekts für das x
Argument von verwenden könnten chisq.test
. Sie können die fitted.values
Komponente des glm
Objekts jedoch nicht für das p
Argument von verwenden chisq.test
, da die Fehlermeldung " probabilities must sum to 1.
" angezeigt wird.
Wie kann ich (in R) zumindest die Pearson -Teststatistik für mangelnde Anpassung berechnen, ohne die Schritte manuell durchlaufen zu müssen?
Die Pearson-Statistik weist eine entartete Verteilung auf und wird daher im Allgemeinen nicht für die Anpassungsgüte des logistischen Modells empfohlen. Ich bevorzuge strukturierte Tests (Linearität, Additivität). Wenn Sie möchten , ein Omnibus - Test den einzigen Freiheitsgrad le Cessie sehen - van Houwelingen - Copas - Hosmer ungewichteten Summe der Quadrate Test , wie in der R umgesetzt
rms
Paketresiduals.lrm
Funktion.quelle
ResourceSelection
Paket gefunden, und sein Ergebnis unterscheidet sich von dem, was ich durch Ausführenresid(lrm_object, 'gof')
nach dem Anpassen meines logistischen Regressionsmodells als erhaltelrm_object <- lrm(...)
. Wenn sie sich tatsächlich unterscheiden, können Sie kommentieren, wie sich der HL-Test gegen den hier erwähnten verhält? Vielen Dank!Vielen Dank, ich wusste nicht, dass es so einfach ist wie: Summe (Residuen (f1, Typ = "Pearson") ^ 2) Bitte beachten Sie jedoch, dass die Residuen von Pearsons variieren, je nachdem, ob sie nach kovariaten Gruppen oder nach Einzelpersonen berechnet werden. Ein einfaches Beispiel:
m1 ist eine Matrix (diese ist der Kopf einer größeren Matrix):
Wo x1-3 Prädiktoren sind, ist obs nein. Beobachtungen in jeder Gruppe, pi ist die Wahrscheinlichkeit einer Gruppenmitgliedschaft (vorhergesagt aus der Regressionsgleichung), lev ist die Hebelwirkung, die Diagonale der Hutmatrix, yhat die vorhergesagte Nr. (von y = 1) in der Gruppe und y die tatsächliche Nr.
Dies gibt Ihnen Pearson's nach Gruppe. Beachten Sie, wie unterschiedlich es ist, wenn y == 0: ' 'fun1 <- function(j){
if (m1[j,"y"] ==0){ # y=0 for this covariate pattern
Pr1 <- sqrt( m1[i,"pi"] / (1-m1[i,"pi"]))
Pr2 <- -sqrt (m1[i,"obs"])
res <- round( Pr1 * Pr2, 3)
return(res)
} else {
Pr1 <- m1[j,"y"] - m1[j,"yhat"]
Pr2 <- sqrt( m1[j,"yhat"] * ( 1-(m1[j,"pi"]) ) )
res <- round( Pr1/Pr2, 3)
return(res)
}
}
Somit
Wenn es eine große Anzahl von Probanden mit y = 0 kovariaten Mustern gibt, ist der Pearons-Rest viel größer, wenn er nach der Methode "nach Gruppe" und nicht nach der Methode "nach Individuum" berechnet wird.
Siehe z. B. Hosmer & Lemeshow "Applied Logistic Regression", Wiley, 200.
quelle
Sie können auch verwenden
c_hat(mod)
, um die gleiche Ausgabe wie zu erhaltensum(residuals(mod, type = "pearson")^2)
.quelle
c_hat
sich?