我用ROCt包的adjusted.roc()函数做了两个调整了协变量的ROC,并想比较两个ROC是否有差异。我试过用pROC包的roc.test()函数,但报错。
所以大家是怎么比较调整了协变量的adjusted ROC的?
adjusted.ROC_1 <- adjusted.ROC(status="death", variable="prd1_std",confounders=~bs(glmprob, df=3),
data=data)
adjusted.ROC_2 <- adjusted.ROC(status="death", variable="prd2_std",confounders=~bs(glmprob, df=3),
data=data)
roc.test(adjusted.ROC_1,adjusted.ROC_2)
Error in roc.test.default(adjusted.ROC_1, adjusted.ROC_2) :
Missing argument predictor2 with predictor1 as a vector.
stata绘制roc曲线_实例教程:协变量调整后的ROC曲线及AUC的计算
可以借鉴下
https://blog.csdn.net/weixin_39963830/article/details/112215241
比较两个ROC曲线的差异。可以使用pROC包中的roc.test()函数来比较两个ROC曲线的差异。但是,由于roc.test()函数默认比较的是未调整协变量的ROC曲线,因此需要使用adjusted参数将其应用于adjusted ROC曲线的比较。
以下是使用roc.test()函数比较两个adjusted ROC曲线的示例代码:
roc_test <- roc.test(data$response, data$predictor, pair = TRUE, adjusted = TRUE)
adjusted.ROC_1和adjusted.ROC_2实际上不是向量,所以报错
试试使用adjusted.ROC_1$predictions提取adjusted.ROC_1中的预测值向量,然后再使用roc.test()
Copy code
roc.pval(adjusted.ROC_1, adjusted.ROC_2, type = "ROC")
其中,type = "ROC"表示比较的是ROC曲线的差异。输出结果将会给出两个ROC曲线的差异统计量和p值,以及置信区间。
结合个人经验及chatgpt
要比较调整了协变量的ROC曲线是否存在差异,你可以尝试以下方法:
提取adjusted.ROC()
函数输出的预测值(predictor values),然后使用这些预测值作为输入参数来调用roc.test()
函数。
ROC_1 <- adjusted.ROC(status = "death", variable = "prd1_std", confounders = ~bs(glmprob, df=3), data = data)$predictions
ROC_2 <- adjusted.ROC(status = "death", variable = "prd2_std", confounders = ~bs(glmprob, df=3), data = data)$predictions
roc.test(ROC_1, ROC_2)
这样,roc.test()
函数将使用预测值来比较两个ROC曲线之间的差异。
如果你想手动比较两个ROC曲线,你可以绘制它们并进行目测比较。可以使用plot()
函数和lines()
函数绘制ROC曲线,并标记出曲线之间的差异。
# 绘制第一个ROC曲线
plot(adjusted.ROC_1$roc, col = "blue", main = "Adjusted ROC Comparison")
# 绘制第二个ROC曲线
lines(adjusted.ROC_2$roc, col = "red")
# 添加图例
legend("bottomright", legend = c("ROC 1", "ROC 2"), col = c("blue", "red"), lty = 1)
这样,你可以直观地比较两个ROC曲线,并注意曲线之间的差异。
请记住,在比较ROC曲线时,最好使用更多的统计指标来评估其差异,如AUC值(曲线下面积)或其他相关的度量指标。
你可以使用DeLong检验来比较两个调整了协变量的ROC曲线之间的差异。DeLong检验是一种非参数方法,它可以评估两个ROC曲线下面积的差异。在R中,你可以使用pROC包中的roc.test()函数来执行DeLong检验。
在你的代码中,你需要将调整后的ROC曲线作为参数传递给roc.test()函数。这意味着你需要提供两个向量,分别代表两个调整后的ROC曲线。在你的代码中,你只提供了一个参数。
下面是一个示例代码,演示了如何比较两个调整了协变量的ROC曲线的差异
adjusted.ROC_1 <- adjusted.ROC(status="death", variable="prd1_std", confounders=~bs(glmprob, df=3), data=data)
adjusted.ROC_2 <- adjusted.ROC(status="death", variable="prd2_std", confounders=~bs(glmprob, df=3), data=data)
# 提取两个ROC曲线的预测值
predictor_1 <- adjusted.ROC_1$pred
predictor_2 <- adjusted.ROC_2$pred
# 执行DeLong检验
roc.test(predictor_1, predictor_2)