Automated Tuning and Evaluations of Ecological Niche Models

Runs ecological niche models over all combinations of user-defined settings (i.e., tuning), performs cross validation to evaluate models, and returns data tables to aid in selection of optimal model settings that balance goodness-of-fit and model complexity. Also has functions to partition data spatially (or not) for cross validation, to plot multiple visualizations of results, to run null models to estimate significance and effect sizes of performance metrics, and to calculate niche overlap between model predictions, among others. The package was originally built for Maxent models (Phillips et al. 2006, Phillips et al. 2017), but the current version allows possible extensions for any modeling algorithm. The extensive vignette, which guides users through most package functionality but unfortunately has a file size too big for CRAN, can be found here on the package's Github Pages website: <>.

CRAN version downloads R package for automated runs and evaluations of ecological niche models.

ENMeval is an R package that performs automated runs and evaluations of ecological niche models, and currently implements Maxent using the either (now by default) the 'maxnet' algoritm developed by Phillips et al. (2017) using the 'maxnet' R package or [the original java program ( ENMeval was made for those who want to "tune" their models to maximize predictive ability and avoid overfitting, or in other words, optimize model complexity to balance goodness-of-fit and predictive ability. The primary function, ENMevaluate, does all the heavy lifting and returns several items including a table of evaluation statistics and, for each setting combination, a model object and a raster layer showing the model prediction across the study extent. There are also options for calculating niche overlap between predictions, running in parallel to speed up computation, and more. For a more detailed description of the package, check out the open-access publication:

Muscarella, R., Galante, P. J., Soley-Guardia, M., Boria, R. A., Kass, J. M., Uriarte, M. and Anderson, R. P. (2014), ENMeval: An R package for conducting spatially independent evaluations and estimating optimal model complexity for Maxent ecological niche models. Methods in Ecology and Evolution, 5: 1198–1205.

Also see the vignette for examples of implementation.

Note that as of version 0.3.0, the default implementation uses the 'maxnet' R package. The output from this differs from that of the original java program and so some features are not compatible (e.g., variable importance, the old html output). Our team has done some fairly extensive testing to ensure this implementation gives the expected results but the maxnet implementation is relatively new (at the time of writing this) and we encourage users to scrutinize their results.


ENMeval 0.3.0

o Changed the default behavior to use the 'maxnet' function of the 'maxnet' package instead of the 'maxent.jar' program, and removed the dependency on the 'rJava' package by default, among others. o Added an algorithm slot to the ENMevaluation object. o Added information on the aggregation factor(s) or number of k folds to the ENMevaluation object when relevant. o Corrected use of 'corrected.var' in the 'tuning' function. o Changed some column names in the @results table to be more intuitive and compatable with the R package, Wallace.

ENMeval 0.2.2

o Added a vignette. Type: vignette('ENMeval-vignette', package='ENMeval') o Added an option to pass additional arguments to maxent (e.g., prevalence) o Added a function to extract variable importance for maxent models o Fixed an inconsistency with the AICc columns of the results table when rasterPreds=F o Fixed potential errors in the partitioning methods functions when used independently o Added some progress bar options to increase compatibility with Wallace

ENMeval 0.2.1

o Fixed an error in the organization of results table when bin.output=T

ENMeval 0.2.0

o Fixed a bug that allowed only a single categorical variable; now multiple categorical variables work. o Added an option to run the tuning function in parallel. o Added a slot in ENMevaluation object class to hold Maxent model objects. This allows the user to access the lambda values and original results table generated by Maxent. o Added arguments in ENMevaluate function to turn off raster prediction generation to save time.

ENMeval 0.1.1

o This version corrects the calc.aicc function that, in version 0.1.0, could give erroneous results when used with multiple models simultaneously. AICc, delta.AICc, and w.AIC values calculated in v.0.1.0 are potentially flawed!

ENMeval 0.1.0

o This is the initial version of ENMeval. The main function is ENMeval::ENMevaluate().

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


2.0.1 by Jamie M. Kass, 2 months ago

Browse source code at

Authors: Jamie M. Kass [aut, cre] , Robert Muscarella [aut] , Peter J. Galante [aut] , Corentin Bohl [aut] , Gonzalo E. Buitrago-Pinilla [aut] , Robert A. Boria [aut] , Mariano Soley-Guardia [aut] , Robert P. Anderson [aut]

Documentation:   PDF Manual  

GPL license

Imports raster, dismo, doSNOW, doParallel, parallel, foreach, utils, graphics, stats, grDevices, maxnet, dplyr, tidyr, ggplot2, testthat, glmnet, rangeModelMetadata

Depends on methods, magrittr

Suggests rJava, knitr, rmarkdown, spocc, RColorBrewer, rasterVis, sf, blockCV, devtools, tibble, latticeExtra

Imported by ENMTools, biomod2, wallace.

Suggested by BiodiversityR.

See at CRAN