lrren
|
Main function. Estimate an ecological niche using the spatial relative risk function and predict its location in geographic space.
|
perlrren
|
Sensitivity analysis for lrren whereby observation locations are spatially perturbed (“jittered”) with specified radii, iteratively.
|
plot_obs
|
Display multiple plots of the estimated ecological niche from lrren output.
|
plot_predict
|
Display multiple plots of the predicted spatial distribution from lrren output.
|
plot_cv
|
Display multiple plots of internal k-fold cross-validation diagnostics from lrren output.
|
plot_perturb
|
Display multiple plots of output from perlrren including predicted spatial distribution of the summary statistics.
|
div_plot
|
Called within plot_obs , plot_predict , and plot_perturb , provides functionality for basic visualization of surfaces with diverging color palettes.
|
seq_plot
|
Called within plot_perturb , provides functionality for basic visualization of surfaces with sequential color palettes.
|
pval_correct
|
Called within lrren and perlrren , calculates various multiple testing corrections for the alpha level.
|
Authors
- Ian D. Buller - Social & Scientific Systems, Inc., a division of DLH Corporation, Silver Spring, Maryland (current) - Occupational and Environmental Epidemiology Branch, Division of Cancer Epidemiology and Genetics, National Cancer Institute, National Institutes of Health, Rockville, Maryland (former) - Environmental Health Sciences, James T. Laney School of Graduate Studies, Emory University, Atlanta, Georgia. (original) - GitHub - ORCID
See also the list of contributors who participated in this package, including:
- Lance A. Waller - Biostatistics and Bioinformatics, Emory University, Atlanta, Georgia. - GitHub - ORCID
Usage
For the lrren() function
set.seed(1234) # for reproducibility
# ------------------ #
# Necessary packages #
# ------------------ #
library(envi)
library(spatstat.data)
library(spatstat.geom)
library(spatstat.random)
library(terra)
# -------------- #
# Prepare inputs #
# -------------- #
# Using the 'bei' and 'bei.extra' data within {spatstat.data}
# Environmental Covariates
elev <- spatstat.data::bei.extra[[1]]
grad <- spatstat.data::bei.extra[[2]]
elev$v <- scale(elev)
grad$v <- scale(grad)
elev_raster <- terra::rast(elev)
grad_raster <- terra::rast(grad)
# Presence data
presence <- spatstat.data::bei
spatstat.geom::marks(presence) <- data.frame("presence" = rep(1, presence$n),
"lon" = presence$x,
"lat" = presence$y)
spatstat.geom::marks(presence)$elev <- elev[presence]
spatstat.geom::marks(presence)$grad <- grad[presence]
# (Pseudo-)Absence data
absence <- spatstat.random::rpoispp(0.008, win = elev)
spatstat.geom::marks(absence) <- data.frame("presence" = rep(0, absence$n),
"lon" = absence$x,
"lat" = absence$y)
spatstat.geom::marks(absence)$elev <- elev[absence]
spatstat.geom::marks(absence)$grad <- grad[absence]
# Combine
obs_locs <- spatstat.geom::superimpose(presence, absence, check = FALSE)
obs_locs <- spatstat.geom::marks(obs_locs)
obs_locs$id <- seq(1, nrow(obs_locs), 1)
obs_locs <- obs_locs[ , c(6, 2, 3, 1, 4, 5)]
# Prediction Data
predict_xy <- terra::crds(elev_raster)
predict_locs <- as.data.frame(predict_xy)
predict_locs$elev <- terra::extract(elev_raster, predict_xy)[ , 1]
predict_locs$grad <- terra::extract(grad_raster, predict_xy)[ , 1]
# ----------- #
# Run lrren() #
# ----------- #
test1 <- envi::lrren(obs_locs = obs_locs,
predict_locs = predict_locs,
predict = TRUE,
verbose = TRUE,
cv = TRUE)
# -------------- #
# Run plot_obs() #
# -------------- #
envi::plot_obs(test1)
# ------------------ #
# Run plot_predict() #
# ------------------ #
envi::plot_predict(test1,
cref0 = "EPSG:5472",
cref1 = "EPSG:4326")
# ------------- #
# Run plot_cv() #
# ------------- #
envi::plot_cv(test1)
For the perlrren() function
set.seed(1234) # for reproducibility
# ------------------ #
# Necessary packages #
# ------------------ #
library(envi)
library(spatstat.data)
library(spatstat.geom)
library(spatstat.random)
library(terra)
# -------------- #
# Prepare inputs #
# -------------- #
# Using the 'bei' and 'bei.extra' data within {spatstat.data}
# Scale environmental covariates
ims <- spatstat.data::bei.extra
ims[[1]]$v <- scale(ims[[1]]$v)
ims[[2]]$v <- scale(ims[[2]]$v)
# Presence data
presence <- spatstat.data::bei
spatstat.geom::marks(presence) <- data.frame("presence" = rep(1, presence$n),
"lon" = presence$x,
"lat" = presence$y)
# (Pseudo-)Absence data
absence <- spatstat.random::rpoispp(0.008, win = ims[[1]])
spatstat.geom::marks(absence) <- data.frame("presence" = rep(0, absence$n),
"lon" = absence$x,
"lat" = absence$y)
# Combine and create 'id' and 'levels' features
obs_locs <- spatstat.geom::superimpose(presence, absence, check = FALSE)
spatstat.geom::marks(obs_locs)$id <- seq(1, obs_locs$n, 1)
spatstat.geom::marks(obs_locs)$levels <- as.factor(stats::rpois(obs_locs$n, lambda = 0.05))
spatstat.geom::marks(obs_locs) <- spatstat.geom::marks(obs_locs)[ , c(4, 2, 3, 1, 5)]
# -------------- #
# Run perlrren() #
# -------------- #
# Uncertainty in observation locations
## Most observations within 10 meters
## Some observations within 100 meters
## Few observations within 500 meters
test3 <- envi::perlrren(obs_ppp = obs_locs,
covariates = ims,
radii = c(10, 100, 500),
verbose = FALSE, # may not be availabe if parallel = TRUE
parallel = TRUE,
n_sim = 100)
# ------------------ #
# Run plot_perturb() #
# ------------------ #
envi::plot_perturb(test3,
cref0 = "EPSG:5472",
cref1 = "EPSG:4326",
cov_labs = c("elev", "grad"))
Funding
This package was developed while the author was originally a doctoral student in the Environmental Health Sciences doctoral program at Emory University and later as a postdoctoral fellow supported by the Cancer Prevention Fellowship Program at the National Cancer Institute. Any modifications since December 05, 2022 were made while the author was an employee of Social & Scientific Systems, Inc., a division of DLH Corporation.
Acknowledgments
When citing this package for publication, please follow:
citation("envi")
Questions? Feedback?
For questions about the package, please contact the maintainer Dr. Ian D. Buller or submit a new issue.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.