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ć.

ttnphns
źródło
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.

DWin
źródło
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ź.