Le rapport de vraisemblance (aka déviance) statistique et test de manque d'ajustement (ou qualité d'ajustement) est assez simple à obtenir pour un modèle de régression logistique (ajustement à l'aide de la fonction) dans R. Cependant, il peut être il est facile de faire en sorte que le nombre de cellules soit suffisamment bas pour que le test ne soit pas fiable. Une façon de vérifier la fiabilité du test de rapport de vraisemblance pour le manque d'ajustement consiste à comparer sa statistique de test et sa valeur P à celles du test de Chi Chi de Pearson (ou ).χ 2glm(..., family = binomial)
Ni l' glm
objet ni sa summary()
méthode ne rapportent la statistique de test pour le test du chi carré de Pearson pour manque d'ajustement. Dans ma recherche, la seule chose que j'ai trouvée est la chisq.test()
fonction (dans le stats
package): sa documentation dit " chisq.test
effectue des tests de table de contingence chi carré et des tests de qualité d'ajustement". Cependant, la documentation est rare sur la façon d'effectuer de tels tests:
Si
x
est une matrice avec une ligne ou une colonne, ou six
est un vecteur ety
n'est pas donné, alors un test de qualité d'ajustement est effectué (x
est traité comme un tableau de contingence unidimensionnel). Les entrées dex
doivent être des entiers non négatifs. Dans ce cas, l'hypothèse testée est de savoir si les probabilités de population sont égales à celles dep
, ou sont toutes égales si ellep
n'est pas donnée.
J'imagine que vous pourriez utiliser le y
composant de l' glm
objet pour l' x
argument de chisq.test
. Cependant, vous ne pouvez pas utiliser le fitted.values
composant de l' glm
objet pour l' p
argument de chisq.test
, car vous obtiendrez une erreur: " probabilities must sum to 1.
"
Comment puis-je (dans R) au moins calculer la statistique du test Pearson pour le manque d'ajustement sans avoir à parcourir les étapes manuellement?
la source
La statistique de Pearson a une distribution dégénérée et n'est donc pas recommandée en général pour la qualité de l'ajustement du modèle logistique. Je préfère les tests structurés (linéarité, additivité). Si vous voulez un test omnibus, voyez le seul degré de liberté le Cessie - van Houwelingen - Copas - Hosmer test de somme des carrés non pondéré tel qu'implémenté dans la fonction de
rms
package R.residuals.lrm
la source
ResourceSelection
package, et son résultat est différent de ce que j'obtiens en exécutantresid(lrm_object, 'gof')
après avoir ajusté mon modèle de régression logistiquelrm_object <- lrm(...)
. S'ils sont effectivement différents, pouvez-vous nous dire comment le test HL se compare à celui que vous mentionnez ici? Je vous remercie!Merci, je ne savais pas que c'était aussi simple que: somme (résidus (f1, type = "pearson") ^ 2) Cependant, veuillez noter que le résidu Pearsons varie selon qu'il est calculé par groupe de covariables ou par individu. Un exemple simple:
m1 est une matrice (celle-ci est la tête d'une matrice plus grande):
Lorsque x1-3 sont des prédicteurs, obs est non. observations dans chaque groupe, pi est la probabilité d'appartenance au groupe (prédite à partir de l'équation de régression), lev est l'effet de levier, la diagonale de la matrice du chapeau, yhat le non prédit. (de y = 1) dans le groupe et y le no réel.
Cela vous donnera Pearson par groupe. Notez comment c'est différent si 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)
}
}
Donc
S'il y a un grand nombre de sujets avec des modèles de covariables y = 0, alors le résidu de Pearons sera beaucoup plus grand lorsqu'il est calculé en utilisant la méthode «par groupe» plutôt que la méthode «par individu».
Voir par exemple Hosmer et Lemeshow "Applied Logistic Regression", Wiley, 200.
la source
Vous pouvez également utiliser
c_hat(mod)
ce qui donnera la même sortie quesum(residuals(mod, type = "pearson")^2)
.la source
c_hat
trouve- t- on?