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

时间:2017-12-01 18:13:18

标签: r maxent

我尝试使用麋鹿位置点(Elk)相对于NED高程栅格(Elev)使用R中的maxent来预测麋鹿高程选择。两者都是预测的在NAD83中使用lat / long,并且我已经裁剪了栅格以解决R中的内存问题。

我已将Elk数据集划分为5组,其中4组现在是培训组(ElkTrain),1我保留为测试组(ElkTest) 。我还创建了自己的背景数据(NonElk),其中包含自己的培训和测试数据(NonElkTrainNonElkTest)。我遇到了这个错误(使用和不使用我的背景数据),我找不到任何人在讨论这个相对于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))出错:        名称与以前的名称不匹配

另外:警告信息:

  

在.local(x,p,...)中:        1(0.02%)存在点具有NA预测值

由于我只使用一个数据框(ElkTrain),所以哪些名称不匹配?

1 个答案:

答案 0 :(得分:0)

当您使用一个预测变量创建最大模型时,会发生这样的错误。您可以使用?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

我会解决这个问题。但这是两个解决方案。

=制作单层RasterStack(如你所建议的);最简单的方法:

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

=或者创建一个data.frame,其中包含存在和背景点的提取栅格值:

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

并使用这些数据构建最大模型

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

p <- predict(predictors, m)
plot(p)