Monday, August 22, 2016
Quick FYI about lat/lon data in the ENMTools R package
In case any of you are hitting errors with the ENMTools R package, just be aware that at present it assumes that your data has longitude as the first column and latitude as the second column. I've got some code to fix this, but I'm traveling at the moment and don't have the ability to merge it into the master branch quite yet. I'll get to it soon (promise!) but for now just format your data in the way it expects to see it. Thanks to Utku Perktas for reminding me!
Tuesday, August 16, 2016
Passing args to enmtools.maxent()
Thanks to comments from Matthew King and Nicholas Huron, I've been chasing down some bugs in how enmtools.maxent passes arguments to the "args" parameter of dismo's maxent function. There were a couple of issues here: first, I'd just flat-out screwed something up. That's fixed now, so go get the newest version before you do any maxenting. Second, it just doesn't recognize "args" automatically, so you need to explicitly assign it when you call the function. For instance, this doesn't work:
my.args =c("betamultiplier=0.5", "product=FALSE", "hinge=FALSE", "threshold=FALSE")
allogus.mx.args = enmtools.maxent(allogus, env, my.args)
But this does:
my.args =c("betamultiplier=0.5", "product=FALSE", "hinge=FALSE", "threshold=FALSE")
allogus.mx.args = enmtools.maxent(allogus, env, args = my.args)
Happy maxenting!
my.args =c("betamultiplier=0.5", "product=FALSE", "hinge=FALSE", "threshold=FALSE")
allogus.mx.args = enmtools.maxent(allogus, env, my.args)
But this does:
my.args =c("betamultiplier=0.5", "product=FALSE", "hinge=FALSE", "threshold=FALSE")
allogus.mx.args = enmtools.maxent(allogus, env, args = my.args)
Happy maxenting!
Sunday, August 14, 2016
Automatic report generation
One of the things I'm working on now on the develop branch of enmtools is code to automatically generate html reports on model structure and performance. The goal here is to provide an accessible maxent-style output with as little hassle as possible. The current structure is just a skeleton, but I think it's already pretty neat. Here's a sample html report for a GAM, exactly as it comes out of enmtools:
Summary of ENMTools gam object for allogus
Summary of ENMTools gam object for allogus
Spatial prediction
Model: presence ~ s(layer.1, k = 4) + s(layer.2, k = 4) + s(layer.3, , k = 4) + s(layer.4, k = 4)
##
## Family: binomial
## Link function: logit
##
## Formula:
## presence ~ s(layer.1, k = 4) + s(layer.2, k = 4) + s(layer.3,
## k = 4) + s(layer.4, k = 4)
##
## Parametric coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.3732 0.1911 -17.65 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Approximate significance of smooth terms:
## edf Ref.df Chi.sq p-value
## s(layer.1) 1.641 1.994 1.101 0.57526
## s(layer.2) 1.000 1.001 26.379 2.81e-07 ***
## s(layer.3) 2.850 2.963 10.804 0.00856 **
## s(layer.4) 2.725 2.922 8.414 0.03309 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## R-sq.(adj) = 0.0661 Deviance explained = 12.7%
## UBRE = -0.63881 Scale est. = 1 n = 1052
Evaluation
Geographic space
## class : ModelEvaluation
## n presences : 52
## n absences : 1000
## AUC : 0.7715385
## cor : 0.2319033
## max TPR+TNR at : -2.695771
##
##
## Proportion of data wittheld for model testing:
## [1] 0.2
## class : ModelEvaluation
## n presences : 13
## n absences : 1000
## AUC : 0.7910385
## cor : 0.1300592
## max TPR+TNR at : -3.014335
Environment space
## class : ModelEvaluation
## n presences : 52
## n absences : 10000
## AUC : 0.5357038
## cor : -0.0329415
## max TPR+TNR at : 0.01546464
##
##
## Proportion of data wittheld for model testing:
## [1] 0.2
## class : ModelEvaluation
## n presences : 13
## n absences : 10000
## AUC : 0.5380154
## cor : -0.01697503
## max TPR+TNR at : 0.01534051
Model fit using gam.check
##
## Method: UBRE Optimizer: outer newton
## full convergence after 9 iterations.
## Gradient range [-4.371328e-07,2.558592e-06]
## (score -0.6388078 & scale 1).
## Hessian positive definite, eigenvalue range [4.369759e-07,0.0004284836].
## Model rank = 13 / 13
##
## Basis dimension (k) checking results. Low p-value (k-index<1) may
## indicate that k is too low, especially if edf is close to k'.
##
## k' edf k-index p-value
## s(layer.1) 3.000 1.641 0.932 0.47
## s(layer.2) 3.000 1.000 0.927 0.36
## s(layer.3) 3.000 2.850 0.862 0.02
## s(layer.4) 3.000 2.725 0.806 0.00
Notes
## [1] "No formula was provided, so a GAM formula was built automatically"
Citations
Warren, D.L. (2016) Package ‘enmtools’. Available online at: https://github.com/danlwarren/ENMTools
Hijmans, R.J, Phillips, S., Leathwick, J. and Elith, J. (2011), Package ‘dismo’. Available online at: http://cran.r-project.org/web/packages/dismo/index.html.
Subscribe to:
Posts (Atom)