inst/doc/metafolio.R

## ----setup, include=FALSE, cache=FALSE--------------------------------------------------
library(knitr)
# set global chunk options
opts_chunk$set(fig.path='figure/', fig.align='center', fig.show='hold')
options(replace.assign=TRUE, width=90)
opts_knit$set(out.format = "latex")
opts_chunk$set(warning=FALSE, message=FALSE, comment=NA, tidy=FALSE,
refresh=TRUE, cache=FALSE, autodep=TRUE)

## ----my-load-package, include=FALSE-----------------------------------------------------
library(metafolio)
set.seed(1)

## ----load-package, eval=FALSE-----------------------------------------------------------
#  library(metafolio)

## ----help, eval=FALSE-------------------------------------------------------------------
#  vignette("metafolio")
#  ?metafolio
#  help(package = "metafolio")

## ----setup-arma-------------------------------------------------------------------------
arma_env_params <- list(mean_value = 16, ar = 0.1, sigma_env = 2,
  ma = 0)

## ----base-case-run, cache=FALSE---------------------------------------------------------
base1 <- meta_sim(n_pop = 10, env_params = arma_env_params,
  env_type = "arma", assess_freq = 5)

## ----plot-base-case-ts, fig.width=5, fig.height=6.5, out.width="4in", fig.cap="An example simulation with stationary environmental stochasticity and the base-case parameter values."----
plot_sim_ts(base1, years_to_show = 70, burn = 30)

## ----spatial-plans----------------------------------------------------------------------
w_plans <- list()
w_plans[["balanced"]] <- c(5, 1000, 5, 1000, 5, 5, 1000, 5,
    1000, 5)
w_plans[["one_half"]] <- c(rep(1000, 4), rep(5, 6))
w <- list()
for(i in 1:2) { # loop over plans
 w[[i]] <- list()
 for(j in 1:80) { # loop over iterations
   w[[i]][[j]] <- matrix(w_plans[[i]], nrow = 1)
 }
}

## ----spatial-runs, fig.width=5, fig.height=5, out.width="4in", cache=FALSE, fig.cap="Two spatial conservation strategies shown in risk-return space with stationary environmental stochasticity. The dots show simulated metapopulations and the contours show 25\\% and 75\\% quantiles across 80 simulations per scenario. The grey line indicates the efficient frontier across all simulated metapopulations. The efficient frontier represents the minimum expected mean growth rate for a given expected variance in growth rate."----
set.seed(1)
arma_sp <- run_cons_plans(w, env_type = "arma", env_params =
  arma_env_params)
plot_cons_plans(arma_sp$plans_mv,
  plans_name = c("Balanced", "One half"),
  cols = c("#E41A1C", "#377EB8"), xlab = "Variance of growth rate",
  ylab = "Mean growth rate")

## ----env-eg, fig.width=5, fig.height=6, out.width="3in", fig.cap="Example environmental time series.", fig.pos="hpb"----
types <- c("sine", "arma", "regime", "linear", "constant")
x <- list()
for(i in 1:5) x[[i]] <- generate_env_ts(n_t = 100, type = types[i])
par(mfrow = c(5, 1), mar = c(3,3,1,0), cex = 0.7)
for(i in 1:5) plot(x[[i]], type = "o", main = types[i])

## ----plot-rickers, fig.width=7, fig.height=4.5, out.width="5in", fig.pos="hpb", fig.cap="Ricker curves from a sample of 40 years in the example simulation. Each panel represents a different stream population. Population 1 is more productive in cool conditions and population 10 is more producitive in warm conditions. The colour of the Ricker curves represents the relative temperatue in that year (warm: red; cool: blue). The grey shaded area represents the variation in spawners observed within the simulation."----
plot_rickers(base1, pal = rep("black", 10))

## ----return-correlations, fig.width=5, fig.height=5, out.width="5in", fig.cap="A plot comparing the log(returns) between each population. The population IDs are coloured from warm tolerant (warm colours) to cool tolerant (cool colours). Note how populations 1 and 10 have asynchronous returns whereas populations with more similar thermal-tolerance curves (say populations 9 and 10) have more synchronous dynamics. Populations with thermal tolerance curves in the middle (e.g.~population 6) are less correlated with other populations. Their population dynamics end up primarily driven by demographic stochasticity and less so by temperature-induced systematic changes in productivity."----
plot_correlation_between_returns(base1)


## ----monte-carlo-eg, eval=FALSE---------------------------------------------------------
#  set.seed(1)
#  weights_matrix <- create_asset_weights(n_pop = 6, n_sims = 3000,
#    weight_lower_limit = 0.001)
#  mc_ports <- monte_carlo_portfolios(weights_matrix = weights_matrix,
#    n_sims = 3000, mean_b = 1000)

## ----monte-carlo-eg-load, eval=TRUE, echo=FALSE-----------------------------------------
# To make the vignette compile more quickly:
# port_vals <- mc_ports$port_vals
# save(port_vals, file = "port_vals.rda")
weights_matrix <- create_asset_weights(n_pop = 6, n_sims = 3000,
  weight_lower_limit = 0.001)
load("port_vals.rda")
mc_ports <- list()
mc_ports$port_vals <- port_vals

## ----monte-carlo-plot, fig.width=7, fig.height=4, out.width="5in", fig.cap="Efficient frontier of metapopulation portfolios (red dots). Each dot represents a different set of weights of the Ricker $b$ parameters. The colours in the right panel correspond to the five populations with warm tolerant populations in warmer colours and cool tolerant populations in cooler colours."----
col_pal <- rev(gg_color_hue(6))
ef_dat <- plot_efficient_portfolios(port_vals = mc_ports$port_vals,
  pal = col_pal, weights_matrix = weights_matrix)

Try the metafolio package in your browser

Any scripts or data that you put into this service are public.

metafolio documentation built on Oct. 21, 2023, 1:06 a.m.