Как представить результаты Лассо, используя glmnet?


40

Я хотел бы найти предикторы для непрерывной зависимой переменной из набора из 30 независимых переменных. Я использую регрессию Лассо, как это реализовано в пакете glmnet в R. Вот некоторый фиктивный код:

# 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
шутка

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

Верно - так что это тоже не подходит. У вас есть какая-нибудь другая идея, как найти значимые предикторы из 300 независимых переменных (n >> p, как в приведенном выше примере)? Так что в итоге я смог бы утверждать: «предиктор X значительно связан с зависимой переменной Y»?
Джокель

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

9

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

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

Однако я еще не видел, чтобы это использовалось в прикладной работе, тогда как начальная загрузка, безусловно, используется.


0

Что касается логического вывода для моделей LASSO или эластичных сетей, обратите внимание на пакеты CRAN селективный вывод и ИРЧП , они делают точно , что в то время , принимая во внимание переменный шаг выбора!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.