R линейная регрессия категориальной переменной «скрытое» значение

10

Это всего лишь пример, с которым я сталкивался несколько раз, поэтому у меня нет примеров данных. Запуск модели линейной регрессии в R:

a.lm = lm(Y ~ x1 + x2)

x1является непрерывной переменной x2является категориальным и имеет три значения, например, «Низкий», «Средний» и «Высокий». Однако вывод, заданный R, будет выглядеть примерно так:

summary(a.lm)
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)   0.521     0.20       1.446   0.19        
x1            -0.61     0.11       1.451   0.17
x2Low         -0.78     0.22       -2.34   0.005
x2Medium      -0.56     0.45       -2.34   0.005

Я понимаю, что R вводит некое фиктивное кодирование таких факторов ( x2будучи фактором). Мне просто интересно, как мне интерпретировать x2значение "Высокий"? Например, как влияет «High» x2на переменную response в приведенном здесь примере?

Я видел примеры этого в другом месте (например, здесь ), но не нашел объяснения, которое мог бы понять.

ttnphns
источник
3
Вы можете получить хороший ответ здесь, но я собираюсь пометить его для перехода на stats.SE, так как ответ на этот вопрос по сути сводится к пониманию того, как работает линейная регрессия.
Джоран
Да, это достаточно справедливо. Было бы лучше, если бы я удалил его и переместил сам? Или это не нужно?
1
Вам не нужно ничего делать. Я пометил его, но может пройти час или два, прежде чем мод доберется до него, это воскресенье и все такое.
Джоран
3
Я не буду здесь давать ответ, потому что вопрос будет перенесен. Но вы можете попробовать несколько вещей, чтобы понять, что происходит: 1. запустите lm (Y ~ x1 + x2 - 1). «-1» удалит перехват. 2. используйте relevel для изменения ссылочной категории x2.
Маноэль Галдино

Ответы:

14

Q: «... как мне интерпретировать значение x2 как« высокое »? Например, как влияет« x2s »на переменную ответа в приведенном здесь примере?

A: Вы без сомнения заметили, что в выводе нет упоминания о x2 = "High". На данный момент x2High выбран в качестве «базового варианта». Это потому, что вы предложили факторную переменную с кодировкой по умолчанию для уровней, несмотря на порядок, который был бы более естественным для человеческого разума L / M / H. Но «H», будучи лексически перед буквами «L» и «M» в алфавите, было выбрано R в качестве базового варианта.

Поскольку «x2» не был упорядочен, каждый из представленных контрастов относился к x2 = «High», поэтому x2 == «Low» оценивалось в -0,78 относительно x2 = «High». В данный момент Intercept является оценочным значением «Y», когда x2 = «High» и x1 = 0. Возможно, вы захотите повторно запустить регрессию после изменения порядка уровней (но не упорядочения коэффициента).

x2a = factor(x2, levels=c("Low", "Medium", "High"))

Тогда ваши оценки «Средний» и «Высокий» будут в большей степени соответствовать вашим ожиданиям.

Изменить: Есть альтернативные устройства кодирования (или более точно расположение модельной матрицы.) Выбор по умолчанию для контрастов в R является «лечение контрасты», которое задает один уровень фактора (или одну конкретной комбинацию уровней факторов) в качестве опорного уровня и отчетов расчетные средние различия для других уровней или комбинаций. Однако вы можете иметь опорный уровень в качестве общего среднего значения, установив значение «Перехват» равным 0 (не рекомендуется) или воспользовавшись одним из других вариантов контрастности:

?contrasts
?C   # which also means you should _not_ use either "c" or "C" as variable names.

Вы можете выбирать разные контрасты для разных факторов, хотя это может создать дополнительное бремя интерпретации. S-Plus по умолчанию использует контрасты Хельмерта, а SAS использует контрасты лечения, но выбирает последний уровень фактора, а не первый, в качестве контрольного уровня.

Dwin
источник
В этом есть смысл. Я предполагаю, что, очевидно, x2не может иметь «никакой ценности», поскольку оно должно быть одним из «High», «Medium» или «Low». Спасибо за Ваш ответ.