我有一个数据集,有283个60个变量的观测值。我的结果变量是二分的(诊断),可以是两种疾病中的任何一种。我正在比较两种经常出现重叠的疾病,并试图找到有助于区分这些疾病的特征。我知道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
有人能帮我解决这个问题吗?
一个想法:考虑在40个数据集中的每一个数据集上运行分析。然后,将每个变量中选择的变量存储在矩阵中。然后,设置一些阈值(例如,在>50%的数据集中选择)。