结合多个插补数据的ROC估计值

时间:2014-01-23 16:05:38

标签: r proc roc

我使用了以下R套餐:micemitoolspROC

基本设计:3种预测指标,在n~1,000范围内,数据丢失率介于5%和70%之间。 1个二进制目标结果变量。

分析目标:确定3个预测因子中的每一个的AUROC。

我使用mice包来估算数据,现在有 m 数据集的估算数据。 使用以下命令,我可以获得每个 m 数据集的AUROC曲线:

fit1<-with(imp2, (roc(target, symptom1, ci=TRUE)))
fit2<-with(imp2, (roc(target, symptom2, ci=TRUE))) 
fit3<-with(imp2, (roc(target, symptom3, ci=TRUE)))

我可以看到每个 m 数据集的估算值没有任何问题。

fit1
fit2
fit3

为了组合参数,我尝试使用mitools

>summary(pool(fit1))
>summary(pool(fit2))
>summary(pool(fit3))

我收到以下错误消息: "Error in pool(fit): Object has no vcov() method"

当组合来自 m 数据集的系数估计值时,我的理解是这是系数的简单平均值。但是,错误术语更复杂。

我的问题:我如何汇总“m”ROC参数估计值(AUROC和95%C.I。或S.E.)以准确估计显着性测试/ 95%置信区间的误差项?

感谢您提前提供任何帮助。

2 个答案:

答案 0 :(得分:0)

我认为以下内容可以合并估算值。

pROC产生AUROC的点估计以及95%的置信区间。

要合并来自 m 插补数据的AUROC,它只是对AUROC进行平均。

为了创建一个合适的标准误差估计,然后是95%C.I.,我将95%C.I.s转换为S.E.使用标准公式(Multiple Imputation FAQ,我计算了估计的内部,之间和总方差。一旦我有标准误差,我将其转换回95%C.I。

如果有人有任何更好的建议,我会非常感激。

答案 1 :(得分:0)

我会使用boot包进行自举,以评估不同的差异来源。例如,由于插补导致的差异,您可以使用以下内容:

bootstrap.imputation <- function(d, i, symptom){
    sampled.data <- d[i,]
    imputed.data <- ... # here the code you use to generate one imputed dataset, but apply it to sampled.data

    auc(roc(imputed.data$target, imputed.data[[symptom]]))
} 

boot.n <- 2000
boot(dataset, bootstrap.imputation, boot.n, "symptom1") # symptom1 is passed with ... to bootstrap.imputation
boot(dataset, bootstrap.imputation, boot.n, "symptom2") 
boot(dataset, bootstrap.imputation, boot.n, "symptom3") 

然后你可以这样做来评估AUC的方差。归咎于您的数据,并再次应用引导程序(或者您可以使用pROC的内置函数)。