# ROC分析时一定要告诉R分析谁

## 1.安装R包

install.packages('pROC') install.packages('ROCit')

## 2.构建数据

score1=c(0.830410619,0.455829518,0.058478492, 0.729325234,0.831480755,0.134660431, 0.695320049,0.662420877,0.528904992, 0.371757106,0.87803265,0.705919705, 0.740182936,0.060545256,0.891066853, 0.568020037,0.379067286) score2=c(0.376703255,0.694968207,0.066650344, 0.261298118,0.079832816,0.005758134, 0.433320986,0.211177625,0.68847034, 0.085216767,0.452439458,0.054711128, 0.719909102,0.653851262,0.500626397, 0.380789783,0.430002115) class=c(1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0)

## 3.常规的ROC分析

#### 使用pROC包

pROC::roc(predictor = score1,response = class)

## Setting levels: control = 0, case = 1

## Setting direction: controls < cases

## ## Call: ## roc.default(response = class, predictor = score1) ## ## Data: score1 in 10 controls (class 0) < 7 cases (class 1). ## Area under the curve: 0.4714

#### 使用ROCit包

ROCit::rocit(score = score1,class = class)\$AUC

## [1] 0.4714286

## 4.不一致的ROC分析结果

#### 使用pROC包

pROC::roc(predictor = score2,response = class)

## Setting levels: control = 0, case = 1

## Setting direction: controls > cases

## ## Call: ## roc.default(response = class, predictor = score2) ## ## Data: score2 in 10 controls (class 0) > 7 cases (class 1). ## Area under the curve: 0.6857

#### 使用ROCit包

ROCit::rocit(score = score2,class = class)\$AUC

## [1] 0.3142857

## 5.为什么2个包的结果会矛盾

## Setting direction: controls < cases

## Setting direction: controls > cases

controls < cases：表示controls组的中位数小于cases组的中位数，pROC包对cases组进行ROC分析，计算cases组的AUC。 controls > cases：表示controls组的中位数大于cases组的中位数，pROC包对controls组进行ROC分析，计算controls组的AUC。

c(controls=median(score1[class==0]), cases=median(score1[class==1]))

## controls cases ## 0.6152205 0.6953200

c(controls=median(score2[class==0]), cases=median(score2[class==1]))

## controls cases ## 0.4412208 0.2612981

## 7.告诉R去ROC谁

pROC::roc(predictor = score2,response = class, levels = c(0,1), direction='<')

## ## Call: ## roc.default(response = class, predictor = score2, levels = c(0, 1), direction = "<") ## ## Data: score2 in 10 controls (class 0) < 7 cases (class 1). ## Area under the curve: 0.3143

ROCit::rocit(score = score2,class = class, negref = 0)\$AUC

## [1] 0.3142857

## 8.总结

ROC分析时一定要设置结局的阴性参考！ ROC分析函数，不提供设置参考的参数，可以考虑丢弃了！

0 条评论

• ### 挑圈联靠拆解一篇4分疾病交互生信SCI

大家好，作为一名因为很懒所以一直收藏了很多花里胡哨的小技能的“小菜鸡”，今天我来跟大家一起聊聊一篇学员在训练营给的疾病交互的文（Tao）章（Lu）。2017年发...

• ### Oh my god，机器学习原来可以这么简单

我想大家对机器学习这个词肯定不陌生，特别是最近这段时间，好像特别热。在生信领域和临床研究都有很多高分的文章不断涌出，那我就给大家简单的介绍一下机器学习的内容。

• ### 组件化专题-APT实战

apt为何如此重要呢？现今越来越多的第三方库使用了apt技术，Dagger2、ButterKnife、ARouter等，在编译时根据annotation生成相关...

• ### JavaScript基础学习--05自定义属性、索引值

一、自定义属性      1、读写操作 <input abc="123" type="button" value="按钮" /> ==============...

• ### Nodejs学习笔记（七）--- Node.js + Express 构建网站简单示例

前言 　　上一篇学习了一些构建网站会用到的一些知识点 https://cloud.tencent.com/developer/article/1020636 　...

• ### OpenLayers3基础教程——OL3 介绍control

相比较Ol2的control，OL3显得特别少，下图分别为Ol2和Ol3的control：

• ### PyTorch专栏（十九）:序列模型和长短句记忆（LSTM）模型 | 文末开奖

【磐创AI 导读】：查看关于本专栏历史文章，请点击文末[阅读全文]。查看本章历史文章，请点击下方蓝色字体进入相应链接阅读。

• ### 回归模型评估二（MSE、RMSE、MAE、R-Squared）

猛着看一下这个公式是不是觉得眼熟，这不就是线性回归的损失函数嘛！！！ 对，在线性回归的时候我们的目的就是让这个损失函数最小。那么模型做出来了，我们把损失函数丢到...

• ### WordPress获取缩略图thumbnail调取最佳策略实践

给WordPress新站改模板调用分类缩略图时遇到了一个问题， 有个模块要调用缩略图显示，如下图: