对 MaxEntReplicates 使用评估函数
Using evaluate function for MaxEntReplicates
我正在使用 dismo 包中的 Maxent 函数来创建一些物种分布模型。
通常这有效:
single_model <- maxent(predictors, presence, args=c('jackknife=TRUE', 'randomseed=FALSE',"randomtestpoints=25"), path=output)
evaluate.model <- evaluate(presence1, background1, single_model, predictors)
但是当我用复制品创建这个模型时
rep_model <- maxent(predictors, presence, args=c('replicates=5', 'jackknife=TRUE', 'randomseed=FALSE'), path=output)
评估功能不起作用。它给出了一个错误
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function 'raster' for signature '"numeric"'
知道为什么吗?或者如何解决?
这是可重现的代码:
r=raster(ncol=20,nrow=20)
r1=r
r2=r
r3=r
r1[]= 1:5
r2[]= 1:ncell(r)
r3[]= 1:20
r.stack= stack(r1,r2,r3)
p=randomPoints(r1,50)
single_model <- maxent(r.stack, p, args=c('jackknife=TRUE', 'randomseed=FALSE',"randomtestpoints=25"))
r4=r
r5=r
r6=r
r4[]= 30:40
r5[]= 1:ncell(r)
r6[]= 2:40
r.stack2= stack(r4,r5,r6)
p1=randomPoints(r1,50)
b1 <- randomPoints(r.stack2, 50)
evaluate.model <- evaluate(p1, b1, single_model, r.stack)
rep_model <- maxent(r.stack, p, args=c('replicates=5', 'jackknife=TRUE', 'randomseed=FALSE'))
evaluate.model2 <- evaluate(p1, b1, rep_model, r.stack)
有趣的是,我 post 在这里找到了解决方案。我在网上找不到答案,所以我会 post 在这里为任何有同样问题的人解决它。
rep_model@models[[1]]
有两个括号,子集化工作。对于每个模型,可以使用评估函数然后对其进行平均。
我正在使用 dismo 包中的 Maxent 函数来创建一些物种分布模型。
通常这有效:
single_model <- maxent(predictors, presence, args=c('jackknife=TRUE', 'randomseed=FALSE',"randomtestpoints=25"), path=output)
evaluate.model <- evaluate(presence1, background1, single_model, predictors)
但是当我用复制品创建这个模型时
rep_model <- maxent(predictors, presence, args=c('replicates=5', 'jackknife=TRUE', 'randomseed=FALSE'), path=output)
评估功能不起作用。它给出了一个错误
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function 'raster' for signature '"numeric"'
知道为什么吗?或者如何解决?
这是可重现的代码:
r=raster(ncol=20,nrow=20)
r1=r
r2=r
r3=r
r1[]= 1:5
r2[]= 1:ncell(r)
r3[]= 1:20
r.stack= stack(r1,r2,r3)
p=randomPoints(r1,50)
single_model <- maxent(r.stack, p, args=c('jackknife=TRUE', 'randomseed=FALSE',"randomtestpoints=25"))
r4=r
r5=r
r6=r
r4[]= 30:40
r5[]= 1:ncell(r)
r6[]= 2:40
r.stack2= stack(r4,r5,r6)
p1=randomPoints(r1,50)
b1 <- randomPoints(r.stack2, 50)
evaluate.model <- evaluate(p1, b1, single_model, r.stack)
rep_model <- maxent(r.stack, p, args=c('replicates=5', 'jackknife=TRUE', 'randomseed=FALSE'))
evaluate.model2 <- evaluate(p1, b1, rep_model, r.stack)
有趣的是,我 post 在这里找到了解决方案。我在网上找不到答案,所以我会 post 在这里为任何有同样问题的人解决它。
rep_model@models[[1]]
有两个括号,子集化工作。对于每个模型,可以使用评估函数然后对其进行平均。