Значение категориального предиктора в логистической регрессии

19

У меня проблемы с интерпретацией значений z для категориальных переменных в логистической регрессии. В приведенном ниже примере у меня есть категориальная переменная с 3 классами, и в соответствии со значением z CLASS2 может быть релевантным, а другие нет.

Но что это значит?

Чтобы я мог объединить другие классы в один?
Что вся переменная не может быть хорошим предиктором?

Это всего лишь пример, и фактические значения z здесь не из реальной проблемы, у меня просто возникают трудности с их интерпретацией.

           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
источник

Ответы:

47

Следующее объяснение не ограничивается логистической регрессией, но в равной степени применимо к нормальной линейной регрессии и другим GLM. Обычно Rисключает один уровень категориального, а коэффициенты обозначают разницу каждого класса с этим эталонным классом (или иногда его называют базовым классом) (это называется фиктивным контрастом кодирования или обработки R, см. Здесь отличный обзор различных вариантов контраста). ). Чтобы увидеть текущие контрасты R, введите options("contrasts"). Обычно Rупорядочивает уровни категориальной переменной в алфавитном порядке и принимает первый в качестве эталонного класса. Это не всегда оптимально и может быть изменено путем ввода (здесь мы бы установили ссылочный класс на «c» в новой переменной)new.variable <- relevel(old.variable, ref="c"), Для каждого коэффициента каждого уровня категориальной переменной выполняется тест Вальда, чтобы проверить, отличается ли парная разница между коэффициентом эталонного класса и другим классом от нуля или нет. Это значения Z и п в таблице регрессии. Если значим только один категориальный класс, это не означает, что вся переменная не имеет смысла и должна быть удалена из модели. Вы можете проверить общий эффект переменной, выполняя тест отношения правдоподобия : подходят две модели, одна из которых и один без переменной и типа anova(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, Вы также можете разместить модель без перехвата, добавив - 1в формулу модели, чтобы увидеть все коэффициенты напрямую:

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

Обратите внимание, что перехват уже исчез, и что коэффициент rank1является точно пересечением первой модели. Здесь тест Вальда проверяет не парную разницу между коэффициентами, а гипотезу о том, что каждый отдельный коэффициент равен нулю. Опять же, у нас есть доказательства того, что каждый коэффициент rankотличается от нуля. Наконец, чтобы проверить, rankулучшает ли целая переменная соответствие модели, мы подбираем одну модель с ( my.mod1), а другую - без переменной rank( my.mod2) и проводим тест отношения правдоподобия. Это проверяет гипотезу о том, что все коэффициенты rankравны нулю:

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

Проверка отношения правдоподобия очень важна, и мы пришли бы к выводу, что переменная rankдолжна оставаться в модели.

Этот пост тоже очень интересный.

COOLSerdash
источник
Очень информативный ответ! Один быстрый вопрос: что, если у нас есть только ранг в качестве предиктора? Для выполнения теста LRT ноль будет admit ~ 1vs admit ~ rank - 1?
NULL
1
@NULL Да, либо ноль против, admit~rankлибо admit~rank - 1, они эквивалентны в отношении соответствия.
COOLSerdash
Большое спасибо! Еще один быстрый вопрос: когда я заинтересован в выполнении один хвост тест Вальда коэффициентов категориальной переменной (без сравнения с исходным уровнем - я имею в виду не перехватывать), будет ли эффект других предсказателей , таких как greи gpaзависеть от этого недостатка включение перехвата?
NULL
Другими словами, если я хочу выполнить односторонний тест на коэффициенты категориального предиктора при контроле других ковариат, это путь? и будет ли это также применимо к линейной регрессии?
NULL
1
rankrankп
8

Z

Значит, незначительный коэффициент означает, что вы можете объединять категории? Нет. Во-первых, незначительный означает, что мы не можем отвергнуть гипотезу о том, что нет никакой разницы, но это не означает, что таких различий не существует. Отсутствие доказательств - это не то же самое, что доказательство отсутствия. Во-вторых, объединение категорий, особенно ссылочной категории, изменяет интерпретацию всех других коэффициентов. Имеет ли это смысл, зависит от того, что обозначают эти разные классы.

Означает ли это, что вся категориальная переменная является «плохим» (несущественным) предиктором? Нет, для этого вам необходимо выполнить одновременный тест для всех терминов CLASS.

Мартен Буис
источник