Simulate multi-objective data for the 'Project Prioritization Protocol'
Source:R/simulate_multi_ppp_data.R
simulate_multi_ppp_data.RdSimulate data for developing multi-objective project prioritizations. Here, data are simulated such that each objective has its own features, and each feature has its own conservation project. This structure is similar to species-based prioritizations (e.g., Bennett et al. 2014).
Usage
simulate_multi_ppp_data(
number_objectives,
number_features,
number_actions,
cost_mean = 100,
cost_sd = 5,
success_min_probability = 0.7,
success_max_probability = 0.99,
funded_min_persistence_probability = 0.5,
funded_max_persistence_probability = 0.9,
baseline_min_persistence_probability = 0.01,
baseline_max_persistence_probability = 0.4,
locked_in_proportion = 0,
locked_out_proportion = 0
)Arguments
- number_objectives
Number of objectives for which to simulate data.
- number_features
numericnumber of features.- number_actions
Number of actions for which to simulate data.
- cost_mean
numericaverage cost for the actions. Defaults to100.- cost_sd
numericstandard deviation in action costs. Defaults to5.- success_min_probability
numericminimum probability of the projects succeeding if they are funded. Defaults to0.7.- success_max_probability
numericmaximum probability of the projects succeeding if they are funded. Defaults to0.99.- funded_min_persistence_probability
numericminimum probability of the features persisting if projects are funded and successful. Defaults to0.5.- funded_max_persistence_probability
numericmaximum probability of the features persisting if projects are funded and successful. Defaults to0.9.- baseline_min_persistence_probability
numericminimum probability of the features persisting if only the baseline project is funded. Defaults to0.01.- baseline_max_persistence_probability
numericmaximum probability of the features persisting if only the baseline project is funded. Defaults to0.4.- locked_in_proportion
numericof actions that are locked into the solution. Defaults to0.- locked_out_proportion
numericof actions that are locked into the solution. Defaults to0.
Value
A list object containing the following elements.
"projects_obj1", ...,"projects_objN"A
listoftibble::tibble()containing data for the conservation projects associated with each objective. Each element contains a data frame with the following following columns."name"charactername for each project."success"numericprobability of each project succeeding if it is funded."F1"..."FN"numericcolumns for each feature, ranging from"F1"to"FN"whereNis the number of features, indicating the probability that each feature will persist if it is funded and successfully completed. Missing values (NA) indicate that a feature does not benefit from a project being funded."F1_action"..."FN_action"logicalcolumns for each action, ranging from"F1_action"to"FN_action"whereNis the number of actions (equal to the number of features in this simulated data), indicating if an action is associated with a project (TRUE) or not (FALSE)."baseline_action"logicalcolumn indicating if a project is associated with the baseline action (TRUE) or not (FALSE). This action is only associated with the baseline project.
"actions"A
tibble::tibble()containing the data for the conservation actions across all objectives. It contains the following columns."name"charactername for each action."cost"numericcost for each action."locked_in"logicalindicating if certain actions should be locked into the solution."locked_out"logicalindicating if certain actions should be locked out of the solution.
"features_obj1", ...,"features_objN"A
listoftibble::tibble()containing data for the features (e.g., species) associated with each objective. Each element contains a data frame with the following following columns."name"charactername for each feature."weight"numericweight for each feature. For each feature, this is calculated as the amount of time that elapsed between the present and the features' last common ancestor. In other words, the weights are calculated as the unique amount of evolutionary history that each feature has experienced.
"tree_obj1", ...,"tree_objN"A
listofape::phylo()phylogenetic tree objects for the features associated with each objective (separately).
Details
The simulated data set will contain a set of projects, wherein each project is assigned to a particular objective and is associated with a particular feature. Although multiple projects may be assigned to the same objective, note that each project is associated with a different feature. Also note that that each objective is associated with a "baseline" "baseline" (do nothing) project to reflect features' persistence when their conservation project is not funded. Specifically, the data are simulated using the following procedure.
A set of objectives are defined (per
number_objectives) and a set of features are defined (pernumber_features).Each feature is then randomly assigned to each objective. Note that each objective will always have at least one of feature.
A set of actions (per
number_actions) are simulated and the costs for these actions are simulated using a normal distribution and thecost_meanandcost_sdarguments. In addition to these actions, a set of additional baseline actions are simulated for each objective.A set of projects are created for each feature by randomly selecting a set of actions.
A set proportion of the actions are randomly set to be locked in and out of the solutions using the
locked_in_proportionandlocked_out_proportionarguments.The probability of each project succeeding if its action is funded is simulated by drawing probabilities from a uniform distribution with the upper and lower bounds set as the
success_min_probabilityandsuccess_max_probabilityarguments.The probability of each feature persisting if its project is funded and is successful is simulated by drawing probabilities from a uniform distribution with the upper and lower bounds set as the
funded_min_persistence_probabilityandfunded_max_persistence_probabilityarguments.An additional project is created for each programme which represents the "baseline" (do nothing) scenario. The probability of each feature persisting when managed under this project is simulated by drawing probabilities from a uniform distribution with the upper and lower bounds set as the
baseline_min_persistence_probabilityandbaseline_max_persistence_probabilityarguments.A phylogenetic tree is simulated for the features that belong to each objective (separately) using
ape::rcoal().Feature data are created from the phylogenetic tree. The weights are calculated as the amount of evolutionary history that has elapsed between each feature and its last common ancestor.
References
Bennett JR, Elliott G, Mellish B, Joseph LN, Tulloch AI, Probert WJ, ... & Maloney R (2014) Balancing phylogenetic diversity and species numbers in conservation prioritization, using a case study of threatened species in New Zealand. Biological Conservation, 174: 47–54.
Examples
# create a simulated data set
s <- simulate_multi_ppp_data(
number_objectives = 3,
number_features = 7,
number_actions = 5,
cost_mean = 100,
cost_sd = 5,
success_min_probability = 0.7,
success_max_probability = 0.99,
funded_min_persistence_probability = 0.5,
funded_max_persistence_probability = 0.9,
baseline_min_persistence_probability = 0.01,
baseline_max_persistence_probability = 0.4,
locked_in_proportion = 0.01,
locked_out_proportion = 0.01
)
# print data set
print(s)
#> $projects
#> $projects$projects_obj1
#> # A tibble: 3 × 12
#> name success F1 F2 A1_action A2_action A3_action A4_action A5_action
#> <chr> <dbl> <dbl> <dbl> <lgl> <lgl> <lgl> <lgl> <lgl>
#> 1 F1_p… 0.939 0.872 NA TRUE TRUE TRUE TRUE TRUE
#> 2 F2_p… 0.712 NA 0.518 FALSE TRUE TRUE TRUE TRUE
#> 3 base… 1 0.0859 0.174 FALSE FALSE FALSE FALSE FALSE
#> # ℹ 3 more variables: B1_action <lgl>, B2_action <lgl>, B3_action <lgl>
#>
#> $projects$projects_obj2
#> # A tibble: 4 × 13
#> name success F3 F4 F7 A1_action A2_action A3_action A4_action
#> <chr> <dbl> <dbl> <dbl> <dbl> <lgl> <lgl> <lgl> <lgl>
#> 1 F3_proj… 0.720 0.532 NA NA TRUE TRUE TRUE TRUE
#> 2 F4_proj… 0.756 NA 0.825 NA FALSE FALSE FALSE TRUE
#> 3 F7_proj… 0.889 NA NA 0.886 FALSE TRUE TRUE FALSE
#> 4 baselin… 1 0.291 0.0205 0.311 FALSE FALSE FALSE FALSE
#> # ℹ 4 more variables: A5_action <lgl>, B1_action <lgl>, B2_action <lgl>,
#> # B3_action <lgl>
#>
#> $projects$projects_obj3
#> # A tibble: 3 × 12
#> name success F5 F6 A1_action A2_action A3_action A4_action A5_action
#> <chr> <dbl> <dbl> <dbl> <lgl> <lgl> <lgl> <lgl> <lgl>
#> 1 F5_pr… 0.840 0.819 NA TRUE TRUE FALSE TRUE TRUE
#> 2 F6_pr… 0.954 NA 0.774 TRUE TRUE TRUE TRUE TRUE
#> 3 basel… 1 0.234 0.269 FALSE FALSE FALSE FALSE FALSE
#> # ℹ 3 more variables: B1_action <lgl>, B2_action <lgl>, B3_action <lgl>
#>
#>
#> $actions
#> # A tibble: 8 × 4
#> name cost locked_in locked_out
#> <chr> <dbl> <lgl> <lgl>
#> 1 A1_action 105. FALSE FALSE
#> 2 A2_action 110. TRUE FALSE
#> 3 A3_action 104. FALSE FALSE
#> 4 A4_action 100. FALSE FALSE
#> 5 A5_action 105. FALSE TRUE
#> 6 B1_action 0 FALSE FALSE
#> 7 B2_action 0 FALSE FALSE
#> 8 B3_action 0 FALSE FALSE
#>
#> $features
#> $features[[1]]
#> # A tibble: 2 × 2
#> name weight
#> <chr> <dbl>
#> 1 F1 0.0798
#> 2 F2 0.0798
#>
#> $features[[2]]
#> # A tibble: 3 × 2
#> name weight
#> <chr> <dbl>
#> 1 F3 0.130
#> 2 F4 0.130
#> 3 F7 0.157
#>
#> $features[[3]]
#> # A tibble: 2 × 2
#> name weight
#> <chr> <dbl>
#> 1 F5 2.65
#> 2 F6 2.65
#>
#>
#> $tree
#> $tree$tree_obj1
#>
#> Phylogenetic tree with 2 tips and 1 internal node.
#>
#> Tip labels:
#> F1, F2
#>
#> Rooted; includes branch length(s).
#>
#> $tree$tree_obj2
#>
#> Phylogenetic tree with 3 tips and 2 internal nodes.
#>
#> Tip labels:
#> F3, F4, F7
#>
#> Rooted; includes branch length(s).
#>
#> $tree$tree_obj3
#>
#> Phylogenetic tree with 2 tips and 1 internal node.
#>
#> Tip labels:
#> F5, F6
#>
#> Rooted; includes branch length(s).
#>
#>