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 в приведенном здесь примере?

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

r  regression  categorical-data  regression-coefficients  categorical-encoding  machine-learning  random-forest  anova  spss  r  self-study  bootstrap  monte-carlo  r  multiple-regression  partitioning  neural-networks  normalization  machine-learning  svm  kernel-trick  self-study  survival  cox-model  repeated-measures  survey  likert  correlation  variance  sampling  meta-analysis  anova  independence  sample  assumptions  bayesian  covariance  r  regression  time-series  mathematical-statistics  graphical-model  machine-learning  linear-model  kernel-trick  linear-algebra  self-study  moments  function  correlation  spss  probability  confidence-interval  sampling  mean  population  r  generalized-linear-model  prediction  offset  data-visualization  clustering  sas  cart  binning  sas  logistic  causality  regression  self-study  standard-error  r  distributions  r  regression  time-series  multiple-regression  python  chi-squared  independence  sample  clustering  data-mining  rapidminer  probability  stochastic-processes  clustering  binary-data  dimensionality-reduction  svd  correspondence-analysis  data-visualization  excel  c#  hypothesis-testing  econometrics  survey  rating  composite  regression  least-squares  mcmc  markov-process  kullback-leibler  convergence  predictive-models  r  regression  anova  confidence-interval  survival  cox-model  hazard  normal-distribution  autoregressive  mixed-model  r  mixed-model  sas  hypothesis-testing  mediation  interaction 

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 использует контрасты лечения, но выбирает последний уровень фактора, а не первый, в качестве контрольного уровня.


В этом есть смысл. Я предполагаю, что, очевидно, x2не может иметь «никакой ценности», поскольку оно должно быть одним из «High», «Medium» или «Low». Спасибо за Ваш ответ.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.