Scenario to change by a fixed percentage from a baseline value by target year
Source:R/scenarios_percent_change.R
scenario_percent_baseline.Rd
This scenario allows to change a value by a fixed percentage to a provided year from a provided baseline year. It provides values for scenarios stated as "Reduce INDICATOR by XX% by YEAR"
Usage
scenario_percent_baseline(
df,
percent_change,
value_col = "value",
start_year = 2018,
end_year = 2025,
baseline_year = start_year,
target_year = end_year,
scenario_col = "scenario",
scenario_name = glue::glue("{percent_change}_{baseline_year}"),
trim = TRUE,
small_is_best = FALSE,
keep_better_values = FALSE,
upper_limit = "guess",
lower_limit = "guess",
trim_years = TRUE,
start_year_trim = start_year,
end_year_trim = end_year,
ind_ids = billion_ind_codes("all"),
default_scenario = "default"
)
Arguments
- df
Data frame in long format, where 1 row corresponds to a specific country, year, and indicator.
- percent_change
Numeric with the percentage change in points that is to be achieved from
value_col
inbaseline_year
bytarget_year
. Should be expressed a percentage point and not a fraction of 100 (e.g. 6% increase = 6, and not 0.06). For an increase, use a positive numeric, and a negative one for a decrease.- value_col
Column name of column with indicator values.
- start_year
Start year for scenario, defaults to 2018.
- end_year
End year for scenario, defaults to 2025
- baseline_year
Year from which the scenario is measured. Defaults to
start_year
- target_year
Year by which the scenario should eventually be achieved. Defaults to
end_year
- scenario_col
Column name of column with scenario identifiers. Useful for calculating contributions on data in long format rather than wide format.
- scenario_name
Name of the scenario. Defaults to scenario_percent_change_baseline_year
- trim
logical to indicate if the data should be trimmed between
upper_limit
andlower_limit
.- small_is_best
Logical to identify if a lower value is better than a higher one (e.g. lower obesity in a positive public health outcome, so obesity rate should have small_is_best = TRUE).
- keep_better_values
logical to indicate if "better" values should be kept from
value_col
if they are present. Follows the direction set insmall_is_best
. For instance, if small_is_best is TRUE, thenvalue_col
lower thancol
will be kept.- upper_limit
limit at which the indicator should be caped. Can take any of "guess", or any numeric.
guess
(default) will take 100 as the limit ifpercent_change
is positive, and 0 if negative.- lower_limit
limit at which the indicator should be caped. Can take any of "guess", or 0 to 100.
guess
(default) will take 0 as the limit ifpercent_change
is positive, and 100 if negative.- trim_years
logical to indicate if years before
start_year_trim
and afterend_year_trim
should be removed- start_year_trim
(integer) year to start trimming from.
- end_year_trim
(integer) year to end trimming.
- ind_ids
Named vector of indicator codes for input indicators to the Billion. Although separate indicator codes can be used than the standard, they must be supplied as a named vector where the names correspond to the output of
billion_ind_codes()
.- default_scenario
name of the default scenario to be used.
Details
The percent_change
parameter is understood as a percentage change,
and not a percentage point change, as this is usually what intended by those
formulations. If it is indeed the percentage change that is required, please
use scenario_aroc
. For instance, to calculate the scenario "reduce the 2018
value (90%) by 30% by 2025", will results to a 2025 value of 63% and not 60%.
The returned scenario is a portion of the straight line drawn from the
baseline_year
value to the target_year
. Only values for years between
start_year
and end_year
will be returned.
See also
Basic scenarios
scenario_aroc()
,
scenario_bau()
,
scenario_best_of()
,
scenario_linear_change()