禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者!
介绍
pROC::roc
函数能够使用一个指标(predictor)去区分两个或多个分组(response),并计算95%置信区间的原理基于以下几个关键点:
- ROC曲线:ROC曲线是一种图形表示,用于展示分类模型在所有可能的分类阈值下的性能。它通过绘制真正类率(True Positive Rate, TPR)和假正类率(False Positive Rate, FPR)来评估模型的分类能力。
- AUC:曲线下面积(Area Under the Curve, AUC)是一个单一的数字,用于描述ROC曲线下的面积。AUC的值介于0和1之间,其中1表示完美的分类器,0.5表示没有区分能力的分类器(相当于随机猜测)。
- 指标转换:
pROC::roc
函数首先将分组变量(response)中的类别标签转换为二进制形式(例如,"healthy"和"cancer"转换为0和1)。这样,可以使用逻辑回归或其他分类方法来估计预测指标(predictor)的概率。 - 排序和阈值:
pROC::roc
函数根据预测指标的概率对样本进行排序,并计算在每个可能的阈值下模型的TPR和FPR。 - 置信区间:
pROC::roc
函数计算AUC的95%置信区间,这是通过使用非参数方法(如自助法)或正态近似方法来实现的。ci = TRUE
参数指示函数计算这个置信区间。 - 模型拟合:在内部,
pROC::roc
可能使用逻辑回归模型来拟合数据,将预测指标作为预测变量,将分组变量作为响应变量。 - 水平设置:
levels
参数指定了响应变量的类别顺序。这很重要,因为ROC曲线是基于类别的正负性来绘制的。在逻辑回归中,通常将较高级别的类别设置为“成功”或“事件”。 - 统计测试:
pROC::roc
函数还包括对AUC是否统计显著不同于0.5(即随机猜测)的测试,这可以通过pROC::summary.roc
函数获得。
通过这些步骤,pROC::roc
函数提供了一种评估和比较不同预测指标或模型在区分两个或多个分组方面性能的方法。这种方法在医学研究、生物统计学和其他领域中非常常用,尤其是在诊断测试评估和风险预测模型的开发中。
加载R包
knitr::opts_chunk$set(warning = F, message = F)
library(tidyverse)
library(pROC)
library(ggrepel)
导入数据
数据可从以下链接下载(画图所需要的所有数据):
-
百度云盘链接: https://pan.baidu.com/s/1u_p0ebiq9a3X3IITYOBOLA
-
提取码: xshp
data <- read.csv("./inputdata/54-All_Scores.csv", row.names = 1)
head(data)
sample | type | score.meth | score.delfi | score.meth_reg | ens_preds |
---|---|---|---|---|---|
PGDX16571P | healthy | 0.1147934 | 0.2261810 | 0.08935560 | 0.06348261 |
PGDX16601P | cancer | 0.5178563 | 0.9582597 | 0.41919691 | 0.84425808 |
PGDX16605P | cancer |