我正在遵循 John Baums 在 GitHub 上的教程,使用 MAXENT 方法创建仅存在的物种分布模型。
每一行代码都在工作,直到我需要运行对象
me
,这是调用 Maxent 的 Java 程序 maxent.jar
的函数,然后我收到下面的错误消息。
我尝试安装rJava再次运行这行代码:
#Install the package rJava
install.packages('rJava')
#Open the library rJava
library (rJava)
一旦我安装了 rJava 并尝试再次运行代码,我在 RStudio 中的会话就会中止:
R session Aborted where R encounters a fatal error
您可以使用下面的代码下载重现此问题所需的所有数据。
有谁知道如何解决这个问题吗?
library(viridis)
library (devtools)
library(dismo)
library(raster)
#Install the pacakge rasterVis
devtools::install_github('oscarperpinan/rasterVis')
#Open the library rasterVis
library(rasterVis)
#Install the package rmaxent
install.packages("remotes")
remotes::install_github("johnbaums/rmaxent")
#Open the library rmaxent
library(rmaxent)
#Let's import the B. variegatus occurrence and predictor data from the appropriate paths:
occ_file <- system.file('ex/bradypus.csv', package='dismo')
occ <- read.table(occ_file, header=TRUE, sep=',')[,-1]
library(raster)
pred_files <- list.files(system.file('ex', package='dismo'), '\\.grd$', full.names=TRUE )
predictors <- stack(pred_files)
#The object predictors is a RasterStack comprising nine raster layers, one for each #predictor used in the model. We can now fit the model using the maxent function from the #dismo package. Note that this function calls Maxent's Java program, maxent.jar
me <- maxent(predictors, occ, factors='biome', args=c('hinge=false', 'threshold=false'))
错误信息:
Loading required namespace: rJava
JVMJ9VM015W Initialization error for library j9gc29(2): Failed to instantiate compressed references metadata. 200M requested
Error in .jinit(parameters = parameters) :
Cannot create Java virtual machine (-4)
您需要安装 Java 才能使此代码工作。您可以从这里下载Java。适用于 Windows 的 Java 下载链接位于此处。只需使用默认安装位置即可。
此外,绘图代码对我不起作用,因此提供了替代绘图代码。
devtools::install_github("johnbaums/rmaxent")
library(rmaxent)
# Import data, create RasterStack
occ_file <- system.file('ex/bradypus.csv', package='dismo')
occ <- read.table(occ_file, header=TRUE, sep=',')[,-1]
library(raster)
pred_files <- list.files(system.file('ex', package='dismo'), '\\.grd$', full.names=TRUE )
predictors <- stack(pred_files)
# Fit model
library(dismo)
me <- maxent(predictors, occ, factors='biome', args=c('hinge=false', 'threshold=false'))
prediction <- project(me, predictors)
# Plot
library(rasterVis)
library(viridis)
levelplot(prediction$prediction_logistic, margin=FALSE, col.regions=viridis, at=seq(0, 1, len=100),
panel = function(...){
panel.levelplot(...)
sp.points(SpatialPoints(occ), pch = 20, col = 1)
})
# Compare timing (your results may vary)
library(microbenchmark)
timings <- microbenchmark(
rmaxent=pred_rmaxent <- project(me, predictors),
dismo=pred_dismo <- predict(me, predictors),
times=10)
print(timings, signif=2)
# Unit: milliseconds
# expr min lq mean median uq max neval
# rmaxent 66 69 76 71 83 88 10
# dismo 230 240 290 250 290 530 10
all.equal(values(pred_rmaxent$prediction_logistic), values(pred_dismo))
# [1] "Mean relative difference: 0.2073864"
# Examine model
parse_lambdas(me)
# Features with non-zero weights
#
# feature lambda min max type
# (biome==1.0) 1.49227 0 1 categorical
# (biome==2.0) 1.15527 0 1 categorical
# (biome==9.0) 2.33123 0 1 categorical
# (biome==13.0) 1.96180 0 1 categorical
# (biome==14.0) 0.32250 0 1 categorical
# bio1 6.60856 -23 289 linear
# bio16 0.32171 0 2458 linear
# bio17 -4.08709 0 1496 linear
# bio7 -16.18362 62 461 linear
# bio8 1.85855 -66 323 linear
# bio5^2 -2.16296 3721 178084 quadratic
# bio6^2 -5.26415 0 57600 quadratic
# bio7^2 -7.49172 3844 212521 quadratic
# bio8^2 0.12389 0 104329 quadratic
# bio12*bio7 4.15357 0 737464 product
# bio12*bio8 2.44714 -27324 2020366 product
# bio16*bio8 0.01359 -13332 638038 product
# bio17*bio7 0.07878 0 145705 product
# bio5*bio7 -3.27012 8235 162812 product
#
#
# Features with zero weights
#
# feature lambda min max type
# bio12 0 0 7682 linear
# bio5 0 61 422 linear
# bio6 0 -212 240 linear
# Identify which variable is most responsible for decreasing suitability
lim <- limiting(predictors, me)
# Plot
levelplot(lim, col.regions=rainbow,
panel = function(...){
panel.levelplot(...)
sp.points(SpatialPoints(occ), pch = 20, col = 1)
})
# Improved model
me2 <- maxent(predictors, occ, factors='biome', args=c('hinge=false', 'threshold=false', 'betamultiplier=5'))
pred2 <- project(me2, predictors)
# Compare
ic(stack(pred_rmaxent$prediction_raw, pred2$prediction_raw),
occ, list(me, me2))
# n k ll AIC AICc BIC
# layer.1 94 19 -736.2354 1510.471 1520.741 1558.793
# layer.2 94 9 -753.9800 1525.960 1528.103 1548.850