我使用pROC包进行ROC分析。它给了我敏感性,特异性等。
杂志要求提供的每个统计数据都有95%的置信区间。我知道我可以在epiR包中做到这一点,但我必须给予它一个混淆矩阵。
如何使用pROC提供的阈值来获得混淆矩阵?
样本数据和代码:
library(pROC)
library(tibble)
data<-tribble(
~death, ~score,
0, 0.132,
1, 0.19,
0, 0.03,
1, 0.131,
0, 0.02
)
roc<-roc(data$death, data$score, smoothed = TRUE,
ci=TRUE, ci.alpha=0.95, stratified=FALSE,
plot=TRUE, auc.polygon=TRUE, max.auc.polygon=TRUE, grid=TRUE,
print.auc=TRUE, show.thres=TRUE)
coords(roc, x="best", ret=c("threshold", "specificity", "sensitivity", "accuracy",
"precision", "recall", "tpr", "ppv", "fpr"))
2条答案
按热度按时间eqqqjvef1#
要生成混淆矩阵,首先需要根据阈值分配预测结果(预测死亡,预测存活)。AUC是在数据中每个可能的阈值上计算的。在我的示例中,我任意选择了第二个最低的阈值来生成示例
我建议选择一个阈值来优化敏感性和特异性,例如约登指数。
dy2hfwbg2#
混淆矩阵是一个表,其中|假阳性|负计数。
你可以用coords函数得到它(虽然不是一个表):
您可以使用
ci.coords
函数获得置信区间:您只需要将数据重新组织为您认为合适的表。