在估算数据上生成矩阵以供弹性网使用

Generating matrices on imputed data for use with elastic net

在使用 mice 为我的数据集创建 50 个插补后,我很想使用包 glmnet 到 运行 弹性网。我知道分析估算数据的适当方法是将 withpool 函数应用于 mice(x,...) 为 运行 时创建的 mids 对象,但是 glmnet 要求将其数据作为矩阵提供。 model.matrixbuild.x 都可用于将通用数据框转换为矩阵。 mids 对象可以转换为 data.frame;但是,将可用数据用作单个数据集似乎会破坏整个插补过程。

示例:

df <- mice::nhanes
imp <- mice(df) #impute data
com <- complete(imp, "long", TRUE) #creates data frame
mat <- build.x(bmi ~ age + hyp + chl, com, contrasts = FALSE)

假设插补是准确的,什么是最合适的方法来保留插补并创建用于 glmnet 的相关矩阵?

最简单的方法是使用我的 glmnetUtils package,它为 glmnet 实现了一个 formula/data 框架接口。然后像使用任何其他 R 模型构建函数一样拟合您的弹性网。

install.packages("glmnetUtils")
library(glmnetUtils)

# ... do whatever is required to create an analysis data frame ...

glmnet(bmi ~ age + hyp + chl, data=com)