R语言计算诊断指标:Cutoff值、约登指数、敏感度、特异度等
R语言计算诊断指标:Cutoff值、约登指数、敏感度、特异度等
本文将介绍如何使用R语言计算常见的诊断指标,包括:
- Cutoff值: 最佳分类阈值
- 约登指数(Youden index): 敏感度和特异度之和减去1
- 临界值: ROC曲线上的分类阈值
- 敏感度(Sensitivity): 真阳性率
- 特异度(Specificity): 真阴性率
- 准确度(Accuracy): 正确预测的比例
- LRP(阳性似然比): 阳性预测值
- LRN(阴性似然比): 阴性预测值
- 诊断比值比(Diagnostic Odds Ratio,DOR): LRP与LRN的比值
- 阳性预测值(Positive Predictive Value,PPV): 真阳性率 / (真阳性率 + 假阳性率)
- 阴性预测值(Negative Predictive Value,NPV): 真阴性率 / (真阴性率 + 假阴性率)
我们将使用pROC包中的roc函数和performance函数来计算这些指标,以下代码示例基于一个名为train的训练数据集和一个名为test的测试数据集:
# 加载pROC包
library(pROC)
# 训练模型(以逻辑回归为例)
f1 <- lrm(分组 ~ 指压诱发实验阳性 + Ba + 小漏斗 + 肛提肌损伤,
x=T, y=T,
data = train)
# 在测试集上预测概率
test_prob <- predict(f1, newdata = test, type = 'fitted')
# 创建ROC对象
rocobj <- roc(test$分组, test_prob)
1. 计算Cutoff值
可以使用coords函数计算最佳的Cutoff值,该函数会返回最佳的Cutoff值和对应的最大Youden指数:
coords(rocobj, 'best', best.method = 'youden')
2. 计算约登指数
同样可以使用coords函数计算约登指数:
coords(rocobj, 'best', best.method = 'youden')$youden
3. 计算临界值
临界值是指在ROC曲线上,真阳性率等于真阴性率时对应的分类阈值。可以使用coords函数计算临界值:
coords(rocobj, 'best', best.method = 'closest.topleft')$threshold
4. 计算敏感度、特异度、准确度
可以使用performance函数计算敏感度、特异度、准确度:
perf <- performance(rocobj, measure = c('sens', 'spec', 'acc'))
sens <- perf@y.values[[1]]
spec <- perf@y.values[[2]]
acc <- perf@y.values[[3]]
5. 计算LRP、LRN
LRP和LRN分别表示阳性似然比(Positive Likelihood Ratio)和阴性似然比(Negative Likelihood Ratio),可以使用以下公式计算:
LRP = sens / (1 - spec)
LRN = (1 - sens) / spec
6. 计算诊断比值比、阳性预测值、阴性预测值
可以使用以下公式计算诊断比值比、阳性预测值、阴性预测值:
DOR = LRP / LRN
PPV = sens * prevalence / (sens * prevalence + (1 - spec) * (1 - prevalence))
NPV = spec * (1 - prevalence) / ((1 - sens) * prevalence + spec * (1 - prevalence))
其中,prevalence表示测试集中正样本的比例。
通过以上代码示例,您可以方便地使用R语言计算各种诊断指标,并在实际项目中应用它们来评估模型的性能。
注意: 上述代码示例仅供参考,您需要根据实际情况进行修改和调整。
如果您需要了解更深入的诊断指标知识,可以参考相关文献或咨询专业人士。
原文地址: https://www.cveoy.top/t/topic/ooo5 著作权归作者所有。请勿转载和采集!