使用小鼠,插入符号和glmnet进行汇总回归结果

时间:2018-04-14 21:28:21

标签: r logistic-regression r-caret glmnet r-mice

不确定这是一个统计问题,但我能找到的最接近的类似问题是here,虽然我无法让它适用于我的案例。

我正在尝试开发一个合并的惩罚逻辑回归模型。我使用鼠标创建一个mids对象,然后使用插入符使用弹性网络回归重复交叉验证( glmnet )将模型拟合到每个数据集调整参数。拟合的物体不属于" mira"但我想我通过使用正确的列表项更改对象类来解决这个问题。主要问题是 glmnet 没有关联的 vcov 方法, pool()需要该方法。

我想根据变量的数量和哪些是最佳预测因子的不确定性来使用惩罚回归。我的数据包括4x数字变量和9x不同级别的分类变量,我期望包括交互。

有谁知道我如何能够创建自己的vcov方法或以其他方式解决此问题?我不确定这是否可能。

附上示例数据和代码,注意到我无法共享实际数据。

library(mice)
library(caret)

dat <- as.data.frame(list(time=c(4,3,1,1,2,2,3,5,2,4,5,1,4,3,1,1,2,2,3,5,2,4,5,1),
                      status=c(1,1,1,0,2,2,0,0,NA,1,2,0,1,1,1,NA,2,2,0,0,1,NA,2,0),
                      x=c(0,2,1,1,NA,NA,0,1,1,2,0,1,0,2,1,1,NA,NA,0,1,1,2,0,1),
                      sex=c("M","M","M","M","F","F","F","F","M","F","F","M","F","M","M","M","F","F","M","F","M","F","M","F")))

imp <- mice(dat,m=5, seed=192)

control = trainControl(method = "repeatedcv", 
                          number = 10, 
                          repeats=3, 
                          verboseIter = FALSE)

mod <- list(analyses=vector("list", imp$m))

for(i in 1:imp$m){
  mod$analyses[[i]] <- train(sex ~ .,
                           data = complete(imp, i),
                           method = "glmnet",
                           family="binomial",
                           trControl = control,
                           tuneLength = 10, 
                           metric="Kappa")
}

obj <- as.mira(mod)

obj <- list(call=mod$analyses[[1]]$call, call1=imp$call, nmis=imp$nmis, analyses=mod$analyses)

oldClass(obj) <- "mira"

pool(obj)

产地:

  

pool(obj)中的错误:对象没有vcov()方法。

0 个答案:

没有答案