r语言 - maxent:Match.names中的错误(CLABS,名称(XI)):名称不匹配以前的名称



我正在尝试使用ELK位置点(Elk)相对于NED高程栅格(Elev)使用R中的maxent预测ELK高度选择。,我已经裁剪了栅格,以解决R.

中的记忆问题。

我将麋鹿数据集分为5组,其中4个现在是训练组(ElkTrain),而我保留为测试组(ElkTest)。我还使用自己的培训和测试数据(NonElkTrainNonElkTest)创建了自己的背景数据(NonElk)。我正在遇到此错误(有或不使用我的背景数据),我找不到任何人相对于Maxent讨论此错误,或者仅使用一个数据框时:

> Max <- maxent(x=Elev, p=ElkTrain, a=NonElkTrain)

> Max <- maxent(x=Elev, p=ElkTrain, a=NULL, nbg=5000, factors=NULL, removeDuplicates=TRUE)  

match.names中的错误(clabs,names(xi)): 名称不匹配以前的名字

另外:警告消息:

in .local(x,p,...): 1(0.02%)的存在点具有Na预测值

由于我只使用一个dataframe(ElkTrain),哪些名称不匹配?

这是一个仅使用一个预测变量的最大模型时发生的错误。您可以从示例中看到它?maxent

library(dismo)
# example data
predictors <- stack(list.files(path=paste(system.file(package="dismo"), '/ex', sep=''), pattern='grd', full.names=TRUE ))
occ <- read.table(paste(system.file(package="dismo"), '/ex/bradypus.csv', sep=''), header=TRUE, sep=',')[,-1]
bg <- randomPoints(predictors, 1000)
# this works
me <- maxent(x=predictors[[1:2]], p =occ)
# fails
me <- maxent(x=predictors[[1]], p =occ)
#Error in match.names(clabs, names(xi)) : 
#  names do not match previous names

这是因为使用单层,矩阵被删除(许多R错误的原因...),在此处说明:

extract(predictors[[1:2]], occtrain[1:2,])
#     bio1 bio12
#[1,]  263  1639
#[2,]  263  1639
extract(predictors[[1]], occtrain[1:2,])
#[1] 263 263

我会解决这个问题。但是这里有两个工作。

=要么制作单层栅格堆栈(如您所建议);最简单的方法:

prd <- stack(predictors[[1]])
me <- maxent(x=prd, p =occ)

=或在存在和背景点的提取的栅格值中制作数据。

abs <- cbind(pa=0, bio1=extract(predictors[[1]], bg))
prs <- cbind(pa=1, bio1=extract(predictors[[1]], occ))

并使用这些数据构建Maxent模型

x <- data.frame(rbind(prs, abs))
m <- maxent(x[,2,drop=F], p=x[,1,drop=F] )
p <- predict(predictors, m)
plot(p)

最新更新