Skip to contents

This function simulates regressor values from various marginal distributions with custom correlations.

Usage

correlated_regressors(
  labels,
  n = 100,
  marginals = list(),
  correlation = diag(length(labels)),
  verbose = FALSE
)

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 dimension length(labels), where the (p, q)-th entry defines the correlation between regressor labels[p] and labels[q].

verbose

[logical(1)]
Print information about the simulated regressors?

Value

A data.frame with n rows and length(labels) columns.

References

This function heavily depends on the {SimMultiCorrData} package.

See also

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 2 3 -0.1577703 -1.35793756 -1.588132
#> 2 0 3 -1.9175400 -0.02816791 -1.556578
#> 3 2 1 -1.8609944  0.74239950 -1.143621
#> 4 2 2 -3.2625915  0.06326225 -1.298438
#> 5 0 3  0.7159992 -1.60003749 -1.656860
#> 6 3 3 -3.5313795  0.57418945 -1.846958