Wykrywanie znaczących predyktorów spośród wielu zmiennych niezależnych

31

W zbiorze danych dwóch nie pokrywających się populacji (pacjenci i osoby zdrowe, ogółem n=60 ) chciałbym znaleźć (spośród zmiennych niezależnych) znaczące predyktory dla zmiennej zależnej ciągłej. Występuje korelacja między predyktorami. Chcę dowiedzieć się, czy któryś z predyktorów jest powiązany ze zmienną zależną „w rzeczywistości” (zamiast przewidywać zmienną zależną tak dokładnie, jak to możliwe). Ponieważ byłem przytłoczony wieloma możliwymi podejściami, chciałbym zapytać, które podejście jest najbardziej zalecane.300

  • Z mojego rozumienia nie jest zalecane stopniowe włączanie lub wyłączanie predyktorów

  • Np. Uruchom regresję liniową osobno dla każdego predyktora i popraw wartości p dla wielokrotnego porównania przy użyciu FDR (prawdopodobnie bardzo zachowawczy?)

  • Regresja składowych głównych: trudna do interpretacji, ponieważ nie będę w stanie powiedzieć o mocy predykcyjnej poszczególnych predyktorów, ale tylko o składnikach.

  • jakieś inne sugestie?

żart
źródło
Słyszałem o ludziach stosujących regresję L1 do robienia tego typu rzeczy. Ale nie wiem wystarczająco, aby napisać właściwą odpowiedź ...
Król
2
Aby dać najlepsze rekomendacje, pomogłoby nam to dowiedzieć się, jak postępować po zidentyfikowaniu „istotnych predyktorów”. Czy starasz się przewidzieć wynik tak dokładnie, jak to możliwe; znaleźć oszczędny sposób przewidzenia tego (np. używając zestawu do k predyktorów, które to zrobią skutecznie; wyjaśnij, co powoduje wynik „w rzeczywistości”; lub coś innego? Jak duży jest twój zestaw danych?
rolando2
@rolando: dzięki za komentarz! Zaktualizowałem pytanie: moja całkowita liczba obserwacji wynosi n = 60 osób. Moim celem nie jest do przewidzenia zmienną zależną jak najdokładniej, ale raczej wyjaśnić, co powoduje, że wynik „w rzeczywistości” (= nadzieję znaleźć relationsship między zmiennymi, które mogą być potwierdzone w późniejszych studiów / zestawów danych)
Jokel
Wysłałem również pytanie uzupełniające, w tym niektóre dane pozorne. Byłbym bardzo wdzięczny za wszystkie wskazówki. stats.stackexchange.com/questions/34859/…
żart

Odpowiedzi:

30

Poleciłbym wypróbowanie glm z regularyzacją lasso . Dodaje to karę do modelu za liczbę zmiennych, a wraz ze wzrostem kary liczba zmiennych w modelu będzie się zmniejszać.

Powinieneś użyć weryfikacji krzyżowej, aby wybrać wartość parametru kary. Jeśli masz R, sugeruję użycie pakietu glmnet . Użyj alpha=1do regresji Lasso i alpha=0regresji kalenicowej. Ustawienie wartości od 0 do 1 spowoduje użycie kombinacji kar lasso i kalenicy, znanych również jako elastyczna siatka.

Zach
źródło
4
Zgadzam się z Zach. David Cassell i ja napisaliśmy o tym artykuł, koncentrując się na SAS, ale nie do końca. Jest Zatrzymanie skokowo .
Peter Flom - Przywróć Monikę
1
Myślę, że to 0 dla grzbietu i 1 dla lassa
Król
1
@Zach: Dzięki za podpowiedzi. Czy istnieje sposób na uzyskanie statystyki testowej, która pozwoliłaby mi ocenić znaczenie pojedynczych predyktorów. Na koniec chciałbym móc powiedzieć, że „predyktor X jest istotnie powiązany ze zmienną zależną Y”.
Jokel
2
Jeśli chodzi o CI, z podręcznika innego pakietu R implementującego LASSO ( cran.r-project.org/web/packages/penalized/vignettes/… , strona 18): „Pytanie o standardowe błędy regresji jest bardzo naturalne współczynniki lub inne szacowane wielkości. Zasadniczo takie standardowe błędy można łatwo obliczyć, np. za pomocą bootstrapu. Mimo to ten pakiet celowo ich nie podaje. Powodem tego jest to, że standardowe błędy nie są bardzo znaczące dla mocno tendencyjnych oszacowań, takich jak powstają z karnych metod szacowania. ”
miura,
2
@miura Niedawno wprowadzono statystyki testowe właśnie dla tych oryginalnych autorów Lassa: papier i slajdy (łatwiejsze do odczytania)
Cam.Davidson.Pilon 13.04.13
23

Aby rozwinąć odpowiedź Zacha (+1), jeśli używasz metody LASSO w regresji liniowej, próbujesz zminimalizować sumę funkcji kwadratowej i funkcji wartości bezwzględnej, tj .:

minβ(Y-Xβ)T.(Y-Xβ)+ja|βja|

Pierwsza część jest kwadratowa β(złoto poniżej), a druga to krzywa w kształcie kwadratu (zielona poniżej). Czarna linia to linia przecięcia. The LASSO objective function

Minimum leży na krzywej przecięcia, narysowanej tutaj krzywymi konturowymi krzywej kwadratowej i kwadratowej:

Contour curves of LASSO

Możesz zobaczyć, że minimum znajduje się na jednej z osi, dlatego wyeliminowało tę zmienną z regresji.

Możesz sprawdzić mój post na blogu za pomocąL.1 kary za regresję i selekcję zmiennych (inaczej znaną jako regularyzacja Lasso).

Cam.Davidson.Pilon
źródło
8
(+1), ale dla posta na blogu, co jest naprawdę dobre. Byłoby miło, gdybyś nieco rozszerzył tutaj swoją odpowiedź, ponieważ zwiększy to prawdopodobieństwo pozostania dostępnych informacji.
richiemorrisroe
2

Jakie jest Twoje wcześniejsze przekonanie, ile predyktorów może być ważnych? Czy prawdopodobne jest, że większość z nich ma efekt dokładnie zerowy, lub że wszystko wpływa na wynik, niektóre zmienne tylko mniej niż inne?

W jaki sposób stan zdrowia jest powiązany z zadaniem predykcyjnym?

Jeśli uważasz, że tylko kilka zmiennych jest ważnych, możesz wypróbować wcześniej spike i slab (na przykład w pakiecie spikeSlabGAM R) lub L1. Jeśli uważasz, że wszystkie predyktory wpływają na wynik, możesz mieć pecha.

Zasadniczo obowiązują wszystkie zastrzeżenia dotyczące wnioskowania przyczynowego na podstawie danych obserwacyjnych.

scellus
źródło
2

Cokolwiek robisz, warto ustawić przedziały ufności ładowania początkowego w szeregach predyktorów, aby pokazać, że naprawdę możesz to zrobić za pomocą zestawu danych. Wątpię, aby którakolwiek z metod mogła niezawodnie znaleźć „prawdziwe” predyktory.

Frank Harrell
źródło
1

Pamiętam, że regresja Lasso nie działa zbyt dobrze, kiedy np, ale nie jestem pewien. Myślę, że w tym przypadku elastyczna siatka jest bardziej odpowiednia do wyboru zmiennych.

Andy Lu
źródło
Jest to prawda, a dokładniej, gdy n << p, zobacz ten oryginalny elastyczny papier siatkowy: stanford.edu/~hastie/Papers/...
Cam.Davidson.Pilon
1
Gdy n <p, LASSO wybiera najwyżej n zmiennych.
miura