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значення "Високий"? Наприклад, який вплив має "Висока" x2на змінну відповідей у ​​наведеному тут прикладі?

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

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, оскільки відповідь на це питання по суті зводиться до розуміння того, як працює лінійна регресія.
joran

Так, це досить справедливо. Було б краще, якби я його видалив і перемістив сам? Або це зайве?

1
Вам не потрібно нічого робити. Я позначив це, але це може зайняти годину чи дві, перш ніж мод потрапить на нього, це неділя і все.
Жоран

3
Я не надам відповіді тут, оскільки це питання буде переміщено. Але ви можете спробувати кілька речей, щоб зрозуміти, що відбувається: 1. запустіть lm (Y ~ x1 + x2 - 1). "-1" видалить перехоплення. 2. використовувати relevel для зміни еталонної категорії x2.
Маноел Галдіно

Відповіді:


14

Q: "... як я інтерпретую значення x2" Високе "? Наприклад, який вплив мають" Високі "х2 на змінну відповідей у ​​наведеному тут прикладі ??

Відповідь: Ви, без сумніву, помітили, що x2 = "High" у виході не згадується. На даний момент x2High обраний як "базовий випадок". Це тому, що ви запропонували факторну змінну з кодуванням за замовчуванням для рівнів, незважаючи на впорядкованість, яка була б більш природною для людського розуму. Але "H" лексично перед алфавітом "L" і "M" було вибрано R як основний регістр.

Оскільки "x2" не було впорядковано, кожен із повідомлених контрастів був відносно x2 = "High" і тому x2 == "Low" оцінювали у -0,78 щодо x2 = "High". На даний момент перехоплення - це орієнтовне значення "Y", коли x2 = "High" і x1 = 0. Ви, ймовірно, хочете повторно запустити свою регресію після зміни порядку впорядкування (але не впорядковуючи коефіцієнт).

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

Тоді ваша оцінка "Середня" та "Висока" буде більше відповідати тому, що ви очікуєте.

Редагувати: Існують альтернативні схеми кодування (або точніше розташування матриці моделі.) Вибір за замовчуванням для контрастів у R - це "контрасти лікування", який визначає один рівень фактора (або одну конкретну комбінацію рівнів факторів) як еталонний рівень та звіти оцінені середні відмінності для інших рівнів або комбінацій. Тим не менш, рівень опорного рівня може бути загальним середнім, примушуючи Intercept до 0 (не рекомендується) або використовуючи один з інших варіантів контрасту:

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

Можна вибирати різні контрасти для різних факторів, хоча це, мабуть, накладає додатковий тягар для інтерпретації. S-Plus використовує контрасти Гельмерта за замовчуванням, а SAS використовує контрасти лікування, але вибирає останній рівень фактора, а не перший в якості еталонного рівня.


Що має сенс. Я думаю, очевидно, що x2не може бути "ніякого значення", оскільки він повинен бути одним з "Високий", "Середній" або "Низький". Дякую за вашу відповідь.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.