Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算MaxEnt和BIOMOD的ROC/AUC_R - Fatal编程技术网

计算MaxEnt和BIOMOD的ROC/AUC

计算MaxEnt和BIOMOD的ROC/AUC,r,R,非常感谢温彻斯特的帮助!我也看到了教程,这对我来说很有用!在过去的两天里,我研究了MaxEnt和BIOMOD的输出,我想我仍然对这两个版本中使用的术语感到有点困惑 从飞利浦的代码来看,他似乎使用了样本点和后搁浅点来计算ROC,而在BIOMOD中,只有存在点和伪缺失点的预测。这意味着,对于同一个数据集,我有相同数量的存在/样本数据,但两个模型的存在/背景数据不同。当我重新计算ROC时,它通常与模型本身报告的值不一致 我想我仍然没有得到模型评估的一些要点,关于评估什么以及如何生成评估数据集,即com

非常感谢温彻斯特的帮助!我也看到了教程,这对我来说很有用!在过去的两天里,我研究了MaxEnt和BIOMOD的输出,我想我仍然对这两个版本中使用的术语感到有点困惑

从飞利浦的代码来看,他似乎使用了样本点和后搁浅点来计算ROC,而在BIOMOD中,只有存在点和伪缺失点的预测。这意味着,对于同一个数据集,我有相同数量的存在/样本数据,但两个模型的存在/背景数据不同。当我重新计算ROC时,它通常与模型本身报告的值不一致

我想我仍然没有得到模型评估的一些要点,关于评估什么以及如何生成评估数据集,即comfusion矩阵,以及选择哪部分数据作为评估

谢谢大家的友好回复!给您带来的不便我深表歉意。我在BIOMOD的帖子中又添加了几句话,使其可以运行,至于MaxEnt,您可以使用教程数据

实际上,我这篇文章的目的是要找到一个既有使用在场/缺席数据集的经验又有使用仅在场数据集的经验的人。我可能知道如何单独处理这些问题,但不是全部

我正在使用MaxEnt和BIOMOD下的一些算法对我的物种进行分布,我想在同一个图中绘制ROC/AUC,以前有人这样做过吗

据我所知,对于MaxEnt,ROC可以使用ROCR和vcd库绘制,这在飞利浦的MaxEnt教程中给出:

   install.packages("ROCR", dependencies=TRUE)
   install.packages("vcd",  dependencies=TRUE)
   library(ROCR)
   library(vcd)
   library(boot)
   setwd("c:/maxent/tutorial/outputs")
   presence <- read.csv("bradypus_variegatus_samplePredictions.csv")
   background <- read.csv("bradypus_variegatus_backgroundPredictions.csv")
   pp <- presence$Logistic.prediction                # get the column of predictions
   testpp <- pp[presence$Test.or.train=="test"]       # select only test points
   trainpp <- pp[presence$Test.or.train=="train"]   # select only test points
   bb <- background$logistic
   combined <- c(testpp, bb)                             # combine into a single vector
   label <- c(rep(1,length(testpp)),rep(0,length(bb)))  # labels: 1=present, 0=random
   pred <- prediction(combined, label)                    # labeled predictions
   perf <- performance(pred, "tpr", "fpr")          # True / false positives, for ROC curve
   plot(perf, colorize=TRUE)                                # Show the ROC curve
   performance(pred, "auc")@y.values[[1]]            # Calculate the AUC
install.packages(“ROCR”,dependencies=TRUE)
install.packages(“vcd”,dependencies=TRUE)
图书馆(ROCR)
图书馆(vcd)
库(启动)
setwd(“c:/maxent/tutorial/outputs”)

存在我一直在使用。在同一个图形中绘制ROC和AUC时,它有很多很好的特性。此外,它非常有用。

我仍然无法让您的代码正常工作,但下面是一个示例,其中包含来自软件包presence缺席的演示数据。我画了你的线条,然后为ROC加了一条粗线条。如果你给它贴标签,假阳性率在x轴上,假阴性率在y轴上,但是我认为这对于其他的线来说是不准确的。这就是你想做的吗

data(SIM3DATA)
plotroc <- roc.plot.calculate(SIM3DATA,which.model=2, xlab = NULL, ylab = NULL)
plot(plotroc$threshold, plotroc$sensitivity, type="l", col="blue ")   
lines(plotroc$threshold, plotroc$specificity)    
lines(plotroc$threshold, (plotroc$specificity+plotroc$sensitivity)/2, col="red")
lines(1 - plotroc$specificity, plotroc$sensitivity, lwd = 2, lty = 5)
数据(SIM3DATA)

plotroc理想情况下,如果您要比较方法,您可能应该根据MaxEnt和BIOMOD为数据集测试部分的每个位置(观察到的存在和不存在)生成预测。正如Christian提到的,pROC是一个很好的软件包,特别是用于比较ROC曲线。虽然我没有访问数据的权限,但我已经生成了一个虚拟数据集,该数据集应说明绘制两条roc曲线和计算AUC差异

library(pROC)

#Create dummy data set for test observations
obs<-rep(0:1, each=50)
pred1<-c(runif(50,min=0,max=0.8),runif(50,min=0.3,max=0.6))
pred2<-c(runif(50,min=0,max=0.6),runif(50,min=0.4,max=0.9))

roc1<-roc(obs~pred1) # Calculate ROC for each method
roc2<-roc(obs~pred2) 

#Plot roc curves for each method

plot(roc1)
lines(roc2,col="red")

#Compare differences in area under ROC
roc.test(roc1,roc2,method="bootstrap",paired=TRUE)
库(pROC)
#为测试观察创建虚拟数据集

obsI已经使用Maxent好几次了,但是手头没有教程数据。发布一个工作示例,我将继续工作。这可能很简单,只需调整绘图比例并使用
add=TRUE
谢谢Jim!我还注意到pROC包已经扩展到比较ROC曲线。从您的代码看来,我可以使用不同的事件数据集进行预测和ROC计算。正如我一直认为的那样,最好使用相同的数据集(MaxEnt只使用存在,而其他使用存在和不存在)。
library(pROC)

#Create dummy data set for test observations
obs<-rep(0:1, each=50)
pred1<-c(runif(50,min=0,max=0.8),runif(50,min=0.3,max=0.6))
pred2<-c(runif(50,min=0,max=0.6),runif(50,min=0.4,max=0.9))

roc1<-roc(obs~pred1) # Calculate ROC for each method
roc2<-roc(obs~pred2) 

#Plot roc curves for each method

plot(roc1)
lines(roc2,col="red")

#Compare differences in area under ROC
roc.test(roc1,roc2,method="bootstrap",paired=TRUE)