Formule pseudo R au carré pour les GLM

Réponses:

22

Il existe un grand nombre de pseudo- pour les GLiM. L'excellent site d'aide des statistiques UCLA en a un aperçu complet ici . Celui que vous listez s'appelle le pseudo- McFadden . Par rapport à la typologie UCLA, elle est comme dans le sens où elle indexe l'amélioration du modèle ajusté sur le modèle nul. Certains logiciels statistiques, notamment SPSS, si je me souviens bien, impriment par défaut le pseudo- de McFadden avec les résultats de certaines analyses comme la régression logistique, donc je soupçonne que c'est assez courant, bien que les pseudo- Cox & Snell et Nagelkerke pseudo- s peut être encore plus. Cependant, le pseudo- McFadden n'a pas toutes les propriétés deR 2 R 2 R 2 R 2 R 2 R 2 R 2 R 2 R 2 R 2 R 2R2R2R2R2R2R2R2 (pas de pseudo- ). Si quelqu'un souhaite utiliser un pseudo- pour comprendre un modèle, je recommande fortement de lire cet excellent fil de discussion: Quelle pseudo- mesure est celle à signaler pour la régression logistique (Cox & Snell ou Nagelkerke)? (Pour ce que ça vaut, est lui - même que les gens se rendent compte glissante, une grande démonstration qui peut être vu dans la réponse de @ whuber ici: Is ? Utile ou dangereux ) R2R2R2R2R2

gung - Réintégrer Monica
la source
Je me demande si tous ces pseudo-R2 ont été conçus spécifiquement pour la régression logistique uniquement? Ou généralisent-ils aussi pour le poisson et les gamma-glms? J'ai trouvé différentes formules R2 pour chaque GLM possible dansColin Cameron, A., & Windmeijer, F. A. (1997). An R-squared measure of goodness of fit for some common nonlinear regression models. Journal of Econometrics, 77(2), 329-342.
Jens
@Jens, certains d'entre eux semblent certainement spécifiques à LR, mais d'autres utilisent la déviance, que vous pourriez obtenir de n'importe quel GLiM.
gung - Rétablir Monica
1
Notez que le McFadden est souvent défini en termes de log-vraisemblance, qui n'est définie que jusqu'à une constante additive, et non de déviance comme dans la question du PO. , McFadden sans une spécification de la constante d' addition de R 2 ne soit pas bien défini. La déviance est un choix unique de la constante additive, qui est à mon avis le choix le plus approprié, si la généralisation doit être comparable à R 2 à partir de modèles linéaires. R2R2R2
NRH
Étant donné que les GLM sont ajustés en utilisant les moindres carrés itérativement repondérés, comme dans bwlewis.github.io/GLM , quelle serait en réalité l'objection de calculer un R2 pondéré sur l'échelle de liaison GLM, en utilisant des poids 1 / variance comme poids (ce que glm rend dans les poids de la fente dans un ajustement glm)?
Tom Wenseleers
R2
9

R donne une déviance nulle et résiduelle dans la sortie pour glmque vous puissiez faire exactement ce genre de comparaison (voir les deux dernières lignes ci-dessous).

> x = log(1:10)

> y = 1:10

> glm(y ~ x, family = poisson)

>Call:  glm(formula = y ~ x, family = poisson)

Coefficients:
(Intercept)            x  
  5.564e-13    1.000e+00  

Degrees of Freedom: 9 Total (i.e. Null);  8 Residual
Null Deviance:      16.64 
Residual Deviance: 2.887e-15    AIC: 37.97

Vous pouvez également extraire ces valeurs de l'objet avec model$null.devianceetmodel$deviance

David J. Harris
la source
Ah ok. Je répondais juste à la question telle qu'elle était écrite. J'aurais ajouté plus, mais je ne suis pas sûr à 100% de la façon dont la déviance nulle est calculée moi-même (cela a quelque chose à voir avec la probabilité de journalisation d'un modèle saturé, mais je ne me souviens pas assez des détails sur la saturation pour être confiant) que je pourrais donner de bonnes intuitions)
David J. Harris
Je ne l'ai pas dans la sortie glm (possession familiale ou quasipoisson).
Curieux
@Tomas voir mes modifications. Je ne sais pas si je me suis trompé il y a 2 ans ou si la sortie par défaut a changé depuis.
David J. Harris
summary.glmR2
1
Lisez la question. Pensez-vous y répondre? La question n'était pas "où puis-je obtenir les composants de la formule?".
Curieux
6

La formule que vous avez proposée a été proposée par Maddala (1983) et Magee (1990) pour estimer R au carré sur le modèle logistique. Par conséquent, je ne pense pas que cela s'applique à tous les modèles glm (voir le livre Modern Regression Methods de Thomas P. Ryan à la page 266).

Si vous faites un faux ensemble de données, vous verrez qu'il sous-estime le R au carré ... pour la glm gaussienne par exemple.

Je pense que pour un gla gaussien, vous pouvez utiliser la formule de base (lm) R au carré ...

R2gauss<- function(y,model){
    moy<-mean(y)
    N<- length(y)
    p<-length(model$coefficients)-1
    SSres<- sum((y-predict(model))^2)
    SStot<-sum((y-moy)^2)
    R2<-1-(SSres/SStot)
    Rajust<-1-(((1-R2)*(N-1))/(N-p-1))
    return(data.frame(R2,Rajust,SSres,SStot))
}

Et pour la logistique (ou la famille binomiale en r) j'utiliserais la formule que vous avez proposée ...

    R2logit<- function(y,model){
    R2<- 1-(model$deviance/model$null.deviance)
    return(R2)
    }

Jusqu'à présent, pour poisson glm, j'ai utilisé l'équation de ce post.

/programming/23067475/how-do-i-obtain-pseudo-r2-measures-in-stata-when-using-glm-regression

Il y a aussi un super article sur la pseudo R2 disponible sur les portails de recherche ... voici le lien:

https://www.researchgate.net/publication/222802021_Pseudo_R-squared_measures_for_Poisson_regression_models_with_over-_or_underdispersion

J'espère que cette aide.

Nico Coallier
la source
Ajustez simplement un modèle GLM avec family = gaussian (link = identity) et vérifiez la valeur de 1-summary(GLM)$deviance/summary(GLM)$null.devianceet vous verrez que le R2 correspond à la valeur R2 d'une régression OLS régulière, donc la réponse ci-dessus est correcte! Voir aussi mon article ici - stats.stackexchange.com/questions/412580/…
Tom Wenseleers
3

Le paquet de R modEvAcalcule D-Squared comme 1 - (mod$deviance/mod$null.deviance)mentionné par David J. Harris

set.seed(1)
data <- data.frame(y=rpois(n=10, lambda=exp(1 + 0.2 * x)), x=runif(n=10, min=0, max=1.5))

mod <- glm(y~x,data,family = poisson)

1- (mod$deviance/mod$null.deviance)
[1] 0.01133757
library(modEvA);modEvA::Dsquared(mod)
[1] 0.01133757

Le D-Squared ou la déviance expliquée du modèle est présenté dans (Guisan & Zimmermann 2000) https://doi.org/10.1016/S0304-3800(00)00354-9

user2673238
la source