Різні способи запису термінів взаємодії в lm?


42

У мене є питання про те, який найкращий спосіб вказати взаємодію в регресійній моделі. Розглянемо наступні дані:

d <- structure(list(r = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
     1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("r1","r2"),
     class = "factor"), s = structure(c(1L, 1L, 1L, 1L, 1L, 
     2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), 
    .Label = c("s1","s2"), class = "factor"), rs = structure(c(1L, 1L,
     1L,1L, 1L,2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L),
    .Label = c("r1s1","r1s2", "r2s1", "r2s2"), class = "factor"), 
     y = c(19.3788027518437, 23.832287726332, 26.2533235300492,
     15.962906892112, 24.2873740664331, 28.5181676764727, 25.2757801195961,
     25.3601044326474, 25.3066440027202, 24.3298865128677, 32.5684219007394,
     31.0048406654209, 31.671238316086, 34.1933764518288, 36.8784821769123,
     41.6691435168277, 40.4669714825801, 39.2664137501106, 39.4884849591932,
     49.247505535468)), .Names = c("r","s", "rs", "y"), 
     row.names = c(NA, -20L), class = "data.frame")

Два еквівалентні способи визначення моделі за допомогою взаємодій:

lm0 <- lm(y ~ r*s, data=d)
lm1 <- lm(y ~ r + s + r:s, data=d)

Моє запитання, чи можу я вказати взаємодію, враховуючи нову змінну (rs) з тими ж рівнями взаємодії:

lm2 <- lm(y ~ r + s + rs, data=d)

Які переваги / недоліки має такий підхід? І чому результати цих двох підходів різні?

summary(lm1)

lm(formula = y ~ r + s + r:s, data = d, x = TRUE)
            coef.est coef.se
(Intercept) 21.94     1.46  
rr2         11.32     2.07  
ss2          3.82     2.07  
rr2:ss2      4.95     2.92  
---
n = 20, k = 4
residual sd = 3.27, R-Squared = 0.87


summary(lm2)

lm(formula = y ~ r + s + rs, data = d, x = TRUE)
            coef.est coef.se
(Intercept) 21.94     1.46  
rr2         11.32     2.07  
ss2          8.76     2.07   # ss2 coef is different from lm1
rsr1s2      -4.95     2.92  
---
n = 20, k = 4
residual sd = 3.27, R-Squared = 0.87

Ви маєте на увазі, що rsвизначено як interaction(r, s)?
chl

Можливо, ви могли б показати нам код, який створив rsr1s2?
jbowman

Коефіцієнт rs був визначений вручну (просто вставити фактори r і s). Дивіться набір даних.
Мануель Рамон

1
Я здогадуюсь, пов'язаний з тим, як у змінних attr(terms(lm1),"factors")attr(terms(lm2),"factors")
релатируются

Відповіді:


8

Результати різні, тому що спосіб lm встановлює модель взаємодії відрізняється від того, як вона налаштована, коли ви її встановлюєте самостійно. Якщо ви подивитеся на залишковий sd, то це те саме, що вказує (не остаточно), що базові моделі однакові, просто виражені (для внутрішніх lm) по-різному.

Якщо ви визначите свою взаємодію як paste(d$s, d$r)замість paste(d$r, d$s)ваших параметрів, оцінки оцінюватимуться знову, цікавими способами.

Зверніть увагу, як у вашому підсумку моделі для lm1 оцінка коефіцієнта для ss2 на 4,94 нижче, ніж у зведенні для lm2, при цьому коефіцієнт rr2: ss2 становить 4,95 (якщо ви друкуєте до 3 знаків після коми, різниця відпадає). Це ще один показник того, що відбулася внутрішня перестановка термінів.

Я не можу припустити жодної переваги зробити це самостійно, але може бути одна із більш складних моделей, де ви не хочете повного терміну взаємодії, а натомість лише деякі терміни в "перехресті" між двома чи більше чинниками.


Єдиною перевагою, яку я бачу у визначенні взаємодій, як у lm2, є те, що легко виконати кілька порівнянь для терміну взаємодії. Я не зовсім розумію, чому отримують різні результати, якщо в принципі здається, що два підходи однакові.
Мануель Рамон

5
x1,x2(1,x1,x2,x1x2)(x1,x2,x1x2,(1x1)(1x2)

Тому, хоча обидва підходи є правильними, чи не так?
Мануель Рамон

Правильно. Математично матриці незалежних змінних у різних складах є лише лінійними перетвореннями один одного, тому оцінки параметрів однієї моделі можна обчислити з оцінок параметрів іншої, якщо відомо, як насправді були створені дві моделі.
jbowman

9

Ви можете зрозуміти цю поведінку краще, якщо подивитеся на матриці моделі.

 model.matrix(lm1 <- lm(y ~ r*s, data=d))
 model.matrix(lm2 <- lm(y ~ r + s + rs, data=d))

Переглядаючи ці матриці, ви можете порівняти сузір’я s2=1з іншими змінними (тобто коли s2=1, які значення приймають інші змінні?). Ви побачите, що ці сузір'я незначно відрізняються, що просто означає, що базова категорія відрізняється. Все інше істотно те саме. Зокрема, зверніть увагу , що в вашому lm1, коефіцієнті при ss2дорівнює коефіцієнти ss2+rsr1s2з lm2, тобто 3,82 = 8.76-4.95, короткі помилок округлення.

Наприклад, виконання наступного коду дає вам точно такий же вихід, як і автоматичне налаштування R:

  d$rs <- relevel(d$rs, "r1s1")
  summary(lm1 <- lm(y~ factor(r) + factor(s) + factor(rs), data=d))

Це також дає швидку відповідь на ваше запитання: насправді єдиною причиною зміни способу встановлення факторів є надання чіткості експозиції. Розглянемо наступний приклад: Припустимо, ви регресуєте заробітну плату на манекені для закінчення середньої школи, взаємодіючи з фактором, який вказує, що ви належите до меншини.

wage=α+β edu+γ eduminority+ϵ

ββ+γ

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.