Линейная регрессия с факторами в R

10

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

> data(CO2)
> colnames(CO2)
[1] "Plant"     "Type"      "Treatment" "conc"      "uptake"   
> levels(CO2$Type)
[1] "Quebec"      "Mississippi"
> levels(CO2$Treatment)
[1] "nonchilled" "chilled"   
> lm(uptake ~ Type + Treatment, data = CO2)

Call:
lm(formula = uptake ~ Type + Treatment, data = CO2)

Coefficients:
 (Intercept)   TypeMississippi  Treatmentchilled  
       36.97            -12.66             -6.86  

Я понимаю это TypeMississippiи Treatmentchilledрассматривается как логическое значение: для каждого ряда начальное поглощение равно 36.97, и мы вычитаем, 12.66если он относится к типу Mississippi и 6.86охлажден. У меня проблемы с пониманием что-то вроде этого:

 > lm(uptake ~ Type * Treatment, data = CO2)

 Call:
 lm(formula = uptake ~ Type * Treatment, data = CO2)

 Coefficients:
                 (Intercept)                   TypeMississippi  
                      35.333                            -9.381  
            Treatmentchilled  TypeMississippi:Treatmentchilled  
                      -3.581                            -6.557  

Что значит умножить два фактора вместе в lm?

sylowtheorems
источник

Ответы:

17

Чтобы уточнить ответ @ John: в формулах R у вас есть несколько операторов, которые вы можете применить к терминам: «+» просто добавляет их, «:» означает, что вы добавляете термин (или несколько терминов), которые относятся к их взаимодействию ( см. ниже), «*» означает и то, и другое: добавляются «основные эффекты», а также добавляются термины взаимодействия.

Так что же означает это взаимодействие? Что ж, в случае непрерывных переменных это действительно добавляемый термин, который является просто кратным двум переменным. Если бы вы указали рост и вес в качестве предикторов и использовали бы в out ~ height * weightкачестве формулы, линейная модель, таким образом, будет содержать три «переменные», а именно вес, рост и их произведение (оно также содержит взаимодействие, но здесь это менее интересно).

Хотя я предлагаю иное выше: это работает точно так же для категориальных переменных, но теперь «продукт» применяется к (множеству) фиктивных переменных для каждой категориальной переменной. Предположим, ваш рост и вес являются категориальными, каждая из которых имеет три категории (S (торговый центр), M (edium) и L (arge)). Затем в линейных моделях каждая из них представлена ​​набором из двух фиктивных переменных, которые либо равны 0, либо 1 (существуют другие способы кодирования, но это значение по умолчанию в R и наиболее часто используемое). Допустим, мы используем S в качестве справочной категории для обоих, тогда у нас есть каждый раз два макета height.M и height.L (и аналогично для веса).

Итак, теперь модель out ~ height * weightсодержит 4 манекена + все произведения всех фиктивных комбинаций (здесь я явно не пишу коэффициенты, они подразумеваются):

(intercept) + height.M + height.L + weight.M + weight.L + height.M * weight.M + height.L * weight.M + height.M * weight.L + height.L * weight.L.

В приведенной выше строке '*' теперь снова относится к простому продукту, но это время пустышек, поэтому каждый продукт сам по себе также равен 1 (когда все факторы равны 1) или 0 (когда хотя бы один не равен).

В этом случае 8 «переменных» обеспечивают разные (средние) результаты во всех комбинациях двух переменных: эффект от большого веса теперь больше не одинаков для маленьких людей (для них эффект просто определяется термином weight.L) как для больших людей (здесь эффект есть weight.L + height.L * weight.L)

Ник Саббе
источник
7

Чтобы продолжить ответ Джона, формулы в lm не используют арифметическую нотацию, они используют компактную символическую нотацию для описания линейных моделей (в частности, нотация Уилкинсона-Роджерса, здесь есть хорошее краткое резюме http: //www.physiol .ox.ac.uk / ~ raac / R.shtml ).

По сути, включение A * B в формулу модели означает, что вы подходите A, B и A: B (взаимодействие A и B). Если термин взаимодействия является статистически значимым, это говорит о том, что эффект лечения различен для каждого из типов.

Marius
источник
3

Возможно, поиск «формулы» в помощь будет полезен. Вы не умножаете, вы говорите, что хотите получить два основных эффекта и их взаимодействие.

Джон
источник
1
(+1), хотя мне кажется, что это больше похоже на комментарий.
Дмитрий Челов