如何使用 glmnet 呈现 Lasso 的结果?

机器算法验证 r 多重回归 套索 网络 介绍
2022-02-14 14:55:20

我想从一组 30 个自变量中找到一个连续因变量的预测变量。我正在使用 R 中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 中实施了程序?

  • 每个预测变量的简单回归图(使用线性拟合绘制的数据点)是否适合可视化这些数据?

  • 也许有人可以提供一些已发表文章的简单示例,展示在一些真实数据的背景下使用套索以及如何在期刊中报告这一点?

3个回答

我的理解是,根据它们的系数是否非零,您不一定能说出哪些变量是“重要的”或具有“实际”影响的。举一个极端的例子,如果你有两个完全共线的预测变量,套索将基本上随机选择其中一个以获得全部权重,而另一个将获得零权重。

本文包括 glmnet 的一位作者,介绍了一些基于 glmnet 的分析(特别参见:引言,第 2.3 和 4.3 节,以及表 4 和表 5)。浏览了一下,看起来他们没有直接从 glmnet 模型计算 P 值。他们确实使用其他方法计算了两种不同的 P 值,但看起来他们并不完全信任其中任何一种。

我不是 100% 确定您在绘图方法方面的建议,但我认为这听起来很合理。

希望有帮助。

我只是想指出,最近有一项工作试图专门为 LASSO 开发一个测试统计,其中考虑了正在执行的特征选择:

套索的显着性检验。理查德·洛克哈特、乔纳森·泰勒、瑞安·J·蒂布希拉尼、罗伯特·蒂布希拉尼。 http://arxiv.org/abs/1301.7161

然而,我还没有看到它在应用工作中使用过,而引导程序肯定会被使用。

关于 LASSO 或弹性网络模型的推断,请查看 CRAN 包 selectInferencehdi 它们正是这样做的,同时考虑了变量选择步骤!