Jak dokonać wyboru podzbioru regresji logistycznej?


47

Dopasowuję dwumianową rodzinę glm w R i mam całą grupę zmiennych objaśniających i muszę znaleźć najlepsze (R-kwadrat jako miara jest w porządku). Krótko po napisaniu skryptu do przechodzenia między losowymi różnymi kombinacjami zmiennych objaśniających, a następnie nagraniu, które działa najlepiej, naprawdę nie wiem, co robić. Wydaje się, że leapsfunkcja przeskakiwania pakietów nie wykonuje regresji logistycznej.

Jakakolwiek pomoc lub sugestie byłyby wielce docenione.


Istnieją funkcje, które wykonują automatyczne wyszukiwanie. Powinieneś spojrzeć na funkcję kroku . Sekcja 5.4 ilustruje ten punkt: data.princeton.edu/R/glms.html
ocram

Przepraszam, ale mój post został edytowany, aby nie zadawał już mojego pytania. W moim modelu regresji logistycznej mam 35 (26 znaczących) zmiennych objaśniających. Potrzebuję najlepszej możliwej kombinacji 8, a nie najlepszego podzbioru, i w żadnym momencie nie byłem zainteresowany podejściem krokowym lub stylem wszystkich podzbiorów. W tym 8. nie ma miejsca na poruszanie się. Po prostu pomyślałem, że ktoś może wiedzieć, jak mogę dopasować wszystkie kombinacje 8 zmiennych objaśniających i może mi powiedzieć, które maksymalizuje prawdopodobieństwo (przepraszam za pierdnięcie w kształcie kwadratu R, ale AIC też nie jest istotne, ponieważ Mam ustaloną liczbę parametrów, 8).
Leendert,

Możesz przywrócić poprzednią wersję swojego posta lub połączyć obie zmiany. Jestem pewien, że @mpiktas miał dobre intencje, próbując poprawić swój wygląd i po prostu nie zauważył parametrów No.
chl

@ Wszyscy: dziękuję bardzo. W końcu użyłem wielu różnych rzeczy w nadziei, że wszystkie dadzą podobne odpowiedzi. I zrobili. Użyłem pakietów BMA, bestglm i glmnet, a także funkcji krokowej. Dopasowane modele do wszystkich z nich, i nie było rozbieżności w tym, co BMA z maxcol = 9 i krok uznano za najlepszy model. Wszyscy eksperci w tej dziedzinie wokół mnie wydawali się bardzo zadowoleni ze zmiennych i uważali, że był on dość postępowy. Dziękuję za cały wkład. Naprawdę wykorzystałem to wszystko.
Leendert

glmulti to również dobry pakiet dla najlepszego wyboru podzbioru, oraz że jedna pozwala określić maksymalną nr zmiennych w modelu, a także pozwala na rozważenie wszystkich możliwych 1st order efektów interakcji
Tom Wenseleers

Odpowiedzi:


28

Metody krokowe i „wszystkie podzbiory” są ogólnie złe. Zobacz Zatrzymywanie się krok po kroku: dlaczego metody krokowe są złe i czego powinieneś użyć David Cassell i ja (korzystaliśmy z SAS, ale lekcja ma zastosowanie) lub Strategie modelowania regresji Franka Harrella. Jeśli potrzebujesz metody automatycznej, polecam LASSO lub LAR. Pakiet lasso dla regresji logistycznej jest dostępny tutaj , kolejny ciekawy artykuł jest na powtórzyć lasso za logistyczne


6
(+1) W przypadku pakietów R istnieje również glmnet (implementacja z algo współrzędnych zejścia, Friedman i kol.) I ukarany (pozwala zachować niektóre warianty bez zdecentralizowania). Warto zauważyć, że F. Harrell zapewnia karane oszacowanie ML dla GLM (patrz lrmlub jego podręcznik RMS w celu uzyskania dalszych informacji).
chl

(+1) Fajny artykuł, wydaje się, że muszę zacząć wykraczać daleko poza stwierdzenia autora w pytaniu (nie po raz pierwszy tego nie zrobiłem). @chl (+1) również doskonałe alternatywne sugestie.
Dmitrij Celov

@chl: +1 dla glmnet, to świetny pakiet.
Zach

1
@chl Thanks! Jednym z problemów z R jest śledzenie pakietów (jest ich tak wiele!) I które są najlepsze. Widoki zadań pomagają
Peter Flom - Przywróć Monikę

2
Jeśli twoje zmienne są współliniowe, najlepiej użyć elastycznej siatki za pomocą glmnet, powiedzmy z alfa = 0,5, ponieważ LASSO ma tendencję do losowego wyrzucania wysoce współliniowych zmiennych z modelu
Tom Wenseleers

15

Przede wszystkim nie jest odpowiednim miernikiem dobroci dopasowania dla regresji logistycznej, jako kryterium alternatywnym należy przyjąć kryterium informacyjne lub . A I C B I CR2AICBIC

Regresję logistyczną szacuje się metodą największej wiarygodności, więc leapsnie stosuje się jej bezpośrednio tutaj. Przedłużenie leapsdo glm()funkcji jest bestglm pakiet (jak zwykle zalecenie następujące skonsultować winiet tam).

Być może zainteresuje Cię także artykuł Davida W. Hosmera, Borko Jovanovica i Stanleya Lemeshowa Najlepsze podzbiory Regresja logistyczna // Biometrics Vol. 45, nr 4 (grudzień 1989 r.), S. 1265–1270 (zwykle dostępne za pośrednictwem sieci uniwersyteckich).


2
Chociaż twój komentarz o tym, że jest gorszy niż jest ogólnie przydatny, w rzeczywistości nie robi różnicy, chyba że porównujesz modele o różnych rozmiarach. PO wyraźnie stwierdza, że ​​są zainteresowani tylko modelami zmiennymi, więc i powrócą do wyboru modelu o najwyższym prawdopodobieństwie. Jest to równoważne z dopasowaniem . B I C , A I C 8 B I C A I C R 2R2BIC,AIC8BICAICR2
prawdopodobieństwo prawdopodobieństwa

Dzięki za uwagę, ale komentarze chl poniżej wyjaśniają, dlaczego ustalona liczba zmiennych objaśniających jest niebezpieczna. Nawiasem mówiąc, odpowiedź pojawiła się wcześniej niż komentarz dotyczący ograniczenia (aż?) Zmiennych;)8
Dmitrij Celov

wszelkie odniesienia akademickie dlaR2R2 is not an appropriate goodness-of-fit measure for logistic regression take an information criterion AICAIC or BICBIC
SIslam

uwaga na temat bestglm, używa leapsna zapleczu do obliczeń! Więc to się nie powiedzie, jeśli w zestawie danych jest NA i pojawi się komunikat typu: Error in leaps.setup(x, y, wt = weights, nbest = nbest, nvmax = nvmax, : NA/NaN/Inf in foreign function call (arg 3) Ale co ciekawe, mój zestaw danych nie ma NA, a raczej zer, jednak funkcja narzeka i podaje dokładnie powyższy komunikat !!
SIslam,

glmnet to również jeden dobry, a także może robić modele uwzględniające wszystkie możliwe 1st order efektów interakcji
Tom Wenseleers

6

Jednym z pomysłów byłoby użycie losowego lasu, a następnie użycie uzyskanych zmiennych o znaczeniu ważności, aby wybrać najlepsze 8 zmiennych. Innym pomysłem byłoby użycie pakietu „boruta”, aby powtórzyć ten proces kilkaset razy, aby znaleźć 8 zmiennych, które są niezmiennie najważniejsze dla modelu.


@Zach Czy sugerujesz, aby polegać na RF, aby dokonać wyboru funkcji, a następnie zastosować GLM - w tym przypadku istnieje ryzyko nadmiernego dopasowania lub nadmiernego optymizmu - lub użyć RF (ze standardowymi miarami o różnym znaczeniu lub odpowiedni wybór) jako samodzielne narzędzie?
chl

@chl: Sugerowałem użycie RF do wyboru funkcji, a następnie zastosować GLM. Zgadzam się, że istnieje ryzyko nadmiernego dopasowania, ale OP powiedział, że potrzebuje dokładnie 8 zmiennych.
Zach

1
@Zach „dokładnie 8 zmiennych” ... Następnie nieco łagodnie progujesz potencjalne zmienne będące przedmiotem zainteresowania w oparciu o miarę o zmiennej wartości (która dzięki temu, że opiera się na permutacji i podwójnym ponownym próbkowaniu, powinna być wolna od uprzedzeń) i następnie ponownie wstaw je do GLM. IMHO, łamiesz kontrolę nad nadmiernym dopasowaniem wywieranym przez pakowanie. Jest to również opisane w ESLII z Hastie i in .: wybór cech, jeśli taki istnieje, musi być uwzględniony w procedurze weryfikacji krzyżowej (gdzie weryfikacja krzyżowa obejmuje ocenę wydajności modelu).
chl

@chl: Czy pakiet r „boruta” nie sprawdza się, uruchamiając losowy las kilka razy? Czy w zasadzie mówisz, że potrzebujemy „meta-cross-validation”, gdzie dokonujesz wyboru zmiennych i dopasowujesz swój model do losowych podzbiorów danych?
Zach

3
@Zach Chodziło mi o to, że worki, a zwłaszcza RF, zapobiegają nadmiernemu dopasowaniu (do pewnego stopnia), pod warunkiem, że pozostaniesz w tym samym łańcuchu narzędzi. Jeśli użyjesz wyników z RF, a następnie zobaczysz, jak inny model poradziłby sobie z tymi samymi danymi, przerwałeś pętlę CV. Ale dlaczego nie użyć bezpośrednio RF do klasyfikacji? Innym rozwiązaniem byłoby użycie RF na próbce treningowej, a następnie zastosowanie GLM na próbce wstrzymanej (która mogłaby również zostać poddana walidacji krzyżowej).
chl

0

stats::stepFunkcja lub bardziej ogólne MASS::stepAICwsparcie funkcja lm, glm(regresja logistyczna tj) i aovrodziny modeli.

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.