roc图 r语言_R语言pROC包绘制ROC曲线
如果没有时间精力学习代码,推荐了解:零代码数据挖掘课程
pROC package
以下是本包中常用的一些缩写
ROC: receiver operating characteristic,ROC曲线
AUC: area under the ROC curve,曲线下面积
pAUC: partial area under the ROC curve 部分曲线下面积
CI: confidence interval 可信区间
SP: specificity 特异度
SE: sensitivity 灵敏度
require(pROC)
data(aSAH)
if(!require(DT)) install.packages(DT)
DT::datatable(aSAH)
aSAH[1:5,1:5]
image.png
roc函数建立roc曲线
支持在管道中运行
参数分别为data, event, predict marker
library(dplyr)
aSAH %>%
filter(gender == "Female") %>%
roc(outcome, s100b)
Call:
roc.data.frame(data = ., response = outcome, predictor = s100b)
Data: s100b in 50 controls (outcome Good) < 21 cases (outcome Poor).
Area under the curve: 0.72
coords函数中筛选有效的的坐标
transpose参数指返回值的格式,FALSE 为row
这样筛选出了敏感度和特异度>0.6的坐标
library(dplyr)
aSAH %>%
filter(gender == "Female") %>%
roc(outcome, s100b) %>%
coords(transpose=FALSE) %>%
filter(sensitivity > 0.6,
specificity > 0.6)
threshold specificity sensitivity
1 0.155 0.68 0.6666667
2 0.165 0.74 0.6666667
3 0.175 0.76 0.6666667
4 0.185 0.78 0.6666667
5 0.215 0.80 0.6666667
6 0.245 0.82 0.6666667
7 0.255 0.82 0.6190476
建立roc 对象的方法
# Build a ROC object and compute the AUC
roc(aSAH$outcome, aSAH$s100b)
roc(outcome ~ s100b, aSAH)
建立光滑曲线
# Smooth ROC curve
roc(outcome ~ s100b, aSAH, smooth=TRUE)
Call:
roc.formula(formula = outcome ~ s100b, data = aSAH, smooth = TRUE)
Data: s100b in 72 controls (outcome Good) < 41 cases (outcome Poor).
Smoothing: binormal
Area under the curve: 0.74
可信区间与绘图
# more options, CI and plotting
roc1
aSAH$s100b, percent=TRUE,
# arguments for auc
partial.auc=c(100, 90), partial.auc.correct=TRUE,
partial.auc.focus="sens",
# arguments for ci
ci=TRUE, boot.n=100, ci.alpha=0.9, stratified=FALSE,
# arguments for plot
plot=TRUE, auc.polygon=TRUE, max.auc.polygon=TRUE, grid=TRUE,
print.auc=TRUE, show.thres=TRUE)
## 在原有图形上继续绘制
roc2
plot=TRUE, add=TRUE, percent=roc1$percent)
image.png
找出感兴趣的坐标
## Coordinates of the curve ##
coords(roc1, "best", ret=c("threshold", "specificity", "1-npv"),transpose = FALSE
)
coords(roc2, "local maximas", ret=c("threshold", "sens", "spec", "ppv", "npv"),transpose = FALSE)
threshold sensitivity specificity ppv npv
local.maximas -Inf 100.00000 0.00000 36.28319 NaN
local.maximas.1 1.5 95.12195 51.38889 52.70270 94.87179
local.maximas.2 2.5 65.85366 79.16667 64.28571 80.28169
local.maximas.3 3.5 63.41463 83.33333 68.42105 80.00000
local.maximas.4 4.5 43.90244 94.44444 81.81818 74.72527
local.maximas.5 Inf 0.00000 100.00000 NaN 63.71681
计算AUC可信区间
# CI of the AUC
ci(roc2)
95% CI: 74.85%-89.88% (DeLong)
plot在原有图形上增加
add=TRUE参数
roc1
aSAH$s100b, percent=TRUE,
# arguments for auc
partial.auc=c(100, 90), partial.auc.correct=TRUE,
partial.auc.focus="sens",
# arguments for ci
ci=TRUE, boot.n=100, ci.alpha=0.9, stratified=FALSE,
# arguments for plot
plot=TRUE, auc.polygon=TRUE, max.auc.polygon=TRUE, grid=TRUE,
print.auc=TRUE, show.thres=TRUE)
plot(roc2, add=TRUE)
image.png
比较AUC
看是否有统计学意义
# Test on the whole AUC
roc.test(roc1, roc2, reuse.auc=FALSE)
DeLong's test for two correlated ROC curves
data: roc1 and roc2
Z = -2.209, p-value = 0.02718
alternative hypothesis: true difference in AUC is not equal to 0
sample estimates:
AUC of roc1 AUC of roc2
73.13686 82.36789
绘制ROC曲线-基于ggplot2
创建roc对象
ggroc绘图
# Create a basic roc object
data(aSAH)
rocobj
rocobj2
绘图
基础绘图
library(ggplot2)
g
g
image.png
美化参数设置
ggroc(rocobj, alpha = 0.5, colour = "red", linetype = 2, size = 2)
image.png
支持gglot2语法的美化
# You can then your own theme, etc.
g + theme_minimal() + ggtitle("My ROC curve") +
geom_segment(aes(x = 1, xend = 0, y = 0, yend = 1), color="grey", linetype="dashed")
image.png
修改横纵坐标
# And change axis labels to FPR/FPR
gl
gl
gl + xlab("FPR") + ylab("TPR") +
geom_segment(aes(x = 0, xend = 1, y = 0, yend = 1), color="darkgrey", linetype="dashed")
image.png
image.png
绘制多条曲线
ggroc以list格式包裹roc对象
# Multiple curves:
g2
g2
image.png
也可先构建好公式,再绘制
# This is equivalent to using roc.formula:
roc.list
g.list
g.list
image.png
美化修改
size设置线条粗细
alpha设置透明度
# with additional aesthetics:
g3
g3+ggsci::scale_color_lancet()
image.png
改变参数
aes即按什么属性进行区分
g4
g4
image.png
按多种属性区分ROC曲线
# changing multiple aesthetics:
g5
g5
image.png
分面绘制ROC曲线
# OR faceting
g.list + facet_grid(.~name) + theme(legend.position="none")
image.png
所有曲线有相同颜色
group参数
# To have all the curves of the same color, use aes="group":
g.group
g.group
g.group + facet_grid(.~name)
image.png
我是白介素2,本期内容就到这里,下期再见。
roc图 r语言_R语言pROC包绘制ROC曲线相关推荐
- R语言使用pROC包绘制ROC曲线实战:roc函数计算AUC值、plot.roc函数绘制ROC曲线、添加置信区间、为回归模型中的每个因子绘制ROC曲线并在同一个图中显示出来
R语言使用pROC包绘制ROC曲线实战:roc函数计算AUC值.plot.roc函数绘制ROC曲线.添加置信区间.为回归模型中的每个因子绘制ROC曲线并在同一个图中显示出来 目录
- R语言使用pROC包绘制ROC曲线、获取最优阈值(threshold)及最优阈值对应的置信区间
R语言使用pROC包绘制ROC曲线并获取最佳阈值(threshold)及最佳阈值对应的置信区间 #ROC曲线 ROC(receiver operating characteristic curve)接 ...
- R语言使用pROC包绘制ROC曲线并使用smooth函数绘制平滑的ROC曲线(方法包括:binormal、density、fitdistr、logcondens、logcondens.smooth)
R语言使用pROC包绘制ROC曲线并使用smooth函数绘制平滑的ROC曲线(方法包括:binormal.density.fitdistr.logcondens.logcondens.smooth) ...
- 偏AUC(partial AUC)或者部分AUC是什么?R语言使用pROC包绘制ROC曲线并定义偏AUC(partial AUC):分别聚焦特异度、敏感度角度
偏AUC(partial AUC)或者部分AUC是什么?R语言使用pROC包绘制ROC曲线并定义偏AUC(partial AUC):分别聚焦特异度.敏感度角度 目录
- R语言构建logistic回归模型并评估模型:模型预测结果抽样、可视化模型分类预测的概率分布情况、使用WVPlots包绘制ROC曲线并计算AUC值
R语言构建logistic回归模型并评估模型:模型预测结果抽样.可视化模型分类预测的概率分布情况.使用WVPlots包绘制ROC曲线并计算AUC值 目录
- R使用pROC和ggplot2包绘制ROC曲线
R使用ggplot2包绘制ROC曲线 目录 R使用ggplot2包绘制ROC曲线 logistic回归模型构建 使用pROC包
- roc图 r语言_浅谈ROC曲线-R语言
原文链接:https://www.r-bloggers.com/lang/chinese/1205www.r-bloggers.com 机器学习中很常见的一个大类就是二元分类器.很多二元分类器会产生 ...
- 包r语言_R语言交互式可视化包CanvasXpress
CanvasXpress包简介 CanvasXpress核心是一个JavaScript语言编写的库,主要用于可重复研究. 在R中可以安装canvasXpress包,使用canvasXpress命令绘制 ...
- java集成r语言_R语言- 实验报告 - 利用R语言脚本与Java相互调用
一.实训内容 利用R语言对Java项目程序进行调用,本实验包括利用R语言对java的.java文件进行编译和执行输出. 在Java中调用R语言程序.本实验通过eclipse编写Java程序的方式,调用 ...
最新文章
- 面试中多说这么一句话,薪水直接涨5k
- Python --金字塔
- linux 服务器 安装网卡驱动,linux下安装编译网卡驱动的方法
- Deep Learning for Computer Vision with MATLAB and cuDNN
- midaspay能删除吗_midasPay返回90009错误
- 伺服驱动器的 三环控制 电流环 速度环 位置环
- Python 第三方模块之 numpy.random
- 苹果屏幕上的小圆点_苹果或明年部署miniLED屏幕 最早用在Macbook上
- WinAPI: PolylineTo - 绘制一组连续线段(更新当前位置)
- python将一个文件的内容写入另一个文件_Python3中如何将文件中两个关键词中的信息写入到另一文件?...
- 曾经辉煌无限,如今员工持续大量流失,集团目前仅剩10余人
- “做实体店,已经是绝路了吗?”
- x79服务器主板装系统,【小白经历分享】华南X79 E5 2670+470D 成功装上双系统 【win10+Sierra10.12.6】...
- 绑定点击事件调用百度微信分享
- 在MySQL中group by 是什么意思
- 揭秘 2023 年 Navicat 两大重磅功能 Redis + OceanBase 发布计划
- [问题已处理]-k8s出现Evicted状态
- Django 1.9 支持中文
- 在德国观看中文视频的免费网站总结--涵盖几乎中文各类所有视频
- 网站右侧广告悬浮代码html,js网站广告悬浮代码