Jak uruchomić analizę regresji logistycznej porządkowej w R z wartościami liczbowymi / kategorialnymi?

17

Dane podstawowe : mam ~ 1000 osób oznaczonych ocenami: „1”, „dobry”, „2”, „środkowy] lub„ 3 ”[zły] - to wartości, które staram się przewidzieć dla ludzi w przyszłości . Oprócz tego mam pewne informacje demograficzne: płeć (kategorycznie: M / K), wiek (liczbowo: 17-80) i rasę (kategorycznie: czarny / kaukaski / latino).

Mam głównie cztery pytania:

  1. Początkowo próbowałem uruchomić opisany powyżej zestaw danych jako analizę regresji wielokrotnej. Ale ostatnio dowiedziałem się, że ponieważ moja zależna jest czynnikiem uporządkowanym, a nie zmienną ciągłą, powinienem użyć porządkowej regresji logistycznej do czegoś takiego. Początkowo używałem czegoś takiego mod <- lm(assessment ~ age + gender + race, data = dataset), czy ktoś może skierować mnie we właściwym kierunku?

  2. Stamtąd, zakładając, że otrzymuję współczynniki, z którymi czuję się komfortowo, rozumiem, jak podłączyć wyłącznie wartości liczbowe dla x1, x2 itp. - ale jak poradziłbym sobie z rasą, na przykład, gdy istnieje wiele odpowiedzi: czarny / kaukaski / latino? Jeśli więc powie mi, że współczynnik rasy kaukaskiej wynosi 0,289, a ktoś, kogo staram się przewidzieć, jest osobą rasy kaukaskiej, jak mogę podłączyć to z powrotem, ponieważ wartość nie jest liczbą?

  3. Mam też losowe wartości, których brakuje - niektóre dla rasy, niektóre dla płci itp. Czy muszę zrobić coś dodatkowego, aby upewnić się, że nic nie wypacza? (Zauważyłem, kiedy mój zestaw danych ładuje się do R-Studio, kiedy brakujące dane ładowane są jako NA, R mówi coś w stylu (162 observations deleted due to missingness)- ale jeśli zostaną załadowane jako puste, to nic nie robi.)

  4. Zakładając, że wszystko się ułoży i mam nowe dane dotyczące płci, wieku i rasy, które chcę przewidzieć - czy w R istnieje łatwiejszy sposób na sprawdzenie tego, niezależnie od mojej formuły z nowymi współczynnikami, zamiast robić to ręcznie? (Jeśli to pytanie nie jest odpowiednie tutaj, mogę zabrać je z powrotem na forum R.)

Ryan
źródło

Odpowiedzi:

16

Oto kilka informacji, które mogą wskazać właściwy kierunek.

Jeśli chodzi o twoje dane, masz odpowiedź z wieloma kategoriami, a za każdym razem, gdy próbujesz modelować odpowiedź, która jest kategoryczna, masz rację, próbując użyć pewnego rodzaju uogólnionego modelu liniowego (GLM). W twoim przypadku masz dodatkowe informacje, które musisz wziąć pod uwagę w związku z odpowiedzią, a mianowicie, że twoje poziomy odpowiedzi mają naturalny porządek dobry> średni> zły, zauważ, jak to się różni od próby modelowania odpowiedzi, np. Jaki kolor ma balon prawdopodobnie kupi (czerwony / niebieski / zielony), te wartości nie mają naturalnego uporządkowania. Wykonując ten typ modelu z uporządkowaną odpowiedzią, możesz rozważyć zastosowanie modelu proporcjonalnych szans.

http://en.wikipedia.org/wiki/OrDER_logit

Nie korzystałem z niej osobiście, ale polr()funkcja w pakiecie MASS prawdopodobnie się przyda, alternatywnie użyłem lrm()funkcji w pakiecie rms do podobnych analiz i uznałem ją za przydatną. Jeśli załadujesz te pakiety, użyj ?polrlub ?lrmdla informacji o funkcji.

W porządku, na twoje pytania:

  1. Powinno to zostać omówione powyżej, sprawdź te pakiety / funkcje i przeczytaj o porządkowej regresji logistycznej i modelach proporcjonalnych szans

  2. Za każdym razem, gdy masz zmienną towarzyszącą, która jest kategoryczna (Rasa / Płeć / Kolor włosów), chcesz traktować je jako „czynniki” w kodowaniu R, aby odpowiednio je modelować. Ważne jest, aby wiedzieć, jaki jest czynnik i jak są traktowane, ale zasadniczo traktujesz każdą kategorię jako osobny poziom, a następnie modelujesz je w odpowiedni sposób. Po prostu przeczytaj o czynnikach w modelach i powinieneś być w stanie drażnić się o to, co się dzieje. Należy pamiętać, że traktowanie zmiennych kategorialnych jako czynników nie jest unikalne dla modeli glm lub proporcjonalnych modeli szans, ale zazwyczaj jest to, w jaki sposób wszystkie modele radzą sobie ze zmiennymi kategorycznymi. http://www.stat.berkeley.edu/classes/s133/factors.html

  3. Brakujące wartości mogą czasem stanowić problem, ale jeśli przeprowadzasz dość podstawową analizę, prawdopodobnie bezpiecznie jest po prostu usunąć wiersze danych zawierające brakujące wartości (nie zawsze jest to prawdą, ale na podstawie twojego obecnego poziomu doświadczenia zgadywanie, że nie musisz się martwić o szczegóły, kiedy i jak radzić sobie z brakującymi wartościami). W rzeczywistości to właśnie robi R. Jeśli masz dane, których używasz do modelowania, jeśli brakuje informacji w wierszu dla Twojej odpowiedzi lub jakaś zmienna towarzysząca w modelu R po prostu wykluczy te dane (jest to ostrzeżenie, które widzisz). Oczywiście jeśli wykluczasz dużą część swoich danych z powodu braków, wyniki mogą być stronnicze i prawdopodobnie dobrze jest spróbować uzyskać więcej informacji o tym, dlaczego brakuje tak wielu wartości, ale jeśli „ brakuje mi 162 obserwacji w 10 000 wierszach danych. Nie przejmowałbym się tym zbytnio. Możesz znaleźć w Google metody radzenia sobie z brakującymi danymi, jeśli interesuje Cię więcej szczegółów.

  4. Prawie wszystkie obiekty modelu R ( lm, glm, lrm, ...) będzie miał przypisaną predict()funkcję, która pozwoli Ci obliczyć przewidywane wartości bieżącej modelowania zbiorze oraz dodatkowo dla innego zestawu danych, który chcesz przewidzieć rezultatu dla. Po prostu wyszukaj ?predict.glmlub ?predict.lmspróbuj uzyskać więcej informacji na temat dowolnego modelu modelu, z którym chcesz pracować. Jest to bardzo typowa rzecz, którą ludzie chcą robić z modelami, więc bądź pewien, że istnieją pewne wbudowane funkcje i metody, które powinny uczynić to stosunkowo łatwym.

Powodzenia!

Steve Reno
źródło
2
  1. Tak, od logit lub probit można zacząć. Oto samouczek na temat uporządkowanego logit, który używa R. Inne pytania CV mogą prawdopodobnie pomóc ci w jakichkolwiek zaczepkach, na które natkniesz się - wypróbuj tagi „logit”, „probit” i „ordinal”.

  2. kk-1caucasian

  3. Radzenie sobie z brakującymi danymi zależy w dużym stopniu od konkretnego problemu i tak, sposób radzenia sobie z brakującymi danymi może powodować stronniczość. Ten fragment książki ładnie opisuje cztery mechanizmy, które mogą produkować brakujące dane, które powinny pomóc rozważyć potencjalną stronniczość w swoim własnym problemu pod ręką. (W szczególności sekcja 25.1, s. 530.)

  4. Wiele pakietów do modelowania ma jakąś predictfunkcję, a tak naprawdę pierwszy samouczek połączony powyżej zawiera demonstrację.

Sean Easter
źródło
Dzięki wielkie! Szybka obserwacja # 2: To było moje podstawowe założenie - ale jaki jest kod, czy istnieją więcej niż dwie zmienne? Na przykład kaukaski, czarny, latynos.
Ryan
Całkiem mile widziane! W tym przykładzie wybrałbyś jedną kategorię do przechwycenia, powiedzmy latino, i manekiny dla pozostałych dwóch. Wartość 1 dla caucasianmanekina oznacza respondenta rasy białej, podobnie dla blackzmiennej manekina. Wartość 0 dla obu wskazuje respondenta latynoskiego. Ma sens?
Sean Easter
Więc powinienem po prostu zmienić zestaw danych z jednej kolumny z wieloma odpowiedziami („czarna”, „kaukaska” i „latino”) na jedną „czarną” kolumnę z zerami i zerami, jedną kolumnę „kaukaską” z zerami i zerami i jedną kolumna „latino” z 1 i 0?
Ryan
To jedno podejście, które zadziała dobrze. Jedyną różnicą w porównaniu z użyciem dwóch kolumn jest sposób interpretacji przechwytywania. Możesz to zrobić ręcznie, ale uważam, że czynniki w R mogą sobie z tym poradzić. Spróbuj tego - omówione zostaną czynniki z podobnym przykładem. Twoje zdrowie!
Sean Easter
1
Link do samouczka jest uszkodzony. Jeśli ktoś może to naprawić, byłoby świetnie!
Dan Hicks,