【发布时间】:2019-06-14 09:03:00
【问题描述】:
我有一个包含 60 个变量的 283 个观察值的数据集。我的结果变量是二分类的(诊断),可以是两种疾病中的任何一种。我正在比较两种经常表现出很多重叠的疾病,并且我试图找到可以帮助区分这些疾病的特征。我知道 LASSO 逻辑回归是解决这个问题的最佳方法,但是它不能在不完整的数据集上运行。
所以我用 R 中的 MICE 包估算了我的缺失数据,发现大约 40 次估算对于我拥有的缺失数据量是有好处的。
现在我想对所有 40 个估算数据集执行 lasso 逻辑回归,但不知何故,我被困在需要汇集所有这 40 个数据集的结果的部分。
来自 MICE 的 with() 函数在 .glmnet 上不起作用
# Impute database with missing values using MICE package:
imp<-mice(WMT1, m = 40)
#Fit regular logistic regression on imputed data
imp.fit <- glm.mids(Diagnosis~., data=imp,
family = binomial)
# Pool the results of all the 40 imputed datasets:
summary(pool(imp.fit),2)
使用 glm() 的逻辑回归似乎可以正常工作,但是当我尝试上面的确切方法来执行 Lasso 回归时,我得到:
# First perform cross validation to find optimal lambda value:
CV <- cv.glmnet(Diagnosis~., data = imp,
family = "binomial", alpha = 1, nlambda = 100)
当我尝试执行交叉验证时,我收到以下错误消息:
Error in as.data.frame.default(data) :
cannot coerce class ‘"mids"’ to a data.frame
有人可以帮我解决这个问题吗?
【问题讨论】:
-
我似乎记得
mice要求该方法返回一个协方差矩阵(检查文档以确认);套索没有这个。我想你可以手动遍历估算的数据集,运行套索,然后想办法结合预测等。 -
@user20650,感谢您的回复。通过遍历它们,您的意思是我应该使用函数 complete() 提取所有估算的数据集(在我的情况下为 40 个),然后对已完成的 40 个数据集中的每一个执行套索?当我这样做时,我如何结合预测?我不能只是平均输出?
-
我不知道,但我读过各种组合预测的方法,但我从未做过(或考虑过)这个。 ps 快速搜索到mami.r-forge.r-project.org,它可能会提供一些替代(乍一看,手册中有一个关于套索的部分)。
-
@user20650 我遇到了那个 mami 包,老实说(我对 R 很陌生)我不明白输出:Mami它向我展示了“估计”列表,而不是我期望 LASSO 的输出。你能帮我解决这个问题吗,我现在很困.. :(
-
没人能帮忙吗??
标签: r regression imputation r-mice lasso-regression