gen_psa_samp {dampack} | R Documentation |
Generate PSA Sample
Description
gen_psa_samp
generates a data.frame of sampled parameter values from
user-specified distributions
to be used in a probabilistic sensitivity analysis (PSA)
Usage
gen_psa_samp(
params = NULL,
dists = c("normal", "log-normal", "truncated-normal", "beta", "gamma", "dirichlet",
"bootstrap", "constant", "triangle"),
parameterization_types = c("mean, sd", "a, b", "shape, scale", "value, mean_prop, sd",
"value, n", "value, alpha", "mean, sd, ll, ul", "val", "meanlog, sdlog",
"ll, ul, mode"),
dists_params = NULL,
nsamp = 100
)
Arguments
params |
string vector with the names of parameters to be generated by |
dists |
string vector with the distributions from which |
parameterization_types |
string vector with parameterization types for each |
dists_params |
list of input parameters required to
by specific |
nsamp |
number of sets of parameter values to be generated |
Details
Length of vectors params
, dists
, parameterization_types
, and list dists_params
must all
be the same.
The nth element of dists
, parameterization_types
, and dists_params
all define the distribution that will be
used to draw samples of the corresponding nth element of the params
vector.
For a given element of params
:
If
dists == "normal"
,parameterization_types
can only be"mean, sd"
, and the corresponding element of listdists_params
must be the the vectorc(mean, sd)
If
dists == "log-normal"
,parameterization_types
can be either"mean, sd"
or"meanlog, sdlog"
, and the corresponding element of listdists_params
must be either the the vectorc(mean, sd)
orc(meanlog, sdlog)
. Use"mean, sd"
if you have sample mean and sample standard deviation of an empirical sample of the random variable, and use"meanlog, sdlog"
if you want to directly specify the parameters of the log-normal distribution as specified byrlnorm
If
dists == "truncated-normal"
,parameterization_types
can only be"mean, sd, ll, ul"
, anddists_params
must be the vectorc(mean, sd, ll, ul)
, wherell
is the lower limit of the distribution andul
is the upper limit of the distribution. If either the lower limit or the upper limit does not exist, simply specifyNA
in the corresponding position of the dists_params vector.If
dists == "beta"
,parameterization_types
can be"mean, sd"
or"a, b"
and the corresponding element of listdists_params
must be the the vectorc(mean, sd)
orc(a, b)
, respectively.If
dists == "gamma"
,parameterization_types
can be"mean, sd"
or"shape, scale"
and the corresponding element of listdists_params
must be the the vectorc(mean, sd)
orc(shape, scale)
, respectively.If
dists == "dirichlet"
,parameterization_types
can be"value, mean_prop, sd"
,"value, n"
, or"value, alpha"
.If
parameterization_types == "value, mean_prop, sd"
, then the corresponding element of listdists_params
must be a data.frame where the first column is a string vector of the the different multinomial outcomes. These multinomial outcomes will become column names in the data.frame returned bygen_psa_samp
, and therefore the strings in this column should correspond to variable names used inFUN
forrun_psa
. The second and third columns of thisdists_params
should be numerical vectors containing the sample means and sample standard errors for each of the multinomial outcomes.If
parameterization_types == "value, n"
, thendists_params
must be a data.frame with the first column being a string vector of the multinomial outcomes, and the second column being a vector of the observed number of each multinomial outcome in a sample.If
parameterization_types == "value, alpha"
, thendists_params
must be a data.frame with the first column being a string vector of the multinomial outcomes, and the second column must be a numerical vector of the alpha parameter values for each multinomial outcome in the dirichlet distribution.
If
dists == "bootstrap"
,parameterization_types
can only be"value, weight"
, anddists_params
must be a data.frame with the first column being a numerical vector containing all of the bootstrap sample values, and the second column being an integer vector designating the sampling weights of each bootstrap sample value. For example, the number of rows in thedists_params
data.frame is the number of individuals in the population to be sampled from (with replacement) or the number of values an empirical distribution (e.g. a histogram). If each individual value in the sample is unique and should be weighted equally, set each weight to 1. If the sample distribution resembles a histogram, the weights should be equal to the number of observations for each unique value in the empirical distribution.If
dists == "constant"
,parameterization_types
can only be"val"
, anddists_params
must be a single numerical value.
Value
A dataframe with samples of parameters for a probabilistic sensitivity analysis (PSA)
See Also
Examples
#define parameter names
params <- c("normal_param", "lognorm_param", "truncnorm_param", "beta_param",
"gamma_param", "dirichlet_param", "bootstrap_param")
#indicate parent distribution types for each parameter
dists <- c("normal", "log-normal", "truncated-normal", "beta", "gamma", "dirichlet", "bootstrap")
#indicate which type of parameterization is used for each parent distribution
parameterization_types <- c("mean, sd", "mean, sd", "mean, sd, ll, ul", "mean, sd", "mean, sd",
"value, mean_prop, sd", "value, weight")
#provide distribution parameters that fully define each parent distribution, and
#ensure that these distribution parameters match the form expected by each combination of dists
#and parameterization_types
dists_params <- list(c(1, 2), c(1, 3), c(1, 0.1, NA, 1), c(.5, .2), c(100, 1),
data.frame(value = c("level1", "level2", "level3"),
mean_prop = c(.1, .4, .5), sd = c(.05, .01, .1)),
data.frame(value = c(1, 2, 4, 6, 7, 8),
weight = c(1, 1, 1, 1, 1, 4)))
#generate 100 samples of parameter values to be used in a probabilistic sensitivity analysis
gen_psa_samp(params = params,
dists = dists,
parameterization_types = parameterization_types,
dists_params = dists_params,
nsamp = 100)