R regresja liniowa zmienna kategorialna „ukryta” wartość


10

To tylko przykład, na który natknąłem się kilka razy, więc nie mam żadnych przykładowych danych. Uruchamianie modelu regresji liniowej w R:

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

x1jest zmienną ciągłą. x2jest kategoryczny i ma trzy wartości, np. „Niska”, „Średnia” i „Wysoka”. Jednak dane wyjściowe podane przez R byłyby mniej więcej takie:

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

Rozumiem, że R wprowadza pewien rodzaj fałszywego kodowania na takich czynnikach ( x2będąc czynnikiem). Zastanawiam się tylko, jak interpretować x2wartość „Wysoka”? Na przykład, jaki wpływ mają „wysokie” x2na zmienną odpowiedzi w podanym tutaj przykładzie?

Widziałem przykłady tego gdzie indziej (np. Tutaj ), ale nie znalazłem wyjaśnienia, które mógłbym zrozumieć.

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
Możesz uzyskać dobrą odpowiedź tutaj, ale zamierzam to oflagować do migracji do stats.SE, ponieważ odpowiedź na to pytanie zasadniczo sprowadza się do zrozumienia, jak działa regresja liniowa.
joran

Tak, to w porządku. Czy lepiej byłoby, gdybym go usunął i sam przeniósł? Czy to jest niepotrzebne?

1
Nie powinieneś nic robić. Oflagowałem go, ale mod może zająć godzinę lub dwie, ponieważ jest to niedziela.
joran

3
Nie podam tutaj odpowiedzi, ponieważ pytanie zostanie przeniesione. Ale możesz spróbować kilku rzeczy, aby zrozumieć, co się dzieje: 1. Uruchom lm ​​(Y ~ x1 + x2 - 1). „-1” usunie przechwycenie. 2. Użyj odpowiedniego, aby zmienić kategorię odniesienia x2.
Manoel Galdino

Odpowiedzi:


14

P: „... jak interpretować wartość x2„ Wysoka ”? Na przykład, jaki wpływ„ Wysoka ”x2 ma na zmienną odpowiedzi w podanym tutaj przykładzie?

Odp .: Bez wątpienia zauważyłeś, że w danych wyjściowych nie ma wzmianki o x2 = „High”. W tej chwili x2High jest wybierane jako „przypadek podstawowy”. To dlatego, że zaoferowałeś zmienną czynnikową z domyślnym kodowaniem poziomów, pomimo uporządkowania, które byłoby naturalnie L / M / H dla ludzkiego umysłu. Ale „H” będący leksykalnie przed literami „L” i „M” w alfabecie, został wybrany przez R jako przypadek podstawowy.

Ponieważ „x2” nie zostało uporządkowane, każdy z podanych kontrastów dotyczył x2 = „High”, a zatem x2 == „Low” oszacowano na -0,78 w stosunku do x2 = „High”. W tej chwili punkt przecięcia jest wartością szacunkową „Y”, gdy x2 = „High” i x1 = 0. Prawdopodobnie chcesz ponownie uruchomić regresję po zmianie kolejności poziomów (ale nie wprowadzając współczynnika uporządkowanego).

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

Wówczas szacunek „Średni” i „Wysoki” będzie bardziej zgodny z oczekiwaniami.

Edycja: Istnieją alternatywne układy kodowania (lub dokładniej układy matrycy modelu). Domyślnym wyborem dla kontrastów w R są „kontrasty leczenia”, które określają jeden poziom czynnika (lub jedną szczególną kombinację poziomów czynników) jako poziom odniesienia i raporty szacowane średnie różnice dla innych poziomów lub kombinacji. Możesz jednak ustawić poziom odniesienia jako ogólną średnią, zmuszając Punkt przecięcia do wartości 0 (niezalecane) lub używając jednego z innych opcji kontrastu:

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

Możesz wybrać różne kontrasty dla różnych czynników, chociaż wydaje się, że nałożyłoby to dodatkowe obciążenie interpretacyjne. S-Plus domyślnie stosuje kontrasty Helmerta, a SAS stosuje kontrasty leczenia, ale wybiera poziom ostatniego czynnika zamiast pierwszego jako poziom odniesienia.


To ma sens. Przypuszczam, że oczywiście x2nie może mieć „bez wartości”, ponieważ musi to być jeden z „High”, „Medium” lub „Low”. Dzięki za odpowiedź.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.