R регрессионный выход неверный референт? - PullRequest
1 голос
/ 08 апреля 2019

Я надеюсь, что этот вопрос отличается от предыдущих, но другими словами.Я пытался использовать решения для предыдущих вопросов, но они не помогли мне, так что терпите меня!

Так что у меня возникли некоторые проблемы с выводом моей модели линейной регрессии в R. Я обеспокоенчто модель использует неверную референтную группу как часть термина взаимодействия, который я поместил в модель, и хотя я пытался перераспределить отдельные термины до того, как они помещены в термин взаимодействия, я не получаювыходной я ожидал.

У меня есть набор данных с непрерывными и категориальными переменными.Допустим, что переменные A и B являются непрерывными, а переменные C, D и E являются категориальными (0 = Нет, 1 = Да).Группы референтов для категориальных переменных были установлены на «Нет» (0).Вот пример:

ID      A      B      C      D      E
1       53.6   25     No     Yes    No
2       51.1   12     Yes    No     Yes
3       50.9   NA     Yes    Yes    No
4       49.3   2      No     No     No
5       48.1   NA     No     Yes    No

Я попробовал несколько разных способов получить условия взаимодействия, поэтому мои модели настроены следующим образом:

lm1 <- lm(A ~ C*D + E + B, data=example)
lm2 <- lm(A ~ C:D + E + B, data=example)

Я ожидал получить выходную таблицу со списком коэффициента регрессии, стандартной ошибки и т. Д. Для перехвата, только C, только D, E, B, а затем C * D, с разбивкой на 3 из 4 возможных комбинационных групп этого взаимодействиятермин минус комбинационная группа, которая включала обе референтные группы («Нет» для C и D, «C_No: D_No»).

ОЖИДАЕТСЯ:

Coefficient   Estimate   Std. Error   t value   Pr(>|t|)   
Intercept     90.76369   0.54308      167.127   < 2e-16  ***
C_Yes         -0.28639   0.62044      -0.462    0.644465    
D_Yes         -3.01242   1.14733      -2.626    0.008771 **
E_Yes         0.05865    0.01691      3.468     0.000544 ***
B             -0.20891   0.35982      -0.581    0.561634
C_No:D_Yes    -0.42116   0.47213      2.617     0.01674  *
C_Yes:D_Yes   2.01208    1.43154      1.406     0.160148
C_Yes:D_No    -0.02877   0.65271      -0.345    0.672531 

Для первой модели я получил выход для перехвата, только C, только D, E, B, а затем только одну комбинацию из C * D,

ACTUAL:

Coefficient   Estimate   Std. Error   t value   Pr(>|t|)   
Intercept     90.76369   0.54308      167.127   < 2e-16  ***
C_Yes         -0.28639   0.62044      -0.462    0.644465    
D_Yes         -3.01242   1.14733      -2.626    0.008771 **
E_Yes         0.05865    0.01691      3.468     0.000544 ***
B             -0.20891   0.35982      -0.581    0.561634
C_No:D_Yes    -0.42116   0.47213      2.617     0.01674  *

Для второй модели я получил выход для перехвата E, B, а затем все группы комбинаций C * D.

АКТУАЛЬНО:

Coefficient   Estimate   Std. Error   t value   Pr(>|t|)   
Intercept     90.76369   0.54308      167.127   < 2e-16  ***
E_Yes         0.05865    0.01691      3.468     0.000544 ***
B             -0.20891   0.35982      -0.581    0.561634
C_No:D_Yes    -0.42116   0.47213      2.617     0.01674  *
C_Yes:D_Yes   NA  (all not defined because of singularities)
C_Yes:D_No    -0.02877   0.65271      -0.345    0.672531 

Итак, мои вопросы:

1) Есть ли другой код, который даст мне все, что я хочу, в одной модели вместо двух?

2) Эта модель, как есть, использует C_Yes: D_Yes в качестве референтной группы вместо C_No: D_No, и именно поэтому я получаю ошибку об особенностях?Мои переменные коррелированы, да, но не идеально, поэтому я не ожидал, что мультиколлинеарность будет проблемой.

3) Если референтная группа верна, почему я получаю оценку коэффициента для C_No: D_No (референтная группа)?

1 Ответ

0 голосов
/ 08 апреля 2019

Ваш ожидаемый результат недействителен из-за проблем коллинеарности. Использование

lm(A ~ C * D + E + B)

дает то, что возможно.

Пусть C1 = 1, если C = 1 и C1 = 0 в противном случае. Пусть также C0 = 1-C1. Аналогично для D и E. Затем оценка модели, на которую я только что ссылался, дает вывод, содержащий Intercept, B, C1, D1, E1, C1: D1. Обратите внимание, что это C1, D1, E1, а не «C, D, E один »; последнее само по себе даст коллинеарность.

Мы не можем добавить, скажем, C1: D0, потому что C1: D0 + D1 = C1. Аналогично, C0: D1 + C1 = D1, поэтому C0: D1 не может быть добавлено. А как насчет C0: D0? Мы имеем, что C0: D0 = 1 - C1 - D1 + C1: D1, снова совершенная коллинеарность.

Таким образом, вы можете играть только с перехватом, независимо от того, есть ли у него C1 или C0 (то же самое с D и E), и какой из четырех членов взаимодействия следует включить.


Запуск

lm(A ~ C:D + E + B)

эквивалентен предыдущей модели после некоторых перестановок, за исключением того, что эта принудительно пытается включить все четыре члена взаимодействия. Один из них не определен, так как сумма четырех из них всегда равна 1.


Да, в вашей оценочной модели C_Yes:D_Yes можно назвать контрольной группой. Вы не описали, как вы намеревались присвоить C_No:D_No как единое целое, но, очевидно, это не сработало; вам нужно убедиться, что levels(C) равно c("Yes", "No"), а не c("No", "Yes").

...