Jak interpretować zmienne wykluczone lub zawarte w modelu lasso?

9

Z innych postów wyciągnąłem wniosek, że nie można przypisywać „ważności” ani „znaczenia” zmiennym predykcyjnym wchodzącym w model lasso, ponieważ obliczanie wartości p lub odchyleń standardowych tych zmiennych jest wciąż w toku.

Czy zgodnie z tym rozumowaniem słuszne jest stwierdzenie, że NIE MOŻNA powiedzieć, że zmienne WYŁĄCZONE z modelu lasso są „nieistotne” lub „nieistotne”?

Jeśli tak, to co właściwie mogę twierdzić o zmiennych, które są albo wykluczone, albo zawarte w modelu lasso? W moim konkretnym przypadku wybrałem parametr strojenia lambda, powtarzając 10-krotną walidację krzyżową 100 razy w celu zmniejszenia losowości i uśrednienia krzywych błędów.

AKTUALIZACJA 1: Postępowałem zgodnie z sugestią poniżej i ponownie uruchomiłem lasso, używając próbek bootstrap. Próbowałem ze 100 próbkami (ta ilość była w stanie zarządzać mocą mojego komputera przez noc) i pojawiły się pewne wzorce. 2 z moich 41 zmiennych weszło do modelu ponad 95% razy, 3 zmienne ponad 90% i 5 zmiennych ponad 85%. Tych 5 zmiennych należy do 9, które weszły do ​​modelu, gdy uruchomiłem go z oryginalną próbką, i były to te, które miały wówczas najwyższe wartości współczynników. Jeśli uruchomię lasso z powiedzmy 1000 próbek ładowania początkowego i te wzorce zostaną zachowane, jaki byłby najlepszy sposób prezentacji moich wyników?

  • Czy 1000 próbek bootstrap brzmi wystarczająco? (Mój rozmiar próbki to 116)

  • Czy powinienem wymienić wszystkie zmienne i częstotliwość ich wprowadzania do modelu, a następnie argumentować, że te, które wchodzą częściej, są bardziej prawdopodobne?

  • Czy to tak daleko, jak tylko mogę z moimi roszczeniami? Ponieważ jest to praca w toku (patrz wyżej), nie mogę użyć wartości odcięcia, prawda?

AKTUALIZACJA 2: Zgodnie z poniższą sugestią obliczyłem: średnio 78% zmiennych w oryginalnym modelu wprowadzono do modeli wygenerowanych dla 100 próbek bootstrap. Z drugiej strony tylko 41% na odwrót. Ma to w dużej mierze związek z faktem, że modele generowane dla próbek bootstrap zwykle zawierały znacznie więcej zmiennych (średnio 17) niż model oryginalny (9).

AKTUALIZACJA3: Jeśli mógłbyś mi pomóc w interpretacji wyników, które otrzymałem z bootstrapowania i symulacji Monte Carlo, proszę spojrzeć na ten drugi post.

Zdziwiony
źródło

Odpowiedzi:

10

Twój wniosek jest poprawny. Pomyśl o dwóch aspektach:

  1. Moc statystyczna do wykrycia efektu. Jeśli moc nie jest bardzo wysoka, można przeoczyć nawet duże rzeczywiste efekty.
  2. Niezawodność: wysokie prawdopodobieństwo znalezienia właściwych (prawdziwych) cech.

Istnieją co najmniej 4 główne kwestie:

  1. Czy metoda jest odtwarzalna przez Ciebie przy użyciu tego samego zestawu danych?
  2. Czy metoda jest odtwarzalna przez inne osoby korzystające z tego samego zestawu danych?
  3. Czy wyniki są odtwarzalne przy użyciu innych zestawów danych?
  4. Czy wynik jest wiarygodny?

Gdy ktoś chce zrobić coś więcej niż przewidywanie, ale wyciągnąć wnioski, które cechy są ważne w przewidywaniu wyniku, 3. i 4. są kluczowe.

Usunąłeś 3. (w tym celu wystarczy 100 ładowań początkowych), ale oprócz ułamków włączenia poszczególnych elementów musimy znać średnią bezwzględną „odległość” między zestawem funkcji ładowania początkowego a pierwotnie wybranym zestawem funkcji. Na przykład, jaka jest średnia liczba funkcji wykrytych z całej próbki, które znaleziono w próbce bootstrap? Jaka jest średnia liczba funkcji wybranych z próbki bootstrap, które znaleziono w oryginalnej analizie? Jaki jest odsetek przypadków, gdy bootstrap znalazł dokładne dopasowanie do oryginalnego zestawu funkcji? Jaka jest proporcja tego, że bootstrap mieścił się w jednej funkcji polegającej na tym, że zgadza się dokładnie z oryginałem? Dwie funkcje?

Nie byłoby właściwe stwierdzenie, że przy podejmowaniu ogólnego wniosku należy zastosować jakąkolwiek granicę.

W odniesieniu do części 4. żadna z tych kwestii nie odnosi się do niezawodności procesu, tj. Jak bliski jest zestaw funkcji do „prawdziwego” zestawu funkcji. Aby temu zaradzić, możesz przeprowadzić badanie symulacyjne Monte-Carlo, w którym weźmiesz oryginalny przykładowy wynik lasso jako „prawdę” i symulujesz nowe wektory odpowiedzi kilkaset razy, stosując pewną założoną strukturę błędu. Dla każdej ponownej symulacji uruchamiasz lasso na oryginalnej macierzy predykcyjnej i nowym wektorze odpowiedzi i określasz, jak blisko wybrany zestaw cech lasso jest zgodny z prawdą, z której symulowałeś. Warunki ponownej symulacji dla całego zestawu predyktorów kandydujących i wykorzystują oszacowania współczynników z początkowo dopasowanego modelu (oraz w przypadku lasso zestawu wybranych predyktorów) jako wygodną „prawdę” do symulacji.

Aby symulować nowe realizacje Y biorąc pod uwagę oryginał X macierz, a teraz prawdziwe współczynniki regresji, można użyć wariancji resztkowej i założyć normalność ze średnią zero, lub aby być jeszcze bardziej empirycznym, zapisać wszystkie resztki z pierwotnego dopasowania i pobrać z nich próbkę ładowania początkowego, aby dodać resztki do znanego predyktora liniowego Xβdla każdej symulacji. Następnie oryginalny proces modelowania jest uruchamiany od zera (w tym wybór optymalnej kary) i opracowywany jest nowy model. Dla każdego z około 100 iteracji porównaj nowy model z prawdziwym modelem, z którego symulujesz.

Ponownie jest to dobra kontrola wiarygodności procesu - zdolność do znalezienia „prawdziwych” funkcji i uzyskania dobrych oszacowań β.

Kiedy Y jest binarny, zamiast zajmować się resztkami, ponowna symulacja obejmuje obliczenie predyktora liniowego Xβ z pierwotnego dopasowania (np. przy użyciu lasso), biorąc transformację logistyczną i generując dla każdej symulacji Monte Carlo nową Ywektor, aby zmieścić na nowo. W R można powiedzieć na przykład

lp <- predict(...) # assuming suitable predict method available, or fitted()
probs <- plogis(lp)
y <- ifelse(runif(n) <= probs, 1, 0)
Frank Harrell
źródło
3
Powinieneś był to powiedzieć z góry, a ja powinienem był zapytać. Przesuwasz kopertę daleko poza zakres obsługiwanych przez dostępne informacje. Pomyśl o tym w ten sposób. Aby uzyskać wynik binarny, aby oszacować tylko punkt przecięcia w binarnym modelu logistycznym, musisz mieć co najmniej 96 obserwacji. Następnie potrzebujesz około 15 zdarzeń na predyktora kandydata (jeśli nie karny). Prawdopodobieństwo walidacji procesu w przyszłym zbiorze danych jest dość niewielkie. Innym sposobem spojrzenia na to jest to, że cała ta dyskusja jest jeszcze ważniejsza (w porównaniu do posiadania większej)N).
Frank Harrell,
1
Nie miałem na myśli bootstrapowania. Mówiłem o tym, czy możesz nauczyć się czegokolwiek z dziesiątek zmiennych kandydujących, gdy masz tylko 32 zdarzenia.
Frank Harrell,
3
Lasso jest bardziej odpowiednie niż większość metod, ale niezawodność spada przy tak małej próbce. Domagasz się oszczędności, używając lasso zamiast kary kwadratowej (grzbiet; L2). Bez wątpienia dostaniesz lepszą dyskryminację predykcyjną, stosując karę kwadratową i nie prosząc o przebłaganie. Lub wykonaj poważne ograniczenie danych (zamaskowane naY), a następnie dopasuj niezenalizowany zwykły model.
Frank Harrell,
1
Wykonaj eksperyment symulacyjny, który zaproponowałem, aby sprawdzić rzeczywistą niezawodność metody w dokładnym ustawieniu.
Frank Harrell,
2
Muszę podpisać się pod tą dyskusją - podstawową odpowiedzią na twoje pytanie jest podstawowe programowanie R oraz spójrz na proste symulacje w biostat.mc . vanderbilt.edu/rms .
Frank Harrell,