Scenario to pick the best scenario out of a list of scenarios
Source:R/scenarios_specific_scenarios.R
scenario_best_of.Rd
scenario_best_of
picks the best value between multiple scenarios specified
in scenario_names
. small_is_best
allows to pick if higher value or
smaller values are best.
Usage
scenario_best_of(
df,
scenario_names,
value_col = "value",
maximize_end_year = TRUE,
start_year = 2018,
end_year = 2025,
target_year = end_year,
scenario_name = glue::glue("best_of_{paste0(scenario_names, collapse = '_')}"),
scenario_col = "scenario",
trim = TRUE,
small_is_best = FALSE,
keep_better_values = TRUE,
upper_limit = 100,
lower_limit = 0,
trim_years = TRUE,
start_year_trim = start_year,
end_year_trim = end_year,
ind_ids = billion_ind_codes("all")
)
Arguments
- df
Data frame in long format, where 1 row corresponds to a specific country, year, and indicator.
- scenario_names
names of the scenario to pick from.
- value_col
Column name of column with indicator values.
- maximize_end_year
(Boolean) if TRUE, the best scenario is picked on the best value at
end_year
. Default to FALSE.- start_year
Start year for scenario, defaults to 2018.
- end_year
End year for scenario, defaults to 2025
- target_year
Year by which the scenario should eventually be achieved. Defaults to
end_year
- scenario_name
Name of the scenario. Defaults to scenario_percent_change_baseline_year
- scenario_col
Column name of column with scenario identifiers. Useful for calculating contributions on data in long format rather than wide format.
- 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()
.
Details
If multiple scenario are tied for the best scenario, the scenario with the best time
series for each iso3
and ind
is picked. If they are still tied scenarios for
the best value, the first in alphabetical order is picked.
See also
Basic scenarios
scenario_aroc()
,
scenario_bau()
,
scenario_linear_change()
,
scenario_percent_baseline()
Comparing scenarios
scenario_bau()
,
scenario_best_in_region()
,
scenario_quantile()