L' écriture de Christopher Manning sur la régression logistique dans R montre une régression logistique dans R comme suit:
ced.logr <- glm(ced.del ~ cat + follows + factor(class),
family=binomial)
Quelques sorties:
> summary(ced.logr)
Call:
glm(formula = ced.del ~ cat + follows + factor(class),
family = binomial("logit"))
Deviance Residuals:
Min 1Q Median 3Q Max
-3.24384 -1.34325 0.04954 1.01488 6.40094
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.31827 0.12221 -10.787 < 2e-16
catd -0.16931 0.10032 -1.688 0.091459
catm 0.17858 0.08952 1.995 0.046053
catn 0.66672 0.09651 6.908 4.91e-12
catv -0.76754 0.21844 -3.514 0.000442
followsP 0.95255 0.07400 12.872 < 2e-16
followsV 0.53408 0.05660 9.436 < 2e-16
factor(class)2 1.27045 0.10320 12.310 < 2e-16
factor(class)3 1.04805 0.10355 10.122 < 2e-16
factor(class)4 1.37425 0.10155 13.532 < 2e-16
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 958.66 on 51 degrees of freedom
Residual deviance: 198.63 on 42 degrees of freedom
AIC: 446.10
Number of Fisher Scoring iterations: 4
Il explique ensuite comment interpréter les coefficients, comparer différents modèles, etc. Plutôt utile.
Cependant, quelle variance le modèle prend-il en compte? Une page Stata sur la régression logistique dit:
Techniquement, ne peut pas être calculée de la même manière dans la régression logistique telle qu'elle est en régression OLS. Le pseudo- R 2 , dans la régression logistique, est défini par 1 - L 1 , oùL0représente la probabilité de log pour le modèle "à constante uniquement" etL1,la log de vraisemblance pour le modèle complet avec constantes et prédicteurs.
Je comprends cela au plus haut niveau. Le modèle à constante uniquement serait dépourvu de l'un des paramètres (uniquement le terme d'interception). La vraisemblance du journal est une mesure de l'adéquation des paramètres aux données. En fait, Manning sorte de conseils que la déviance pourrait être . La déviance nulle est peut-être uniquement constante et la déviance résiduelle est - 2 log L du modèle? Cependant, je ne suis pas limpide à ce sujet.
Quelqu'un peut -il vérifier comment on calcule en fait le pseudo- à R en utilisant cet exemple?
la source
Réponses:
N'oubliez pas le package rms , de Frank Harrell. Vous trouverez tout ce dont vous avez besoin pour adapter et valider les GLM.
Voici un exemple de jouet (avec un seul prédicteur):
Cela donne:
Maintenant, en utilisant la
lrm
fonction,print(mod1b)
Par la main,
la source
la source
pR2 = 1 - mod$deviance / mod$null.deviance # works for glm
Utilisez la fonction "logLik" dans R et la définition (fonctionne également pour dans l'échantillon)
mod_null <- glm(y~1, family = binomial, data = insample) 1- logLik(mod)/logLik(mod_null)
Exemple:
pseudo-R hors échantillon
Codes:
pred.out.link <- predict(mod, outSample, type = "link") mod.out.null <- gam(Default~1, family = binomial, data = outSample) pR2.out <- 1 - sum(outSample$y * pred.out.link - log(1 + exp(pred.out.link))) / logLik(mod.out.null)
la source
model1 <- glm(cbind(ncases, ncontrols) ~ agegp + tobgp * alcgp, data = esoph, family = binomial)
model1$deviance
-2*logLik(model1)
si déviance était proportionnelle au log de vraisemblance, et que l’on utilise la définition (voir par exemple McFadden ici )
La question qui se pose est la suivante: la déviance rapportée est-elle proportionnelle au log de vraisemblance?
la source
la source