This function simulates regressor values from various marginal distributions with custom correlations.
Arguments
- labels
[
character()
]
Unique labels for the regressors.- n
[
integer(1)
]
The number of values per regressor.- marginals
[
list()
]
Optionally marginal distributions for regressors. If not specified, standard normal marginal distributions are used.Each list entry must be named according to a regressor label, and the following distributions are currently supported:
- discrete distributions
-
Poisson:
list(type = "poisson", lambda = ...)
categorical:
list(type = "categorical", p = c(...))
- continuous distributions
-
normal:
list(type = "normal", mean = ..., sd = ...)
uniform:
list(type = "uniform", min = ..., max = ...)
- correlation
[
matrix()
]
A correlation matrix of dimensionlength(labels)
, where the(p, q)
-th entry defines the correlation between regressorlabels[p]
andlabels[q]
.- verbose
[
logical(1)
]
Print information about the simulated regressors?
See also
Other simulation helpers:
Simulator
,
ddirichlet_cpp()
,
dmvnorm_cpp()
,
dtnorm_cpp()
,
dwishart_cpp()
,
simulate_markov_chain()
Examples
labels <- c("P", "C", "N1", "N2", "U")
n <- 100
marginals <- list(
"P" = list(type = "poisson", lambda = 2),
"C" = list(type = "categorical", p = c(0.3, 0.2, 0.5)),
"N1" = list(type = "normal", mean = -1, sd = 2),
"U" = list(type = "uniform", min = -2, max = -1)
)
correlation <- matrix(
c(1, -0.3, -0.1, 0, 0.5,
-0.3, 1, 0.3, -0.5, -0.7,
-0.1, 0.3, 1, -0.3, -0.3,
0, -0.5, -0.3, 1, 0.1,
0.5, -0.7, -0.3, 0.1, 1),
nrow = 5, ncol = 5
)
data <- correlated_regressors(
labels = labels, n = n, marginals = marginals, correlation = correlation
)
head(data)
#> P C N1 N2 U
#> 1 3 3 -4.7130652 -1.0413476 -1.223231
#> 2 4 1 -4.7438851 0.3919668 -1.030027
#> 3 3 1 -0.8742685 0.4273757 -1.127770
#> 4 1 2 0.5560642 1.6302620 -1.911679
#> 5 4 1 0.1742265 -0.7726184 -1.074824
#> 6 2 2 0.3771131 -1.0175691 -1.137814