knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" )
The goal of simvalidator is to perform simulation analysis to validate model results, and to present these results in Rmarkdown documents.
# install.packages("remotes") remotes::install_github("NErler/simvalidator")
library(simvalidator)
Specify an expression that generates the covariate part of the data, e.g.:
covar_def <- expression(data.frame(sex = factor(rbinom(N, size = 1, prob = 0.5)), age = rnorm(N, 63, 9)) )
Provide a list of parameters used in the covariate definition and the function that creates the outcome variable:
data_params = list( # standard arguments, always required: response_type = "lm", formula = resp ~ age + sex, # arguments for generating covariates (depend on the user-specified expression) N = 100, # arguments for creating the outcome (depend on the type of outcome) reg_coefs = c('(Intercept)' = -50.8, age = 0.7, sex1 = 1.2), resid_sd = 0.5)
This list has to include the model formula.
All other arguments are specific to the covariate definition and the data
simulation function that is used.
The outcome for a single dataset is simulated using the function sim_data:
data <- sim_data(covar_def, data_params, seed = 123)
The seed value will typically be a seed derived from a global_seed (specified
in the sim_params).
For a simulation study, sim_data is usually called repeatedly internally to
create a large number of datasets.
New functions to simulate different types of outcomes should be called
sim_outcome_<response_type>.
Specify a list of model functions to be used. This list has to include the
arguments fun, the function that runs the model, and result, which is used
to identify the function used to extract the desired elements of the results
from the model.
models <- list( set_model(fun = lm, fun_args = NULL, result = "default", res_args = list(type = "lm")), set_model(fun = JointAI::lm_imp, fun_args = list(n.iter = 300), result = "JointAI", res_args = NULL) )
New result functions must be named get_result_<type> where the type is the
character string specified in the argument result.
get_result_<type> functions have to use the argument fitted_model which
takes the fitted model.
With this information the function fit_models is called:
res <- fit_models(models, formula = data_params$formula, data, seed = 123)
This function fits each of the models and applies the corresponding
get_result_<type> to the fitted model.
sim_params <- list( global_seed = 2020, nr_sims = 10 )
library("doFuture") registerDoFuture() plan(list(multisession, sequential)) sim_out <- run_sim(sim_params, covar_def, data_params, models) sim_out
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.