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, R
exclui 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, R
ordena 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
rank1
rank
rank1
rank
rank1
rank2
- 0,675rank1
rank2
- 3,99 - 0,675 = - 4,67rank1
rank1
. 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 rank
diferença difere de zero. Finalmente, para verificar se a variável inteira rank
melhora 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 rank
sã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 rank
deve permanecer no modelo.
Este post também é muito interessante.
admit ~ 1
vsadmit ~ rank - 1
?admit~rank
ouadmit~rank - 1
é equivalente em relação ao ajuste.gre
egpa
ser afetada por esta falta de inclusão de interceptação?rank
rank
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.
fonte