Importance du prédicteur catégorique dans la régression logistique

19

J'ai du mal à interpréter les valeurs z pour les variables catégorielles dans la régression logistique. Dans l'exemple ci-dessous, j'ai une variable catégorielle avec 3 classes et selon la valeur z, CLASS2 peut être pertinent tandis que les autres ne le sont pas.

Mais qu'est-ce que cela signifie maintenant?

Que je pourrais fusionner les autres classes en une seule?
Que toute la variable pourrait ne pas être un bon prédicteur?

Ceci est juste un exemple et les valeurs z réelles ici ne proviennent pas d'un vrai problème, j'ai juste des difficultés à les interpréter.

           Estimate    Std. Error  z value Pr(>|z|)    
CLASS0     6.069e-02  1.564e-01   0.388   0.6979    
CLASS1     1.734e-01  2.630e-01   0.659   0.5098    
CLASS2     1.597e+00  6.354e-01   2.514   0.0119 *  
user695652
la source

Réponses:

47

L'explication suivante n'est pas limitée à la régression logistique mais s'applique également à la régression linéaire normale et aux autres GLM. Habituellement, Rexclut un niveau de la catégorie et les coefficients dénotent la différence de chaque classe par rapport à cette classe de référence (ou parfois appelée classe de référence) (c'est ce qu'on appelle le codage factice ou les contrastes de traitement R, voir ici pour un excellent aperçu des différentes options de contraste ). Pour voir les contrastes actuels R, tapez options("contrasts"). Normalement, Rclasse les niveaux de la variable catégorielle par ordre alphabétique et prend le premier comme classe de référence. Ce n'est pas toujours optimal et peut être changé en tapant (ici, nous définirions la classe de référence à "c" dans la nouvelle variable)new.variable <- relevel(old.variable, ref="c"). Pour chaque coefficient de chaque niveau de la variable catégorielle, un test de Wald est effectué pour tester si la différence par paire entre le coefficient de la classe de référence et l'autre classe est différente de zéro ou non. C'est ce que sont les valeurs et dans la table de régression. Si une seule classe catégorielle est significative, cela n'implique pas que la variable entière n'a pas de sens et doit être supprimée du modèle. Vous pouvez vérifier l'effet global de la variable en effectuant un test de rapport de vraisemblance : ajustement deux modèles, l' une avec et l' autre sans la variable et le type de (voir exemple ci - dessous). Voici un exemple:zpanova(model1, model2, test="LRT")R

mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")

mydata$rank <- factor(mydata$rank)

my.mod <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")

summary(my.mod)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -3.989979   1.139951  -3.500 0.000465 ***
gre          0.002264   0.001094   2.070 0.038465 *  
gpa          0.804038   0.331819   2.423 0.015388 *  
rank2       -0.675443   0.316490  -2.134 0.032829 *  
rank3       -1.340204   0.345306  -3.881 0.000104 ***
rank4       -1.551464   0.417832  -3.713 0.000205 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Le niveau rank1a été omis et chaque coefficient de rankreprésente la différence entre le coefficient de rank1et le rankniveau correspondant . La différence entre le coefficient de rank1et rank2serait donc de . Le coefficient de est simplement l'ordonnée à l'origine. Le véritable coefficient de serait donc . Les tests de Wald testent ici si la différence entre le coefficient de la classe de référence (ici ) et les niveaux correspondants diffèrent de zéro. Dans ce cas, nous avons la preuve que les coefficients de toutes les classes diffèrent du coefficient de . Vous pouvez également adapter le modèle sans interception en ajoutant-0,675rank1rank2-3,99-0,675=-4.67rank1rank1- 1 à la formule du modèle pour voir tous les coefficients directement:

my.mod2 <- glm(admit ~ gre + gpa + rank - 1, data = mydata, family = "binomial")

summary(my.mod2) # no intercept model

Coefficients:
       Estimate Std. Error z value Pr(>|z|)    
gre    0.002264   0.001094   2.070 0.038465 *  
gpa    0.804038   0.331819   2.423 0.015388 *  
rank1 -3.989979   1.139951  -3.500 0.000465 ***
rank2 -4.665422   1.109370  -4.205 2.61e-05 ***
rank3 -5.330183   1.149538  -4.637 3.54e-06 ***
rank4 -5.541443   1.138072  -4.869 1.12e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Notez que l'ordonnée à l'origine a disparu maintenant et que le coefficient de rank1est exactement l'ordonnée à l'origine du premier modèle. Ici, le test de Wald vérifie non pas la différence par paire entre les coefficients mais l'hypothèse que chaque coefficient individuel est nul. Encore une fois, nous avons la preuve que chaque coefficient de rankdiffère de zéro. Enfin, pour vérifier si toute la variable rankaméliore l'ajustement du modèle, nous ajustons un modèle avec ( my.mod1) et un sans la variable rank( my.mod2) et effectuons un test de rapport de vraisemblance. Cela teste l'hypothèse que tous les coefficients de ranksont nuls:

my.mod1 <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial") # with rank
my.mod2 <- glm(admit ~ gre + gpa, data = mydata, family = "binomial") # without rank

anova(my.mod1, my.mod2, test="LRT")

Analysis of Deviance Table

Model 1: admit ~ gre + gpa + rank
Model 2: admit ~ gre + gpa
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1       394     458.52                          
2       397     480.34 -3  -21.826 7.088e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Le test du rapport de vraisemblance est hautement significatif et nous conclurions que la variable rankdevrait rester dans le modèle.

Ce post est également très intéressant.

COOLSerdash
la source
Réponse très instructive! Une question rapide: que se passe-t-il si nous n'avons que le rang de prédicteur? Pour effectuer le test LRT, la valeur nulle serait admit ~ 1vs admit ~ rank - 1?
NULL
1
@NULL Oui, soit le null vs, admit~ranksoit admit~rank - 1, ils sont équivalents en ce qui concerne l'ajustement.
COOLSerdash
Grand merci! Une autre question rapide: lorsque je suis intéressé à effectuer un test de Wald unilatéral des coefficients de la variable catégorielle (sans comparer à la ligne de base - je veux dire pas d'interception), l'effet d'autres prédicteurs tels que greet gpaserait-il affecté par ce manque de inclusion d'interception?
NULL
En d'autres termes, si je veux effectuer un test unilatéral sur les coefficients du prédicteur catégorique tout en contrôlant d'autres covariables, est-ce la voie à suivre? et cela s'appliquerait-il également à la régression linéaire?
NULL
1
rankrankp
8

z

Un coefficient non significatif signifie-t-il que vous pouvez fusionner des catégories? Non. Premièrement, non significatif signifie que nous ne pouvons pas rejeter l'hypothèse qu'il n'y a pas de différence, mais cela ne signifie pas qu'il n'existe pas de telles différences. L'absence de preuve n'est pas la même chose que la preuve d'absence. Deuxièmement, la fusion des catégories, en particulier la catégorie de référence, modifie l'interprétation de tous les autres coefficients. Que cela ait du sens ou non dépend de ce que ces différentes classes représentent.

Est-ce à dire que la variable catégorielle entière est un «mauvais» prédicteur (non significatif)? Non, pour cela, vous devrez effectuer un test simultané pour tous les termes de la classe.

Maarten Buis
la source