Helper functions for getting components in an Experiment
.
Source: R/experiment-helpers.R
get_funs.Rd
Helper functions for getting or retrieving DGPs
,
Methods
, Evaluators
, and Visualizers
from an
Experiment
.
Usage
get_dgps(experiment, ...)
get_methods(experiment, ...)
get_evaluators(experiment, ...)
get_visualizers(experiment, ...)
Examples
## create toy DGPs, Methods, Evaluators, and Visualizers
# generate data from normal distribution with n samples
normal_dgp <- create_dgp(
.dgp_fun = function(n) rnorm(n), .name = "Normal DGP", n = 100
)
# generate data from binomial distribution with n samples
bernoulli_dgp <- create_dgp(
.dgp_fun = function(n) rbinom(n, 1, 0.5), .name = "Bernoulli DGP", n = 100
)
# compute mean of data
mean_method <- create_method(
.method_fun = function(x) list(mean = mean(x)), .name = "Mean(x)"
)
# evaluate SD of mean(x) across simulation replicates
sd_mean_eval <- create_evaluator(
.eval_fun = function(fit_results, vary_params = NULL) {
group_vars <- c(".dgp_name", ".method_name", vary_params)
fit_results %>%
dplyr::group_by(dplyr::across(tidyselect::all_of(group_vars))) %>%
dplyr::summarise(sd = sd(mean), .groups = "keep")
},
.name = "SD of Mean(x)"
)
# plot SD of mean(x) across simulation replicates
sd_mean_plot <- create_visualizer(
.viz_fun = function(fit_results, eval_results, vary_params = NULL,
eval_name = "SD of Mean(x)") {
if (!is.null(vary_params)) {
add_aes <- ggplot2::aes(
x = .data[[unique(vary_params)]], y = sd, color = .dgp_name
)
} else {
add_aes <- ggplot2::aes(x = .dgp_name, y = sd)
}
plt <- ggplot2::ggplot(eval_results[[eval_name]]) +
add_aes +
ggplot2::geom_point()
if (!is.null(vary_params)) {
plt <- plt + ggplot2::geom_line()
}
return(plt)
},
.name = "SD of Mean(x) Plot"
)
# initialize experiment with toy DGPs, Methods, Evaluators, and Visualizers
# using piping %>% and add_* functions
experiment <- create_experiment(name = "Experiment Name") %>%
add_dgp(normal_dgp) %>%
add_dgp(bernoulli_dgp) %>%
add_method(mean_method) %>%
add_evaluator(sd_mean_eval) %>%
add_visualizer(sd_mean_plot)
# get DGPs, Methods, Evaluators, and Visualizers
get_dgps(experiment)
#> $`Normal DGP`
#> DGP Name: Normal DGP
#> Function: function (n)
#> Parameters: List of 1
#> $ n: num 100
#>
#> $`Bernoulli DGP`
#> DGP Name: Bernoulli DGP
#> Function: function (n)
#> Parameters: List of 1
#> $ n: num 100
#>
get_methods(experiment)
#> $`Mean(x)`
#> Method Name: Mean(x)
#> Function: function (x)
#> Parameters: list()
#>
get_evaluators(experiment)
#> $`SD of Mean(x)`
#> Evaluator Name: SD of Mean(x)
#> Function: function (fit_results, vary_params = NULL)
#> Parameters: list()
#> R Markdown Options: List of 3
#> $ digits : num 2
#> $ sigfig : logi FALSE
#> $ options:List of 2
#> ..$ scrollX : logi TRUE
#> ..$ scrollCollapse: logi TRUE
#> Show in R Markdown: TRUE
#>
get_visualizers(experiment)
#> $`SD of Mean(x) Plot`
#> Visualizer Name: SD of Mean(x) Plot
#> Function: function (fit_results, eval_results, vary_params = NULL, eval_name = "SD of Mean(x)")
#> Parameters: list()
#> R Markdown Options: List of 2
#> $ height: num 6
#> $ width : num 10
#> Show in R Markdown: TRUE
#>