【问题标题】:Is there an R function that performs LASSO regression on multiple imputed datasets and pools results together?是否有一个 R 函数可以对多个估算数据集执行 LASSO 回归并将结果汇​​总在一起?
【发布时间】: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


【解决方案1】:

一个想法: 考虑对 40 个数据集的每一个进行分析。 然后,将每个变量中选择的变量存储在矩阵中。 然后,设置一些阈值(例如,在 >50% 的数据集中选择)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    相关资源
    最近更新 更多