ROC/AUC 简易试验 最佳截断点 混淆矩阵 敏感度 特异度 约登指数 各个指标置信区间

ROC/AUC 简易试验

最佳截断点 敏感度 特异度 约登 召回率 混淆矩阵
学习链接, 鼠标放这里
常规学习下面这个矩阵
金标准
+-
模型+True Positives(TP)False Positives(FP)
-False Negatives(FN)True Negatives(TN)
PN

正确率 Accuracy = (TP+TN)/(P+N)
错误率 Error Rate = 1 – Accuracy = (FP+FN)/(P+N)
假阳性率 False Positive Rate = FP/N
敏感度=真正阳性正确率 True Positive Rate = Recall = Sensitivity = TP/P
假阴性率 False Negative Rate = FN/P
特异度=真正阴性正确率 True Negative Rate = Specificity = TN/N

#加载包
library(pROC)
#还是用鸢尾花(yuān wěi huā)数据
data(iris)
str(iris)  #查看变量
#去掉其第一个物种分类变量
iris=iris[51:150,  ]
#去掉没用的label
iris$Species=droplevels(iris$Species)
ROC_Result<- roc(iris$Species, iris$Sepal.Width,
                 ci = TRUE)
ROC_Result
plot(ROC_Result)
#平滑ROC绘制
ROC_smooth <- smooth(ROC_Result, method="binormal")
plot(ROC_smooth)
#最佳截断点的确定,各种率,召回率,约登指数,准确率=ROC
coords(ROC_Result, "best")
coords(ROC_Result, "best", ret=c("tpr", "tnr",'precision'))
coords(ROC_Result, "best", ret=c("threshold", "specificity", "1-npv"))

上面的可选参数
#‘arg’ should be one of “threshold”, “specificity”, “sensitivity”, “accuracy”,
#’“tn”, “tp”, “fn”, “fp”, “npv”, “ppv”, “fdr”, “fpr”, “tpr”, “tnr”, “fnr”,
#’ “1-specificity”, “1-sensitivity”, “1-accuracy”, “1-npv”, “1-ppv”,
#’ “precision”, “recall”, “youden”, “closest.topleft”

#绘制混淆矩阵
#提取最佳截断点
a=coords(ROC_Result, "best")[1] [1,1]
#产生新变量,然后根据最佳截断点划分,预测分类变量
iris$prediction=as.character(iris$Species)
#设置方向的话要参考统计描述和上面默认设置的对照
#选择原始数据判断为小的那个为 小于<判断为它; 然后相反大的
iris$prediction[iris$Sepal.Width < a ] <- "versicolor" 
iris$prediction[iris$Sepal.Width > a ] <- "virginica" 
#将真实值和预测值整合到一起
obs_p= data.frame(prob= iris$prediction,obs=iris$Species)
#输出混淆矩阵  case=  +  ; control= -
table(obs_p,dnn=c("预测值","真实值"))
coords(ROC_Result, "best")

在这里插入图片描述

查看各个指标的置信区间

#查看各项置信区间
library(reportROC)
data$Group=factor(iris$Species,levels = c('versicolor','virginica'))
detailROC <-reportROC(gold=iris$Species,predictor = iris$Sepal.Width,)
#例如提取ACC
a=detailROC
paste0('ACC(95%CI):',a['ACC'],'(',paste(a['ACC.low'],a['ACC.up'],sep='-'),')')
detailROC <-reportROC(gold=data$Group,predictor = data$CEA,)
b=detailROC
paste0('ACC(95%CI):',b['ACC'],'(',paste(b['ACC.low'],b['ACC.up'],sep='-'),')')

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值