A general framework for climate change vulnerability assessment
(CCVA) of any species and any dataset. Variables are tagged as exposure,
sensitivity or adaptive capacity; each component is computed from its own
predictors by a chosen method; and the three components are combined into
vulnerability. Methods range from the conventional weighted index of
Ofori et al. (2017)
Climate change vulnerability assessment with constrained latent models.
ccva is a general framework for climate change vulnerability assessment
(CCVA) of any species and any dataset. It keeps the standard framework —
vulnerability as a function of exposure, sensitivity and adaptive
capacity — and puts it on a statistical footing:
ccva_register().# install.packages("remotes")
remotes::install_github("DoostiH/ccva", build_vignettes = TRUE)
ccva needs R ≥ 4.1 with ggplot2 and lavaan. The shape-constrained
model uses scam and the penalised methods use glmnet (both
suggested; install them to use those methods).
library(ccva)
# 300 simulated species with a known latent structure
d <- ccva_sim_data()
# Is each component internally consistent?
ccva_check(d)
# The conventional Ofori et al. (2017) index
ofori <- ccva_combine(d, "weighted", component_method = "ordinal")
# Vulnerability as a latent variable, with the default ecological constraints
latent <- ccva_combine(d, "latent",
shared_error = list(c("E1_risk", "E2_risk", "E3_risk")))
ccva_plot(latent, "structure")
cmp <- ccva_compare(ofori = ofori, latent = latent)
cmp
#> method iucn pop_trend range_change V* (truth) class_agreement
#> ofori 0.580 0.584 0.451 0.812 1.00
#> latent 0.745 0.748 0.481 0.888 0.85
ccva_plot(cmp, "truth")
unc <- ccva_uncertainty(latent, "bootstrap", R = 200)
ccva_plot(unc, "intervals")
cons <- ccva_constraints( # added on top of the defaults:
constrain_moderator(), # adaptive capacity moderates only
constrain_equal(c("a1_genetic", "a2_bodysize")),
constrain_fixed("s7_repromode", 0), # drop an indicator
constrain_bounds("exposure", 0, 2)) # bound a component's effect
ccva_combine(d, "shape", constraints = cons)
Constraints matter most at the sample sizes typical of CCVAs. In simulations with 50 species the constrained latent model converged in every fit, while free estimation failed to converge in 10–28% of fits (identical estimates when both converge). Sign constraints on loadings also stop latent scores from coming out upside down.
Adaptive capacity often acts through the other components — range shifts change exposure, plasticity or evolution changes sensitivity. Declaring these links makes the causal hypothesis explicit, avoids double-counting, and splits the effect of adaptive capacity into direct and indirect parts:
causal <- ccva_combine(d, "latent",
shared_error = list(c("E1_risk", "E2_risk", "E3_risk")),
constraints = ccva_constraints(
constrain_link("adaptive", "exposure", "-"),
constrain_link("adaptive", "sensitivity", "-")))
# From rankings to the probability of an observed outcome, with intervals
risk <- ccva_calibrate(causal, outcome = "iucn",
uncertainty = ccva_uncertainty(causal))
| Stage | Functions |
|---|---|
| Data | as_ccva(), ccva_simulate(), ccva_sim_data(), ccva_sdm_exposure(), ccva_thermal_margin(), ccva_adjust_method() |
| Components | ccva_exposure(), ccva_sensitivity(), ccva_adaptive() |
| Vulnerability | ccva_combine(), ccva() |
| Constraints | ccva_constraints(), constrain_sign(), constrain_bounds(), constrain_equal(), constrain_fixed(), constrain_moderator(), constrain_shape(), constrain_link() |
| Assessment | ccva_recommend(), ccva_check(), ccva_validate(), ccva_compare(), ccva_uncertainty(), ccva_calibrate(), ccva_classify(), ccva_rank(), ccva_aggregate() |
| Outputs | ccva_plot(), ccva_report() |
| Extending | ccva_register(), ccva_methods() |
See vignette("ccva") for the full walkthrough and vignette("framework") for the
recommended workflow (method matching, assay control, formative components,
causal links, calibrated risk, spatial prioritisation) step by step.
Contributions are welcome — open an issue to discuss a new method or constraint.
Ofori, B. Y., Stow, A. J., Baumgartner, J. B. and Beaumont, L. J. (2017). Influence of adaptive capacity on the outcome of climate change vulnerability assessment. Scientific Reports 7, 12979. doi:10.1038/s41598-017-13245-y
Hassan Doosti, Macquarie University ([email protected])
GPL (≥ 3). All data shipped with the package are simulated and have no biological meaning.