使用MICE进行多次插补后的单个AUC

时间:2018-11-09 10:09:51

标签: r auc

在使用MICE插补后,我有一个关于为数据集中的每个人计算AUC的问题。

我知道如何在完整的案例数据集中做到这一点。我做了如下:

id <- c(1,2,3,4,5,6,7,8,9,10)
measure_1 <- c(60,80,90,55,60,61,77,67,88,90)
measure_2 <- c(55,88,88,55,70,61,80,66,65,92)
measure_3 <- c(62,88,85,56,68,62,89,62,70,99)
measure_4 <- c(62,90,83,54,65,62,91,59,67,96)
dat <- data.frame(id, measure_1, measure_2, measure_3, measure_4)
dat
x <- c(0,7,14,21) # number of days

library(Bolstad2)
f <- function(a){
   Patient <- dat[a,]
   vector_patient <- c(Patient[2:5])
   AUCpatient <- sintegral(x,vector_patient)$int
   return(AUCpatient)
}

vector <- c(1:10)
listAUC <- lapply(vector, f)
vector_AUC <- unlist(listAUC, use.names=FALSE)
vector_AUC

这为我提供了适用于所有患者的所有AUC的载体。如果需要,可以将此向量添加到我的数据集中。

但是现在我有一个问题:我的数据集中有缺失。我的数据集可以使用以下代码获取:

id <- c(1,2,3,4,5,6,7,8,9,10)
measure1 <- c(60,NA,90,55,60,61,77,67,88,90)
measure2 <- c(55,NA,NA,55,70,NA,80,66,65,92)
measure3 <- c(62,88,85,NA,68,62,89,62,70,99)
measure4 <- c(62,90,83,54,NA,62,NA,59,67,96)
datmis <- data.frame(id, measure1, measure2, measure3, measure4)
datmis

我想使用MICE估算此数据集。

library(mice)
imp <- mice(datmis, maxit = 0)
meth <- imp$method
pred <- imp$predictorMatrix
imp <- mice(datmis, method = meth, predictorMatrix = pred, seed = 2018, maxit = 10, m = 5)

因此,现在我可以估算一切了。我想为每个估算数据集中的每个人创建AUC。然后,我想汇总结果,为每个人创建一个单独的AUC。但是,使用上一个示例中的公式create不再起作用。有没有人可以帮助我?

1 个答案:

答案 0 :(得分:0)

这是一种方法。估算后,您可以

  1. 遍历每个估算数据集
  2. 用插补数据计算AUC
  3. 使用Rubin规则进行池估计

下面的代码覆盖了前2点

x <- c(0,7,14,21) # number of days
library("tidyverse")
library("MESS")
res <- lapply(1:5, function(i) { 
    complete(imp, i) %>% 
    group_by(id) %>% 
    mutate(AUC=MESS::auc(x, c(measure1, measure2, measure3, measure4)))})

我正在使用auc中的MESS函数,因为它既快速又灵活,但是您可以用您的版本替换它。

这将产生一个5个数据帧的列表,这些数据帧可用于汇总估计(上面列表的第3部分)。

library("mitools")
with(imputationList(res), lm(AUC ~ 1)) %>% pool() %>% summary()

这产生

            estimate std.error statistic       df      p.value
(Intercept)  1512.77  81.62359  18.53349 7.389246 1.829668e-07

关于插补的另一条评论:确定要使用id作为数字变量来预测测度。这样会为缺失的变量生成类似回归的预测变量,这似乎是不现实的。