Як представити результати Lasso за допомогою glmnet?


40

Я хотів би знайти предиктори для безперервної залежної змінної з набору 30 незалежних змінних. Я використовую регресію Лассо, як реалізовано в пакеті glmnet в Р. Ось кілька фіктивних кодів:

# 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 

Мої запитання - як інтерпретувати вихід:

  • Чи правильно сказати, що в кінцевому результаті всі прогнози, які показують коефіцієнт, відмінний від нуля, пов'язані із залежною змінною?

  • Це буде достатньою доповіддю у контексті публікації журналу? Або очікується надання тестових статистичних даних щодо значущості коефіцієнтів? (Контекст - генетика людини)

  • Чи доцільно обчислювати значення p або іншу тестову статистику, щоб стверджувати про значущість? Як це було б можливо? Чи реалізована процедура в R?

  • Чи може простий графік регресії (точки даних, побудовані з лінійним приляганням) для кожного прогноктора, підходящим способом візуалізації цих даних?

  • Можливо, хтось може надати кілька простих прикладів опублікованих статей, що показують використання Лассо в контексті якихось реальних даних і як повідомити про це в журналі?


Чому ви запускаєте glmnet у розділі "підходимо до моделі"? Не могли б ви також використати cvдля кроку прогнозування?
bourbaki4481472

Відповіді:


22

Я розумію, що не можна обов'язково багато говорити про те, які змінні є "важливими" чи мають "реальні" ефекти на основі того, чи є їх коефіцієнти ненульовими. Щоб навести крайній приклад, якщо у вас є два прогнози, які ідеально колінеарні, ласо вибере один з них по суті випадково, щоб отримати повну вагу, а другий отримає нульову вагу.

У цьому документі , до якого входить один з авторів glmnet, представлені деякі аналізи на основі glmnet (див. Особливості: Вступ, розділи 2.3 та 4.3 та таблиці 4 та 5). Поглядаючи на те, схоже, що вони не обчислили P-значення безпосередньо з моделі glmnet. Вони обчислили два різні види P-значень, використовуючи інші методи, але не схоже, що вони повністю довіряють жодному з них.

Я не на 100% впевнений, що ви пропонуєте з точки зору побудови методів, але я думаю, що це звучить розумно.

Сподіваюся, що це допомагає.


1
Привіт, Девіде! Дякую за відповідь. Чи може щось протидіяти використанню LASSO для вибору предикторів з ненульовими коефіцієнтами, а потім використовувати лише ті предиктори в моделі лінійної регресії для отримання p-значень щодо значущості хижаків. Наприклад, цей документ: ncbi.nlm.nih.gov/pmc/articles/PMC3412288
jokel

4
@jokel Я думаю, що те, що ви пропонуєте, є особливим випадком "розслабленого ласо", і це може спрацювати дуже добре для деяких цілей. Я не впевнений, що ви можете довіряти значенням p, отримані в результаті описаної вами процедури, оскільки ваша F-статистика або t-статистика не буде "знати" про крок вибору змінної, який ви зробили, і ваш Коефіцієнт помилок типу I буде завищений. Один із способів подумати над цим: якою буде правильна кількість ступенів свободи для статистики F? Загальна кількість змінних в регресії LASSO? Кількість змінних у вторинній регресії? Щось посеред?
Девід Дж. Харріс

Щоправда - тому, здається, це також не є правильним підходом. Чи маєте ви якусь іншу ідею, як знайти значущі прогнози з 300 незалежних змінних (n >> p, як у наведеному вище прикладі)? Так що врешті-решт я міг би стверджувати: "предиктор X суттєво пов'язаний із залежною змінною Y"?
jokel

Моя відповідь на все, де я не знаю, як робити розрахунки, - це робити рандомізацію. Однією з можливостей буде перекомпонування рядків вашого набору даних (наприклад, з завантажувальним завантаженням) та повторне виконання аналізів LASSO. Чим частіше змінна включається в модель, тим більше ймовірність її важливості. Ще кращий варіант може передбачати вибірку рядків і стовпців, що може допомогти уникнути "маскування" ефектів. Брейман пропонує щось подібне в [цьому pdf] (поблизу рисунка 2) ( fakultet.smu.edu/tfomby/eco5385/lecture/… ).
Девід Дж. Харріс

9

Я просто хотів зазначити, що нещодавно працює робота над розробкою тестової статистики спеціально для LASSO, яка враховує вибір функцій, які виконуються:

Тест на значимість для ласо. Річард Локхарт, Джонатан Тейлор, Райан Дж. Тібшірані, Роберт Тібшірані. http://arxiv.org/abs/1301.7161

Однак я ще не бачив цього, що використовується у прикладних роботах, тоді як завантажувальний процес, безумовно, використовується.


0

Що стосується виведення для LASSO або пружних чистих моделей погляд на CRAN Пакети , selectiveInference і ІРЛП , вони роблять точно , що в той час , беручи до уваги змінний крок вибору!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.