Significado do preditor categórico na regressão logística

19

Estou tendo problemas para interpretar os valores z para variáveis ​​categóricas na regressão logística. No exemplo abaixo, tenho uma variável categórica com 3 classes e, de acordo com o valor z, CLASS2 pode ser relevante enquanto as outras não.

Mas agora o que isso significa?

Que eu poderia mesclar as outras classes a uma?
Que a variável inteira pode não ser um bom preditor?

Este é apenas um exemplo e os valores z reais aqui não são de um problema real, apenas tenho dificuldades com a interpretação deles.

           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
fonte

Respostas:

47

A explicação a seguir não se limita à regressão logística, mas aplica-se igualmente na regressão linear normal e em outros GLMs. Normalmente, Rexclui um nível do categórico e os coeficientes indicam a diferença de cada classe para essa classe de referência (ou às vezes chamada de classe de linha de base) (isso é chamado de codificação fictícia ou tratamento contrastado) R. Veja aqui uma excelente visão geral das diferentes opções de contraste ) Para ver os contrastes atuais R, digite options("contrasts"). Normalmente, Rordena os níveis da variável categórica em ordem alfabética e recebe a primeira como classe de referência. Isso nem sempre é ideal e pode ser alterado digitando (aqui, definiríamos a classe de referência como "c" na nova variável)new.variable <- relevel(old.variable, ref="c")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

rank1rankrank1rankrank1rank2-0,675rank1rank2-3,99-0,675=-4,67rank1rank1. Você também pode ajustar o modelo sem interceptar adicionando - 1à fórmula do modelo para ver todos os coeficientes diretamente:

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

Observe que a interceptação se foi agora e que o coeficiente de rank1é exatamente a interceptação do primeiro modelo. Aqui, o teste de Wald verifica não a diferença entre pares entre os coeficientes, mas a hipótese de que cada coeficiente individual é zero. Novamente, temos evidências de que todo coeficiente de rankdiferença difere de zero. Finalmente, para verificar se a variável inteira rankmelhora o ajuste do modelo, ajustamos um modelo com ( my.mod1) e um sem a variável rank( my.mod2) e realizamos um teste de razão de verossimilhança. Isso testa a hipótese de que todos os coeficientes de ranksão zero:

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

O teste da razão de verossimilhança é altamente significativo e concluímos que a variável rankdeve permanecer no modelo.

Este post também é muito interessante.

COOLSerdash
fonte
Resposta muito informativa! Uma pergunta rápida: e se tivermos apenas a classificação como preditor? Para executar o teste LRT, o nulo seria admit ~ 1vs admit ~ rank - 1?
NULL
1
@ NULL Sim, o nulo vs. admit~rankou admit~rank - 1é equivalente em relação ao ajuste.
COOLSerdash
Ótimo - obrigado! Uma outra pergunta rápida: quando eu estou interessado na realização de rabo de um teste de Wald dos coeficientes da variável categórica (sem comparar com o valor basal - Quero dizer nenhuma interceptação), teria o efeito de outros preditores, tais como gree gpaser afetada por esta falta de inclusão de interceptação?
NULL
Em outras palavras, se eu quiser realizar um teste unilateral de coeficientes do preditor categórico enquanto estiver controlando outras covariáveis, esse é o caminho a seguir? e isso também seria aplicável à regressão linear?
NULL
1
rankrankp
8

z

Então, um coeficiente não significativo significa que você pode mesclar categorias? Não. Primeiro, não significativo significa que não podemos rejeitar a hipótese de que não há diferença, mas isso não significa que essas diferenças não existem. Uma ausência de evidência não é a mesma coisa que evidência de ausência. Segundo, a mesclagem de categorias, especialmente a categoria de referência, altera a interpretação de todos os outros coeficientes. Se isso faz sentido ou não, depende do que essas diferentes classes representam.

Isso significa que toda a variável categórica é um preditor "ruim" (não significativo)? Não, para isso você precisaria realizar um teste simultâneo para todos os termos da CLASSE.

Maarten Buis
fonte