Jak mogę powiedzieć R, aby używał określonego poziomu jako odniesienia, jeśli używam binarnych zmiennych objaśniających w regresji?
Po prostu domyślnie używa jakiegoś poziomu.
lm(x ~ y + as.factor(b))
z b {0, 1, 2, 3, 4}
. Powiedzmy, że chcę użyć 3 zamiast zera używanego przez R.
r
regression
linear-regression
categorical-data
dummy-variable
Matt Bannert
źródło
źródło
b
możesz określić kolejność poziomów za pomocąfactor(b, levels = c(3,1,2,4,5))
. Zrób to jednak na etapie przetwarzania danych pozalm()
wywołaniem. Moja odpowiedź poniżej wykorzystujerelevel()
funkcję, dzięki czemu możesz utworzyć współczynnik, a następnie zmienić poziom odniesienia, aby dopasować go do potrzeb.Odpowiedzi:
Zobacz
relevel()
funkcję. Oto przykład:Teraz zmienia współczynnik
b
wDF
przy korzystaniu zrelevel()
funkcji:W modelach oszacowano różne poziomy odniesienia.
źródło
within
, aledf$bR = relevel(df$b, ref=3)
.Inni wspominali o
relevel
poleceniu, które jest najlepszym rozwiązaniem, jeśli chcesz zmienić poziom podstawowy dla wszystkich analiz na swoich danych (lub chcesz żyć ze zmianą danych).Jeśli nie chcesz zmieniać danych (jest to jednorazowa zmiana, ale w przyszłości chcesz ponownie zachować domyślne zachowanie), możesz użyć kombinacji funkcji
C
(uwaga wielkie litery), aby ustawić kontrast icontr.treatments
funkcji z podstawowy argument do wyboru poziomu, który ma być linią bazową.Na przykład:
źródło
relevel()
Komenda jest metodą skróconą do Twojego pytania. To, co robi, to zmiana kolejności współczynnika, tak aby poziom odniesienia był pierwszy. Dlatego zmiana kolejności poziomów współczynników również będzie miała ten sam efekt, ale zapewnia większą kontrolę. Być może chciałeś mieć poziomy 3,4,0,1,2. W tym wypadku...Wolę tę metodę, ponieważ łatwiej jest mi zobaczyć w kodzie nie tylko, jakie było odniesienie, ale także położenie innych wartości (zamiast patrzeć na wyniki).
UWAGA: NIE czyń tego zamówionym czynnikiem. Czynnik o określonej kolejności i zamówiony czynnik to nie to samo.
lm()
możesz zacząć myśleć, że chcesz kontrastów wielomianowych, jeśli to zrobisz.źródło
Wiem, że to stare pytanie, ale miałem podobny problem i stwierdziłem, że:
robi dokładnie to, o co prosiłeś.
źródło
as.factor()
razie potrzeby, na przykład używając...+relevel(as.factor(mycol), ref = "myref")+...
Możesz również ręcznie oznaczyć kolumnę
contrasts
atrybutem, który wydaje się być uwzględniany przez funkcje regresji:źródło
Dla tych, którzy szukają wersji dplyr / tidyverse. Opierając się na rozwiązaniu Gavina Simpsona:
źródło
relevel()
czyforcats::fct_relevel()
relevel
działa tylko z czynnikami.fct_relevel
działa tylko z czynnikami. Nie ma żadnej różnicy między funkcjami poza nazwą AFAIK. Powiedzenie „Jeśli zmienna jest czynnikiem, którego możesz również użyćfct_relevel
” oznacza, że jeśli zmienna nie jest czynnikiem , którego możesz użyćrelevel
, ale to nieprawda.