Jak zaprezentować wyniki Lasso za pomocą glmnet?

40

Chciałbym znaleźć predyktory dla ciągłej zmiennej zależnej z zestawu 30 zmiennych niezależnych. Korzystam z regresji Lasso zaimplementowanej w pakiecie glmnet w R. Oto kod zastępczy :

# generate a dummy dataset with 30 predictors (10 useful & 20 useless) 
y=rnorm(100)
x1=matrix(rnorm(100*20),100,20)
x2=matrix(y+rnorm(100*10),100,10)
x=cbind(x1,x2)

# use crossvalidation to find the best lambda
library(glmnet)
cv <- cv.glmnet(x,y,alpha=1,nfolds=10)
l <- cv$lambda.min
alpha=1

# fit the model
fits <- glmnet( x, y, family="gaussian", alpha=alpha, nlambda=100)
res <- predict(fits, s=l, type="coefficients")
res 

Moje pytania dotyczą interpretacji wyników:

  • Czy słusznie jest powiedzieć, że w wyniku końcowym wszystkie predyktory, które wykazują współczynnik różny od zera, są powiązane ze zmienną zależną?

  • Czy byłby to wystarczający raport w kontekście publikacji w czasopiśmie? Czy też oczekuje się, że dostarczy statystyki testowe dla znaczenia współczynników? (Kontekstem jest genetyka ludzka)

  • Czy uzasadnione jest obliczenie wartości p lub innej statystyki testowej w celu stwierdzenia istotności? Jak to by było możliwe? Czy procedura jest zaimplementowana w R?

  • Czy prosty wykres regresji (punkty danych wykreślone z dopasowaniem liniowym) dla każdego predyktora byłby odpowiednim sposobem na wizualizację tych danych?

  • Może ktoś może podać kilka prostych przykładów opublikowanych artykułów pokazujących wykorzystanie Lasso w kontekście prawdziwych danych i jak to zgłosić w czasopiśmie?

żart
źródło
Dlaczego uruchamiasz glmnet w sekcji „fit the model”? Nie możesz użyć również cvdo kroku przewidywania?
bourbaki4481472,

Odpowiedzi:

22

Rozumiem, że nie zawsze można powiedzieć wiele o tym, które zmienne są „ważne” lub mają „rzeczywiste” efekty na podstawie tego, czy ich współczynniki są niezerowe. Dla skrajnego przykładu, jeśli masz dwa predyktory, które są idealnie współliniowe, lasso wybierze jeden z nich zasadniczo losowo, aby uzyskać pełną wagę, a drugi otrzyma zerową wagę.

Ten artykuł , który obejmuje jednego z autorów glmnet, przedstawia niektóre analizy oparte na glmnet (patrz zwłaszcza: Wprowadzenie, sekcje 2.3 i 4.3 oraz tabele 4 i 5). Przeglądając, wygląda na to, że nie obliczyli wartości P bezpośrednio z modelu glmnet. Obliczali dwa różne rodzaje wartości P przy użyciu innych metod, ale nie wygląda na to, aby w pełni ufali żadnej z nich.

Nie jestem w 100% pewien, co sugerujesz w kwestii metod kreślenia, ale myślę, że to brzmi rozsądnie.

Mam nadzieję, że to pomaga.

David J. Harris
źródło
1
Cześć David! Dziękuję za odpowiedź. Czy cokolwiek przemawiałoby przeciwko użyciu LASSO do wyboru predyktorów o niezerowych współczynnikach, a następnie użyłby tylko tych predyktorów w modelu regresji liniowej w celu uzyskania wartości p dotyczących istotności wierzycieli Np. Jako ten dokument: ncbi.nlm.nih.gov/pmc/articles/PMC3412288
Jokel
4
@ jokel Myślę, że to, co sugerujesz, to szczególny przypadek „zrelaksowanego lasso” i może on bardzo dobrze działać do niektórych celów. Nie jestem jednak pewien, czy możesz ufać wartościom p, które uzyskasz z opisanej procedury, ponieważ twoja statystyka F lub statystyka t nie „wie” o kroku wyboru zmiennej, który zrobiłeś, i twoim Poziom błędu typu I zostanie zawyżony. Można o tym pomyśleć: jaka byłaby prawidłowa liczba stopni swobody dla statystyki F. Całkowita liczba zmiennych w regresji LASSO? Liczba zmiennych w regresji wtórnej? Coś pomiędzy?
David J. Harris,
To prawda - więc nie wydaje się to również prawidłowym podejściem. Czy miałbyś inny pomysł, jak znaleźć znaczące predyktory spośród 300 zmiennych niezależnych (n >> p jak w powyższym przykładzie)? Więc w końcu mógłbym twierdzić: „predyktor X jest istotnie związany ze zmienną zależną Y”?
żartuje
Moja odpowiedź na wszystko, gdzie nie wiem, jak wykonać obliczenia, polega na losowaniu. Jedną z możliwości byłoby ponowne próbkowanie wierszy zestawu danych (np. Z ładowaniem początkowym) i wielokrotne uruchamianie analiz LASSO. Im częściej zmienna jest uwzględniana w modelu, tym bardziej prawdopodobne jest, że będzie ważna. Jeszcze lepsza opcja może obejmować próbkowanie wierszy i kolumn, co może pomóc uniknąć efektów „maskowania”. Breiman sugeruje coś podobnego w [tym pdf] (w pobliżu Ryc. 2) ( faculty.smu.edu/tfomby/eco5385/lecture/... ).
David J. Harris
9

Chciałem tylko zauważyć, że ostatnio pracowano nad opracowaniem statystyki testowej specjalnie dla LASSO, która uwzględnia przeprowadzany wybór funkcji:

Test istotności dla lasso. Richard Lockhart, Jonathan Taylor, Ryan J. Tibshirani, Robert Tibshirani. http://arxiv.org/abs/1301.7161

Jednak nie widziałem tego używanego w pracy stosowanej, podczas gdy na pewno używa się bootstrapowania.

daknowles
źródło
0

Jeśli chodzi o wnioskowanie dla modeli LASSO lub elastycznych, spójrz na pakiety CRAN selektywnie Inferencje i hdi , robią to dokładnie, biorąc pod uwagę etap wyboru zmiennej!

Tom Wenseleers
źródło