Skip to contents

Create generator specifications for binomial, Poisson, and negative binomial count variables.

Usage

gen_binomial(
  vars,
  level = c("single", "level2", "multilevel"),
  size = NULL,
  fixed_intercept = NULL,
  random_cov = NULL
)

gen_poisson(
  vars,
  level = c("single", "level2", "multilevel"),
  fixed_intercept = NULL,
  random_cov = NULL
)

gen_negbin(
  vars,
  level = c("single", "level2", "multilevel"),
  fixed_intercept = NULL,
  ...,
  scale_fixed_intercept = NULL,
  random_cov = NULL
)

Arguments

vars

Character scalar naming the generated variable.

level

Simulation level. "single" generates row-level values, "level2" generates group-level values, and "multilevel" uses a random-intercept model.

size

Binomial trial size. May be a scalar, vector, function of n, or count-distribution list.

fixed_intercept

Link-scale intercept. Binomial uses the logit link; Poisson and negative binomial use the log link.

random_cov

Group-level random-intercept covariance for multilevel generators.

...

Removed direct distribution parameters are rejected.

scale_fixed_intercept

Log negative-binomial size intercept.

Value

An mlsim_generator_spec object for use in simulate_data().

Details

Count generators use link-scale intercepts at every level. Negative-binomial size is exp(scale_fixed_intercept).

Examples

sim <- simulate_data(
  n = 5,
  seed = 4,
  generators = list(
    events = gen_poisson("events", fixed_intercept = log(2)),
    successes = gen_binomial(
      "successes",
      size = 4,
      fixed_intercept = stats::qlogis(0.5)
    ),
    overdispersed = gen_negbin(
      "overdispersed",
      fixed_intercept = log(2),
      scale_fixed_intercept = log(3)
    )
  )
)
sim$data
#>    obs_id events successes overdispersed
#>     <int>  <int>     <int>         <num>
#> 1:      1      2         1             1
#> 2:      2      0         3             4
#> 3:      3      1         3             8
#> 4:      4      1         4             8
#> 5:      5      3         1             2