vlambda博客
学习文章列表

技术贴 | R语言:ROC分析多样性指数

点击蓝字↑↑↑“微生态”,轻松关注不迷路

技术贴 | R语言:ROC分析多样性指数

本文由阿童木根据实践经验而整理,希望对大家有帮助。

原创微文,欢迎转发转载。


1. ROC曲线:

ROC曲线(receiveroperating characteristic curve,简称ROC曲线),以真阳性率(灵敏度)为纵坐标,假阳性率(1-特异度)为横坐标绘制的曲线。ROC最初是在二战中被提出的信号检测理论,后来又被引入了心理学进行信号的知觉检测,现在ROC已经成为非常重要和常见的统计分析方法。

 

2. ROC分析:

ROC分析首先是根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值(TPR、FPR),分别以它们为横、纵坐标作图。AUC的值是ROC曲线下面积的大小,用来评价分类器的performance。通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的performance。下面来看R语言中如何进行ROC分析。

一、 输入数据

代码:

set.seed(1996)  
# 随机种子

data=matrix(abs(round(rnorm(200, mean=20, sd=5))), 504)  
# 随机正整数,5行,4列

colnames(data)=paste("genus"1:4, sep="."
# 列名

rownames(data)=paste("sample"1:50, sep=".")  
# 行名

group=c(rep("A1"25), rep("A2"25))
# 模拟分组变量

二、计算多样性指数:chao1,shannon、simpson、invsimpson

代码:

# 计算每个样品的chao1物种丰富度指数
library(fossil)
chao1=vector()
for(i in 1:length(data[,1]))
{
    chao1[i]=chao1(data[i,])
}
# 此例中物种数皆是4,就不用了,但在实际分析中也许能用得到。

library(vegan)
shannon=diversity(data, "shannon")
simpson=diversity(data, "simpson")
invsimpson=diversity(data, "invsimpson")
# 计算多样性指数

data2=data.frame(group, shannon, simpson, invsimpson)
# 数据整合

三、绘制ROC曲线

代码:

library(pROC)
# 加载ROC分析需要的R包

plot.roc(group~shannon, data2, col="red")
# 画一条线

lines.roc(group~simpson, data2, col="deepskyblue")
# 再画一条

lines.roc(group~invsimpson, data2, col="purple")
# 再画一条

legend(11, c("Shannon""Simpson""Invsimpson"), col=c("red""deepskyblue""purple"), text.col=c("red""deepskyblue""purple"), lty=c(111))
# 画图例



技术贴 | R语言:ROC分析多样性指数


四,分析AUC

代码:

roc_shannon=roc(group~shannon, data2)
roc_simpson=roc(group~simpson, data2)
roc_invsimpson=roc(group~invsimpson, data2)
# 计算曲线下面积AUC

roc.test(roc_shannon, roc_simpson) 
# AUC比较,只能两两比较


Shannon AUC

技术贴 | R语言:ROC分析多样性指数


Simpson AUC

技术贴 | R语言:ROC分析多样性指数


Invsimpson AUC

技术贴 | R语言:ROC分析多样性指数


Shannon VS Simpson

技术贴 | R语言:ROC分析多样性指数


说明:数据随机产生,仅供学习





技术贴 | R语言:ROC分析多样性指数你可能还喜欢技术贴 | R语言:ROC分析多样性指数





微生态科研学术群期待与您交流更多微生态科研问题

(联系微生态老师即可申请入群)

了解更多菌群知识,请关注“微生态”。