复杂调查数据中LASSO之后的交叉验证


11

我正在尝试使用具有连续结果的LASSO对一些候选预测变量进行模型选择。目标是选择具有最佳预测性能的最佳模型,通常可以从LASSO获得调整参数的求解路径后,通过K倍交叉验证来完成。这里的问题是数据来自复杂的多阶段调查设计(NHANES),并进行了聚类采样和分层。估计部分并不难,因为glmnetR中可以获取采样权重。但是交叉验证部分对我而言不太清楚,因为现在不再观察到观测值了,该程序如何解释代表有限总体的权重采样?

所以我的问题是:

1)如何对复杂的调查数据进行K折交叉验证以选择最佳调整参数?更具体地说,如何将样本数据适当地划分为训练集和验证集?以及如何定义预测误差的估计?

2)是否有选择最佳调整参数的替代方法?


也许重采样(例如,引导程序)将是更合适的过程,而不是k倍cv?
g3o2

Lumley警告说:“引导程序理论仅针对每个层次中的等概率采样的情况而开发,尚不清楚它在任意概率下的效果如何。” (28)NHANES数据在层内似乎没有等概率抽样。
丹·希克斯

知道OP中的这个小细节会很有趣。看不出多级聚类和分层采样会多么复杂...
g3o2

@Dan Hicks:我认为这并不重要,在重采样时,您可以复制完全相同的样本计划的多个实例。
g3o2

使用此处所述的方法? amstat.tandfonline.com/doi/pdf/10.1080/01621459.1988.10478591(或更新的内容?)如果您想更详细地提出这个想法作为答案,我会提供赏金。
丹·希克斯

Answers:


2

我没有详细的答案,只是我一直想读的一些工作指针:

您可以查看 有关复杂调查LASSO的McConville(2011),以确保您使用LASSO适合您的数据。但是,如果只对变量进行选择,然后对其余变量进行其他拟合,则可能没什么大不了的。

为了使用复杂的调查数据(而非LASSO)进行交叉验证,麦康维尔还引用了Opsomer&Miller(2005)和You(2009)。但是他们的方法似乎使用的是留一法式简历,而不是K折。

通过复杂的调查,留一法应该更容易实现-较少关注如何适当地划分数据。(另一方面,运行时间可能比K折要长。而且,如果您的目标是模型选择,那么对于大样本而言,遗忘的情况可能比K折要差。)


0

OP编辑:不适用于复杂的调查数据。

cv.glmet函数可以帮助您执行所需的交叉验证。lambda.min值是CV误差最小的λ值。lambda.1se表示搜索中的λ值,该值比最佳模型(lambda.min)更简单,但其误差在最佳模型的1个标准误差之内。

  1. 选择可以为Alpha和Lambda选择的值网格

网格<-expand.grid(.alpha =(1:10)* 0.1,.lambda =(1:10)* 0.1)

  1. 设置模型的控制参数。下面的火车控制确实重复cv 10次迭代。仔细研究可用的方法,然后选择适合您当前情况的方法。

cv.glmmod <-cv.glmnet(xTrain,y = yTrain,alpha = grid .alpha .lambda).alpha,>=T,lambda=grid

可以从模型本身访问lambda.min值,如下所示。

cv.glmmod $ lambda.min


1
我知道如何使用glmnet对iid数据进行交叉验证。我在问相关的复杂调查数据。
aenima '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.