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(),
dmixnorm_cpp(),
dmvnorm_cpp(),
dtnorm_cpp(),
dwishart_cpp(),
gaussian_tv(),
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 4 3  1.3026385 -0.4485639 -1.576478
#> 2 1 3 -2.3795472 -1.7276359 -1.730188
#> 3 1 3 -0.5169225 -0.3855378 -1.936500
#> 4 2 2  0.8893220  1.5302264 -1.827636
#> 5 1 2 -3.0986957  0.4379905 -1.413795
#> 6 1 2 -0.6939426  1.7164510 -1.711683
