Nothing
## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(echo = TRUE)
library(apsimx)
library(ggplot2)
apsimx_options(warn.versions = FALSE)
tmp.dir <- tempdir()
## ----sens0, eval = FALSE------------------------------------------------------
# ## Create a temporary directory and copy the Wheat.apsimx file
# tmp.dir <- tempdir()
# extd.dir <- system.file("extdata", package = "apsimx")
# file.copy(file.path(extd.dir, "Wheat.apsimx"), tmp.dir)
# ## Identify a parameter of interest
# ## In this case we want to know the impact of varying the fertilizer amount
# pp <- inspect_apsimx("Wheat.apsimx", src.dir = tmp.dir,
# node = "Manager", parm = list("SowingFertiliser", 1))
# ## For simplicity, we create a vector of fertilizer amounts (instead of sampling)
# ferts <- seq(5, 200, length.out = 7)
# col.res <- NULL
# for(i in seq_along(ferts)){
#
# edit_apsimx("Wheat.apsimx", src.dir = tmp.dir,
# node = "Other",
# parm.path = pp, parm = "Amount",
# value = ferts[i])
#
# sim <- apsimx("Wheat.apsimx", src.dir = tmp.dir)
# col.res <- rbind(col.res, data.frame(fertilizer.amount = ferts[i],
# wheat.aboveground.wt = mean(sim$Wheat.AboveGround.Wt, na.rm = TRUE)))
# }
## ----sens_apsimx, eval = FALSE------------------------------------------------
# tmp.dir <- tempdir()
# extd.dir <- system.file("extdata", package = "apsimx")
# file.copy(file.path(extd.dir, "Wheat.apsimx"), tmp.dir)
# ## Identify a parameter of interest
# ## In this case we want to know the impact of varying the fertilizer amount
# ## and the plant population
# pp1 <- inspect_apsimx("Wheat.apsimx", src.dir = tmp.dir,
# node = "Manager", parm = list("SowingFertiliser", 1))
# pp1 <- paste0(pp1, ".Amount")
#
# pp2 <- inspect_apsimx("Wheat.apsimx", src.dir = tmp.dir,
# node = "Manager", parm = list("SowingRule1", 9))
# pp2 <- paste0(pp2, ".Population")
#
# ## The names in the grid should (partially) match the parameter path names
# grd <- expand.grid(Fertiliser = c(50, 100, 150), Population = c(100, 200, 300))
#
# ## This takes 2-3 minutes
# sns <- sens_apsimx("Wheat.apsimx", src.dir = tmp.dir,
# parm.paths = c(pp1, pp2),
# grid = grd)
## ----sensitivity-parameterSets------------------------------------------------
library(sensitivity)
## Simple example: see documentation for other options
X.grid <- parameterSets(par.ranges = list(Fertiliser = c(1, 300),
Population = c(1, 300)),
samples = c(3,3), method = "grid")
X.grid
## ----sensitivity-morris-------------------------------------------------------
X.mrrs <- morris(factors = c("Fertiliser", "Population"),
r = 3, design = list(type = "oat", levels = 3, grid.jump = 1),
binf = c(0, 5), bsup = c(200, 300))
X.mrrs$X
## ----sensitivity-decoupling, eval = FALSE-------------------------------------
# ## This takes 2-3 minutes
# sns2 <- sens_apsimx("Wheat.apsimx", src.dir = tmp.dir,
# parm.paths = c(pp1, pp2),
# grid = X.mrrs$X)
# ## These are the sensitivity results for AboveGround.Wt only
# sns.res.ag <- tell(X.mrrs, sns2$grid.sims$Wheat.AboveGround.Wt)
# sns.res.ag
# ## Call: morris(factors = c("Fertiliser", "Population"),
# ## r = 3, design = list(type = "oat", levels = 3, grid.jump = 1),
# ## binf = c(0, 5), bsup = c(200, 300))
# ##
# ## Model runs: 9
# ## mu mu.star sigma
# ## Fertiliser 916.6674 916.6674 662.8798
# ## Population 448.4530 448.4530 640.6807
# plot(sns.res.ag)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.