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 *  

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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.