Calculate climate change impacts on socially vulnerable (SV) populations throughout the 21st century for available sectors
Source:R/run_fredi_sv.R
run_fredi_sv.Rd
run_fredi_sv
allows users to project annual average climate change impacts throughout the 21st century (2010-2100) for socially vulnerable (SV) populations for available sectors. Users can run run_fredi_sv()
for individual sectors to generate annual physical impacts for SV populations. run_fredi_sv()
can be run with default population and climate (temperature and sea level rise trajectories) or using custom trajectories. The output of run_fredi_sv()
is an R data frame object containing annual average physical impacts at five-year increments for the period 2010 to 2100. The basic structure, specific methodology, and underlying data supporting FrEDI-SV are derived from EPA’s independently peer-reviewed September 2021 report, Climate Change and Social Vulnerability in the United States: A Focus on Six Impacts
Usage
run_fredi_sv(
sector = NULL,
driverInput = NULL,
popInput = NULL,
silent = TRUE,
.testing = FALSE
)
Arguments
- sector
A character string indicating the sector for which the FrEDI SV module should calculate impacts (see
get_sv_sectorInfo()
for a list of available sectors).- driverInput
A data frame of up to four custom scenarios for drivers (temperature or global mean sea level rise).
driverInput
requires a data frame with columns of"year"
and"scenario"
. The data frame must also include a third column:"temp_C"
for temperature-driven sectors (containing temperature values in degrees Celsius of warming for the contiguous U.S.) or"slr_cm"
for sea level rise (SLR)-driven sectors (containing values for global mean sea level rise in centimeters). Runget_sv_sectorInfo(gcmOnly=TRUE)
to see temperature-driven sectors in the SV module andget_sv_sectorInfo(slrOnly=TRUE)
to see SLR-driven scenarios. Users can also pass a data frame with all four columns ("year"
,"scenario"
,"temp_C"
, and"slr_cm"
), in which caserun_fredi_sv()
determines whether to use the"temp_C"
or"slr_cm"
column as the driver trajectory based on the specified sector. Driver inputs for all scenarios should start in the year 2000 or earlier. All scenarios must include at least two non-missing values (especially values before or at 2000 and at or after 2100). If any required columns are missing,run_fredi_sv()
will use the default temperature or sea level rise scenario fromrun_fredi()
. If the data frame passed todriverInput
has more than four unique scenarios,run_fredi_sv()
will only run the first four scenarios.- popInput
The input population scenario requires a data frame object with a single scenario of state-level population values.
The population scenario must have five columns with names
"year"
,"region"
,"state"
,"postal"
, and"state_pop"
containing the year, the NCA region name, the state name, the postal code abbreviation (e.g., "ME" for "Maine") for the state, and the state population, respectively.popInput
only accepts a a single scenario, in contrast todriverInput
. In other words,run_fredi_sv()
uses the same population scenario for any and all driver scenarios passed todriverInput
.If the user does not specify an input scenario for population (i.e.,
popInput = NULL
,run_fredi_sv()
uses a default population scenario.Population inputs must have at least one non-missing value in 2010 or earlier and at least one non-missing value in or after the final analysis year (2100).
Population values must be greater than or equal to zero.
- silent
A logical (
TRUE/FALSE
) value indicating the level of messaging desired by the user (defaults tosilent=TRUE
).
Value
The output of run_fredi_sv()
is an R data frame object containing average annual physical impacts for socially vulnerable groups, at the NCA region level and five-year increments.
Details
run_fredi_sv()
projects annual climate change impacts for socially vulnerable (SV) populations throughout the 21st century (2010-2100) for available sectors, using default or user-specified population, temperature, and sea level rise (SLR) trajectories. run_fredi_sv()
is the main function for the FrEDI Social Vulnerability (SV) module in the FrEDI R package, described elsewhere (See https://epa.gov/cira/FrEDI for more information). The SV module extends the FrEDI framework to socially vulnerable populations using data underlying a 2021 U.S. Environmental Protection Agency (EPA) report on Climate Change and Social Vulnerability in the United States.
Users can run run_fredi_sv()
to generate annual physical impacts for SV groups for individual sectors. When running run_fredi_sv()
, users must specify one of the sectors in the SV module; use get_sv_sectorInfo()
for a list of available sectors.
run_fredi_sv()
can be run with default population and climate (temperature and SLR) trajectories or use run_fredi_sv()
to run custom scenarios. Running run_fredi_sv()
with custom climate scenarios requires passing a data frame of scenarios to the driverInput
argument. run_fredi_sv()
can also be run with a custom population scenario by passing a data frame of regional population trajectories to the popInput
argument; unlike climate scenarios, run_fredi_sv()
will only run a single scenario at a time.
driverInput
can take a data frame containing up to four custom scenarios for drivers (temperature or global mean sea level rise).driverInput
requires a data frame with columns of"year"
and"scenario"
. The data frame must also include a third column:"temp_C"
for temperature-driven sectors (containing temperature values in degrees Celsius of warming for the contiguous U.S.) or"slr_cm"
for sea level rise (SLR)-driven sectors (containing values for global mean sea level rise in centimeters). Runget_sv_sectorInfo(gcmOnly = TRUE)
to see temperature-driven sectors in the SV module andget_sv_sectorInfo(slrOnly = TRUE)
to see SLR-driven scenarios. Users can also pass a data frame with all four columns ("year"
,"scenario"
,"temp_C"
, and"slr_cm"
), in which caserun_fredi_sv()
determines whether to use the"temp_C"
or"slr_cm"
column as the driver trajectory based on the specified sector. If any required columns are missing,run_fredi_sv()
will use the default temperature or sea level rise scenario fromrun_fredi()
. If the data frame passed todriverInput
has more than four unique scenarios,run_fredi_sv()
will only run the first four scenarios.Temperature inputs must be temperature change in degrees Celsius for the contiguous U.S. (use
convertTemps()
to convert global temperatures to CONUS temperatures before passing todriverInput
) relative to a 1995 baseline (where 1995 is the central year of a 1986-2005 baseline period; values should start at zero in the year 1995).Sea level rise inputs must be in centimeters relative to a 2000 baseline (i.e., values should start at zero in the year 2000). Driver inputs for all scenarios should start in the year 2000 or earlier. All scenarios must include at least two non-missing values (especially values before or at 2000 and at or after 2100).
The input population scenario requires a data frame object with a single scenario of state-level population values.
The population scenario must have five columns with names
"year"
,"region"
,"state"
,"postal"
, and"state_pop"
containing the year, the NCA region name, the state name, the postal code abbreviation (e.g., "ME" for "Maine") for the state, and the state population, respectively.popInput
only accepts a a single scenario, in contrast todriverInput
. In other words,run_fredi_sv()
uses the same population scenario for any and all driver scenarios passed todriverInput
.If the user does not specify an input scenario for population (i.e.,
popInput = NULL
,run_fredi_sv()
uses a default population scenario.Population inputs must have at least one non-missing value in 2010 or earlier and at least one non-missing value in or after the final analysis year (2100).
Population values must be greater than or equal to zero. The default regional population scenario is drawn from the Integrated Climate and Land Use Scenarios version 2 (ICLUSv2) model (Bierwagen et al, 2010; EPA 2017) under the Median variant projection of United Nations (United Nations, 2015). Note that the FrEDI SV default population scenario differs from the default population scenario used by
run_fredi()
.
The output of run_fredi_sv()
is an R data frame object containing average annual physical impacts for socially vulnerable groups, at the NCA region level and five-year increments.
References
Bierwagen, B., D. M. Theobald, C. R. Pyke, A. Choate, P. Groth, J. V. Thomas, and P. Morefield. 2010. “National housing and impervious surface scenarios for integrated climate impact assessments.” Proc. Natl. Acad. Sci. 107 (49): 20887–20892. https://doi.org/10.1073/pnas.1002096107.
EPA. 2017. Multi-Model Framework for Quantitative Sectoral Impacts Analysis: A technical report for the Fourth National Climate Assessment. U.S. Environmental Protection Agency, EPA 430-R-17-001.
EPA. 2021. Technical Documentation on the Framework for Evaluating Damages and Impacts (FrEDI). U.S. Environmental Protection Agency, EPA 430-R-21-004. Available at https://epa.gov/cira/FrEDI/.
EPA. 2021. Climate Change and Social Vulnerability in the United States: A Focus on Six Impacts. U.S. Environmental Protection Agency, EPA 430-R-21-003. Available at https://www.epa.gov/cira/social-vulnerability-report/.
United Nations. 2015. World population prospects: The 2015 revision. New York: United Nations, Department of Economic and Social Affairs, Population Division.
U.S. Global Change Research Program. 2015. Scenarios for the National Climate Assessment. Available at https://scenarios.globalchange.gov/regions_nca4.
Examples
### Run SV Module with defaults without specifying sector
df_sv <- run_fredi_sv()
#> [1] "Please select a sector: "
#> [1] "1. Air Quality - Childhood Asthma"
#> [1] "2. Air Quality - Premature Mortality"
#> [1] "3. Labor"
#> [1] "4. Extreme Temperature"
#> [1] "5. Roads"
#> [1] "6. Transportation Impacts from High Tide Flooding"
#> [1] "7. Coastal Properties"
#> Warning: type 29 is unimplemented in 'type2char'
#> Error in readline(prompt = sector_msg3): INTEGER() can only be applied to a 'integer', not a 'unknown type #29'
### Return a character vector with the names of all of the sectors in the FrEDI SV Module:
get_sv_sectorInfo()
#> [1] "Air Quality - Childhood Asthma"
#> [2] "Air Quality - Premature Mortality"
#> [3] "Coastal Properties"
#> [4] "Extreme Temperature"
#> [5] "Labor"
#> [6] "Roads"
#> [7] "Transportation Impacts from High Tide Flooding"
### Return a data frame of all of the sectors in the FrEDI SV Module (sector names and additional information)
get_sv_sectorInfo(description=T)
#> sector modelType driverUnit
#> 1 Air Quality - Childhood Asthma GCM degrees Celsius
#> 2 Air Quality - Premature Mortality GCM degrees Celsius
#> 3 Coastal Properties SLR cm
#> 4 Extreme Temperature GCM degrees Celsius
#> 5 Labor GCM degrees Celsius
#> 6 Roads GCM degrees Celsius
#> 7 Transportation Impacts from High Tide Flooding SLR cm
#> impactUnit
#> 1 Childhood asthma cases
#> 2 Premature Mortality
#> 3 Individuals threatened with total property loss
#> 4 Mortality
#> 5 Hours of labor lost
#> 6 Hours of delay
#> 7 Hours of delay
#> variants
#> 1 N/A
#> 2 N/A
#> 3 Without Adaptation, With Adaptation
#> 4 N/A
#> 5 N/A
#> 6 No Adaptation, Proactive Adaptation
#> 7 Without Adaptation, With Adaptation
### Run SV Module with defaults for "Coastal Properties" without saving
df_sv <- run_fredi_sv(sector="Coastal Properties")
#> Running FrEDI SV for sector 'Coastal Properties':
#>
#> Preparing driver scenario...
#> Using default temperature scenario...
#> Creating SLR scenario from temperature scenario...
#>
#> Preparing population scenario...
#> Using default population scenario...
#> Calculating county population from state population...
#>
#> Calculating impacts for sector="Coastal Properties", variant="Without Adaptation", scenario="FrEDI Default"...
#> Calculating scaled impacts for each tract...
#> Finished calculating tract-level impacts.
#> Calculating total impacts for each tract...
#> Finished calculating total impacts.
#>
#> Calculating impacts for sector="Coastal Properties", variant="With Adaptation", scenario="FrEDI Default"...
#> Calculating scaled impacts for each tract...
#> Finished calculating tract-level impacts.
#> Calculating total impacts for each tract...
#> Finished calculating total impacts.
#> Finished.
### Run SV Module with defaults for "Extreme Temperature" without saving
df_sv <- run_fredi_sv(sector="Extreme Temperature")
#> Running FrEDI SV for sector 'Extreme Temperature':
#>
#> Preparing driver scenario...
#> Using default temperature scenario...
#>
#> Preparing population scenario...
#> Using default population scenario...
#> Calculating county population from state population...
#>
#> Calculating impacts for sector="Extreme Temperature", variant="N/A", scenario="FrEDI Default"...
#> Calculating scaled impacts for each tract...
#> Finished calculating tract-level impacts.
#> Calculating total impacts for each tract...
#> Finished calculating total impacts.
#> Finished.
### Load temperature scenarios
load(gcamScenarios)
#> Error in load(gcamScenarios): bad 'file' argument
### Load population scenario
load(popScenario)
#> Error in load(popScenario): bad 'file' argument
### Run SV Module for "Extreme Temperature" with custom population and temperature scenarios
df_sv <- run_fredi_sv(sector = "Extreme Temperature", driverInput = gcamScenarios, popInput = popScenario)
#> Running FrEDI SV for sector 'Extreme Temperature':
#> Checking `driverInput` values...
#> Checking scenarios in `driverInput`...
#> Warning: `driverInput` has more than four distinct scenarios!
#> Only the first four scenarios will be used...
#> Checking `driverInput` values for temperature scenario...
#> All temperature scenario columns present...
#> Checking `popInput` values...
#> All population scenario columns present in `popInput`...
#>
#> Preparing driver scenario...
#> Using temperature scenario from user inputs...
#>
#> Preparing population scenario...
#> Creating population scenario from user inputs...
#> Calculating county population from state population...
#>
#> Calculating impacts for sector="Extreme Temperature", variant="N/A", scenario="Hector_GCAM_v5.3_ECS_3.0_REF"...
#> Calculating scaled impacts for each tract...
#> Finished calculating tract-level impacts.
#>
#> Calculating impacts for sector="Extreme Temperature", variant="N/A", scenario="Hector_GCAM_v5.3_ECS_3.0_REF_20"...
#> Calculating scaled impacts for each tract...
#> Finished calculating tract-level impacts.
#>
#> Calculating impacts for sector="Extreme Temperature", variant="N/A", scenario="Hector_GCAM_v5.3_ECS_3.0_REF_30"...
#> Calculating scaled impacts for each tract...
#> Finished calculating tract-level impacts.
#>
#> Calculating impacts for sector="Extreme Temperature", variant="N/A", scenario="Hector_GCAM_v5.3_ECS_3.0_REF_50"...
#> Calculating scaled impacts for each tract...
#> Finished calculating tract-level impacts.
#> Calculating total impacts for each tract...
#> Finished calculating total impacts.
#> Calculating total impacts for each tract...
#> Finished calculating total impacts.
#> Calculating total impacts for each tract...
#> Finished calculating total impacts.
#> Calculating total impacts for each tract...
#> Finished calculating total impacts.
#> Finished.