Как проверить статистическую значимость категориальной переменной в линейной регрессии?

18

Если в линейной регрессии у меня есть категориальная переменная ... как я могу узнать статистическую значимость категориальной переменной?

Допустим, фактор имеет 10 уровней ... будет 10 различных результирующих t-значений под зонтиком одной факторной переменной ...X1X1

Мне кажется, что статистическая значимость проверяется для каждого уровня факторной переменной? Нет?

@Macro: Следуя вашему предложению, я построил следующий пример:

Кажется, что x3 полезен и должен быть включен в модель, из сравнения моделей ниже.

Но на самом деле это не так ...

n=100    
x1=1:n
x2=(1:n)^2 
x3=rnorm(n)
ee=rnorm(n)
y=3*x1-2*x2+x3+3+ee
lm1=lm(y~x1+x2+x3)
summary(lm1)

lm2=lm(y~x1+x2) 
summary(lm2)

anova(lm1, lm2)

> anova(lm1, lm2)
Analysis of Variance Table

Model 1: y ~ x1 + x2 + x3
Model 2: y ~ x1 + x2
  Res.Df     RSS Df Sum of Sq      F    Pr(>F)    
1     96  82.782                                  
2     97 146.773 -1    -63.99 74.207 1.401e-13 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
Luna
источник
1
@ Луна, почему это не так? Похоже, вы использовали x3для генерации ys, поэтому он должен быть включен в модель, и значение согласуется с этим выводом. p
Макро
@ Сид - ты прав. Я просто привел игрушечный пример использования anova в целом при сравнении моделей. Так что это не связано с моим первоначальным вопросом.
Луна
@ Макро - ты прав. Теперь я вижу смысл. Спасибо!
Луна
Функция 'Anova' из пакета R 'car' ( pdf ) позволяет проверить общую значимость категориальной переменной. Он работает с множеством различных пакетов и типов регрессии.
SK4ndal

Ответы:

28

Вы правы в том, что эти говорят только о том, значительно ли среднее значение каждого уровня отличается от среднего эталонного уровня. Поэтому они говорят только о парных различиях между уровнями. Проверка значимости категорического предиктора в целом эквивалентна проверке наличия какой-либо неоднородности в средствах уровней предиктора. Когда в модели нет других предикторов, это классическая проблема ANOVA .p

Когда в модели есть другие предикторы. у вас есть два варианта проверки значимости категориального предиктора:

(1) Тест отношения правдоподобия: Предположим, что исход , количественные предикторы X I 1 , . , , , X i p и категориальный предиктор C i с k уровнями. Модель без категориального предиктораYiXi1,...,XipCik

Yi=β0+β1Xi1+...+βpXip+εi

В Rвас может соответствовать этой модели с lm()командой и извлечь логарифмическое правдоподобие с logLikкомандой. Назовите это лог-вероятность . Далее вы можете согласовать модель с категориальным предиктором:L0

Yi=β0+β1Xi1+...+βpXip+j=1k1αjBj+εi

где - фиктивная переменная, равная 1, если D i = j, и 0 в противном случае. К «го уровня является опорный уровень, поэтому есть только к - 1 слагаемых в сумме. будет автоматически делать это фиктивное кодирование для вас, если вы передадите категориальную переменную . Вы можете подобрать эту модель аналогичным образом и извлечь вероятность бревна, как указано выше. Назовите это лог-правдоподобие L 1 . Тогда, при нулевой гипотезе, что D i не имеет никакого эффекта,Bj1Di=j0kk1Rlm()L1Di

λ=2(L1L0)

имеет распределение с k - 1χ2k1 степенями свободы. Таким образом, вы можете вычислить значение, используя in для проверки значимости.p1-pchisq(2*(L1-L0),df=k-1)R

(2) тест:F не вдаваясь в детали (которые похожи на LRT, за исключением того, что используются суммы квадратов, а не логарифмические вероятности), я объясню, как это сделать R. Если вы используете "полную" модель (то есть модель со всеми предикторами, включая категориальный предиктор) при Rиспользовании lm()команды (вызовите это g1) и модель без категориального предиктора (вызовите это g0), то anova(g1,g0)эта гипотеза будет проверена для и вам того же.

Примечание: оба подхода, которые я упомянул здесь, требуют нормальности ошибок. Кроме того, тест отношения правдоподобия является очень общим инструментом, используемым для вложенных сравнений, поэтому я упоминаю об этом здесь (и почему это происходит со мной в первую очередь), хотя тест более знаком при сравнении моделей линейной регрессии.F

макрос
источник
Большое спасибо Макро. Я обнаружил, что мои данные очень ненормальные. График QQ выглядит следующим образом: кривая находится ниже прямой линии 45 градусов. Кривая касается этой прямой. И кривая выглядит как кривая f (x) = - x ^ 2 (по форме). С какой проблемой я сталкиваюсь? И как мне это исправить? Спасибо!
Луна
1
@Luna, Ваши данные очень ненормальные или остатки очень ненормальные? Кроме того, я не думаю, что весь набор точек может находиться под линией 45 градусов.
Макро
о, на самом деле вы правы ... Я просто еще раз взглянул на сюжет QQ. Это не весь набор точек, которые находятся под линией 45 градусов. Это кривая с формой f (x) = - x ^ 2 «касается» линии 45 градусов. Под «касательной» я должен был понимать, что эти точки вокруг «касательной» точки на самом деле находятся выше линии 45 градусов, хотя и очень незначительно. Поэтому, визуально говоря, большинство данных (~ 98%) находятся ниже 45-градусной линии ... что я должен сделать в первую очередь, чтобы решить эту проблему, прежде чем проводить сравнение моделей? Спасибо!
Луна
2
p
1
@ Druss2k, да, это правильно.
Макро