Большое спасибо Винчестер за любезную помощь! Я также видел учебник, и это работает для меня! В последние два дня я изучал результаты работы MaxEnt и BIOMOD, и я думаю, что меня все еще немного смущают термины, используемые в них.
Из кода Philips, похоже, что он использовал точки выборки и точку заднего фона для расчета ROC, в то время как в BIOMOD есть только прогноз на основе точек присутствия и псевдо отсутствия. Это означает, что для одного и того же набора данных у меня одинаковое количество данных присутствия / выборки, но разные данные отсутствия / фона для двух моделей соответственно. И когда я пересчитываю ROC, это обычно не согласуется со значениями, сообщаемыми самой моделью.
Я думаю, что я до сих пор не получил некоторой точки оценки модели, относительно того, что оценивается и как генерировать набор данных оценки, т.е. матрица сочетаний и какая часть данных была выбрана в качестве оценки.
Спасибо всем за добрый ответ! Я очень извиняюсь за неудобства. Я добавил еще несколько предложений к сообщению для BIOMOD, чтобы сделать его работоспособным, а для MaxEnt вы можете использовать учебные данные.
На самом деле, цель моего поста - найти человека, который имел опыт работы как с набором данных о присутствии / отсутствии, так и с набором данных только для присутствия. Я, наверное, знаю, как обращаться с ними по отдельности, но не совсем.
Я использую как MaxEnt, так и несколько алгоритмов под BIOMOD для распределения моего вида, и я хотел бы нарисовать ROC / AUC на том же рисунке, кто-нибудь делал это раньше?
Насколько мне известно, для MaxEnt ROC можно построить с использованием библиотеки ROCR и vcd, которая была дана в руководстве MaxEnt от Philips:
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
В то время как для BIOMOD им требуются данные о присутствии / отсутствии, поэтому я использовал 1000 точек псевдо-отсутствия, а фона нет. Я нашел другой сценарий, данный самим Тюиллером:
library(BIOMOD)
library(PresenceAbsence)
data(Sp.Env)
Initial.State(Response=Sp.Env[,12:13], Explanatory=Sp.Env[,4:10],
IndependentResponse=NULL, IndependentExplanatory=NULL)
Models(GAM = TRUE, NbRunEval = 1, DataSplit = 80,
Yweights=NULL, Roc=TRUE, Optimized.Threshold.Roc=TRUE, Kappa=F, TSS=F, KeepPredIndependent = FALSE, VarImport=0,
NbRepPA=0, strategy="circles", coor=CoorXY, distance=2, nb.absences=1000)
load("pred/Pred_Sp277")
data=cbind(Sp.Env[,1], Sp.Env[,13], Pred_Sp277[,3,1,1]/1000)
plotroc <- roc.plot.calculate(data)
plot(plotroc$threshold, plotroc$sensitivity, type="l", col="blue ")
lines(plotroc$threshold, plotroc$specificity)
lines(plotroc$threshold, (plotroc$specificity+plotroc$sensitivity)/2, col="red")
Теперь проблема в том, как я мог бы построить их вообще? Я пробовал оба, они работают хорошо для обоих по отдельности, но исключительно. Может быть, мне нужен кто-то, чтобы помочь мне понять основополагающую философию РПЦ.
Заранее спасибо ~
Marco