glm in R - quelle valeur p représente la qualité d'ajustement de l'ensemble du modèle?

10

Je lance glms en R (modèles linéaires généralisés). Je pensais que je connaissais les valeurs p - jusqu'à ce que je voie que l'appel à un résumé pour un GLM ne vous donne pas une valeur p primordiale représentative du modèle dans son ensemble - du moins pas à l'endroit où les modèles linéaires le font.

Je me demande si cela est donné comme valeur de p pour l'Intercept, en haut du tableau des coefficients. Ainsi, dans l'exemple suivant, alors que Wind.speed..knots et canopy_density peuvent être significatifs pour le modèle, comment savoir si le modèle lui-même est significatif? Comment savoir si je dois faire confiance à ces valeurs? Ai-je raison de me demander si le Pr (> | z |) pour (Intercept) représente la signification du modèle? Ce modèle est-il important? ??? Merci!

Je dois noter que l'exécution d'un test F ne donnera pas de valeur p car je reçois un message d'erreur indiquant que l'exécution de tests F sur la famille binomiale est inappropriée.

Call:
glm(formula = Empetrum_bin ~ Wind.speed..knots. + canopy_density, 
    family = binomial, data = CAIRNGORM)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.2327  -0.7167  -0.4302  -0.1855   2.3194  

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)  
(Intercept)          1.8226     1.2030   1.515   0.1298  
Wind.speed..knots.  -0.5791     0.2628  -2.203   0.0276 *
canopy_density      -2.5733     1.1346  -2.268   0.0233 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 59.598  on 58  degrees of freedom
Residual deviance: 50.611  on 56  degrees of freedom
  (1 observation deleted due to missingness)
AIC: 56.611
Martin
la source
1
Si je me souviens bien dans une régression binomiale, vous devriez utiliser un test de déviance, alias un test de vraisemblance logarithmique - qui est analogue au test F utilisé dans une régression linéaire. C'est le -2 * (Null LL - Saturated LL) qui correspond à une distribution chi carré. Bien que je ne puisse pas voir une vraisemblance de journal de modèle dans votre sortie de résumé. Est-ce dans l'objet modèle mais pas dans la sortie récapitulative?
SamPassmore

Réponses:

10

Vous pouvez soit faire un test chi carré asymptotique de (59.598-50.611) vs un chi carré avec (58-56) df, soit utiliser anova()sur votre objet glm (qui ne fait pas le test directement, mais au moins calcule ( 59.598-50.611) et (58-56) pour vous).

Il s'agit en fait d'une analyse de la déviance .

Voici le genre de calculs que vous pourriez faire (sur un autre ensemble de données, fourni avec R):

spray1=glm(count~spray,family=poisson,data=InsectSprays)  # full model
spray0=glm(count~1,family=poisson,data=InsectSprays)      # null model
with(anova(spray0,spray1),pchisq(Deviance,Df,lower.tail=FALSE)[2]) 

Ce qui donne la valeur de p pour une statistique chi carré asymptotique basée sur la déviance .

Ou vous pouvez utiliser les fonctions devianceet df.residualpour ce faire:

 pchisq(deviance(spray0)-deviance(spray1),
     df.residual(spray0)-df.residual(spray1),
    lower.tail=FALSE)

-

Beaucoup de gens utiliseraient la comparaison entre l'AIC complet et le modèle nul (ou dans certains cas, peut-être une comparaison entre un modèle d'intérêt et le modèle saturé) pour déterminer si le modèle était meilleur que le zéro dans ce sens.

-

Ai-je raison de me demander si le Pr (> | z |) pour (Intercept) représente la signification du modèle?

Ce n'est pas le cas. En effet, la valeur p d'interception n'a généralement pas d'intérêt direct.

Si vous envisagez un modèle avec un paramètre de dispersion, j'ai vu certaines personnes plaider pour faire un test F au lieu d'un chi carré asymptotique; il correspond aux personnes utilisant un test t au lieu de az sur les coefficients individuels. Il est peu probable que ce soit une approximation raisonnable dans de petits échantillons. Je n'ai pas vu de dérivation ou de simulation qui suggérerait que le F est nécessairement une approximation appropriée (c'est-à-dire meilleure que le résultat asymptotique) dans le cas des GLM en général. Un pourrait bien exister, mais je ne l'ai pas vu.

Glen_b -Reinstate Monica
la source
2
Vous pouvez également exécuter à Anova(fit, type = 2)partir de la carbibliothèque
Algorithmatic
3

En supposant que votre modèle est dans l'objet 'fit', vous pouvez utiliser ce code pour effectuer un test de ressemblance de log sur votre modèle binomial. Comme vous l'avez noté, un test F n'est pas approprié, mais ce test testera si votre modèle est mieux prédit que aléatoire.

LLR = -2 * (fit$null.deviance - fit$deviance)

Il s'agit de la formule du test du rapport de vraisemblance logarithmique.

pchisq(LLR, 2, lower.tail = FALSE)

Et cela vous donnera la valeur p. Bien que je ne sois pas sûr à 100% que c'est le bon df. Je suis sûr que c'est la différence dans le nombre de paramètres, dont vous avez 2 dans votre modèle saturé et aucun dans le modèle Null, ergo df = 3 - 1 = 2. Mais cela pourrait être quelque chose à suivre.

SamPassmore
la source
1

Fχ2

Alternativement, vous pouvez regarder AIC, ou des mesures connexes comme BIC.

R2

Livius
la source