---
title: "Scenarios"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Scenarios}
%\VignetteEncoding{UTF-8}
%\VignetteEngine{knitr::rmarkdown}
editor_options:
chunk_output_type: console
---
```{r, results='asis', echo=F, message=F, warning=F}
if (campsis::on_cran()) {
cat(
"This vignette was not built on CRAN. Please check out the online version [here](https://campsisverse.github.io/campsis.doc/articles/v11_scenarios.html)."
)
knitr::knit_exit()
}
```
```{r, results='hide', echo=F, message=F, warning=F}
library(campsis)
```
This vignette shows how scenarios can be implemented.
### Simulate several protocols at once
Using treatment arms:
```{r several_protocols_with_arms, fig.align='center', fig.height=4, fig.width=8, message=F}
model <- model_suite$nonmem$advan4_trans4
arm1 <- Arm(subjects = 3, label = "1000 mg SD") %>%
add(Bolus(time = 0, 1000)) %>%
add(Observations(times = seq(0, 24, by = 0.1)))
arm2 <- Arm(subjects = 5, label = "1500 mg SD") %>%
add(Bolus(time = 0, 1500)) %>%
add(Observations(times = seq(0, 24, by = 0.1)))
arm3 <- Arm(subjects = 10, label = "2000 mg SD") %>%
add(Bolus(time = 0, 2000)) %>%
add(Observations(times = seq(0, 24, by = 0.1)))
results <- simulate(
model = model,
dataset = Dataset() %>% add(c(arm1, arm2, arm3)),
seed = 1
)
spaghetti_plot(results, "CONC") +
ggplot2::facet_wrap(~ARM)
```
Using scenarios:
```{r several_protocols_with_scenarios, fig.align='center', fig.height=4, fig.width=8, message=F}
model <- model_suite$nonmem$advan4_trans4
dataset <- Dataset() %>%
add(Observations(times = seq(0, 24, by = 0.1)))
scenarios <- Scenarios() %>%
add(Scenario(
"1000 mg SD",
dataset = ~ .x %>% set_subjects(3) %>% add(Bolus(time = 0, 1000))
)) %>%
add(Scenario(
"1500 mg SD",
dataset = ~ .x %>% set_subjects(5) %>% add(Bolus(time = 0, 1500))
)) %>%
add(Scenario(
"2000 mg SD",
dataset = ~ .x %>% set_subjects(10) %>% add(Bolus(time = 0, 2000))
))
results <- simulate(
model = model,
dataset = dataset,
scenarios = scenarios,
seed = 1
)
spaghetti_plot(results, "CONC") + ggplot2::facet_wrap(~SCENARIO)
```
### Make a model parameter vary
Assume we want to test different values of `THETA_KA`:
```{r scenarios_make_theta_ka_vary, fig.align='center', fig.height=4, fig.width=8, message=F}
model <- model_suite$nonmem$advan4_trans4
ds <- Dataset(50) %>%
add(Bolus(time = 0, amount = 1000)) %>%
add(Observations(times = seq(0, 24, by = 0.1)))
scenarios <- Scenarios() %>%
add(Scenario(
"THETA_KA=1",
model = ~ .x %>% replace(Theta(name = "KA", value = 1))
)) %>%
add(Scenario(
"THETA_KA=3",
model = ~ .x %>% replace(Theta(name = "KA", value = 3))
)) %>%
add(Scenario(
"THETA_KA=6",
model = ~ .x %>% replace(Theta(name = "KA", value = 6))
))
results <- model %>% simulate(dataset = ds, scenarios = scenarios, seed = 1)
shaded_plot(results, "CONC")
```
### Compare different distributions
Assume we want to compare different distributions of body weight `BW`:
```{r scenarios_compare_bw_distributions , fig.align='center', fig.height=6, fig.width=8, message=F}
model <- model_suite$nonmem$advan1_trans2 %>%
replace(Equation("CL", "THETA_CL*exp(ETA_CL)*pow(BW/70, 0.75)")) %>%
disable("IIV")
ds <- Dataset(50) %>%
add(Bolus(time = 0, amount = 1000)) %>%
add(Observations(times = seq(0, 24, by = 0.1))) %>%
add(Covariate("BW", 70))
scenarios <- Scenarios() %>%
add(Scenario("Constant BW")) %>%
add(Scenario(
"BW ∼ Uniform distribution",
dataset = ~ .x %>%
replace(Covariate("BW", UniformDistribution(min = 60, max = 80)))
)) %>%
add(Scenario(
"BW ∼ Normal distribution",
dataset = ~ .x %>%
replace(Covariate("BW", NormalDistribution(mean = 70, sd = 10)))
))
results <- simulate(
model = model,
dataset = ds,
scenarios = scenarios,
seed = 1
)
shaded_plot(results, "CONC") +
ggplot2::facet_wrap(~SCENARIO, ncol = 1)
```