Simulates data based on a specified slca
model. If the model parameters are not already estimated, they can either be provided by the user or generated randomly.
Usage
# S3 method for class 'slca'
simulate(object, nsim = 500, seed = NULL, parm, nlevel, ...)
Arguments
- object
an
slca
object representing the model from which data will be simulated.- nsim
an integer specifying the number of response observations to simulate. The default is 500.
- seed
an integer specifying the random seed for reproducibility. If not provided, results will vary across runs.
- parm
a user-specified set of parameters to guide the simulation. This is required if the model has not been previously estimated.
- nlevel
an integer or integer vector specifying the number of levels for each manifest item in the model. If a single integer is provided, all manifest items will have the same number of levels. The default is 2.
- ...
Additional arguments passed to other methods.
Value
A list
with the following components:
- class
A
data.frame
containing the assigned latent class for each individual across all latent class variables.- response
A
data.frame
containing the simulated manifest item responses.
Examples
m1 <- slca(lc1[3] ~ x1 + x2 + x3 + x4 + x5,
lc2[4] ~ y1 + y2 + y3 + y4 + y5)
sim <- simulate(m1, 1000)
sapply(sim$class, table)
#> $lc1
#>
#> 1 2 3
#> 130 572 298
#>
#> $lc2
#>
#> 1 2 3 4
#> 12 49 573 366
#>
# simulate data with defined number of levels of manifest items
m2 <- slca(lc1[3] ~ x1 + x2 + x3 + x4)
sim <- simulate(m2, nlevel = c(3, 3, 3, 3))
d <- sim$response
sapply(d, table)
#> x1 x2 x3 x4
#> 1 103 105 127 164
#> 2 205 119 139 216
#> 3 192 276 234 120
sim <- simulate(m2, nlevel = c(x1 = 2, x3 = 3, x4 = 4, x5 = 5))
d <- sim$response
sapply(d, table)
#> $x1
#>
#> 1 2
#> 323 177
#>
#> $x2
#>
#> 1 2 3
#> 121 181 198
#>
#> $x3
#>
#> 1 2 3 4
#> 162 119 109 110
#>
#> $x4
#>
#> 1 2 3 4 5
#> 96 82 71 199 52
#>
# simulate data with user-defined parameters
pi <- rep(1 / 3, 3)
rho <- c(.9, .1, .9, .1, .9, .1, .9, .1,
.9, .1, .9, .1, .1, .9, .1, .9,
.1, .9, .1, .9, .1, .9, .1, .9)
par <- c(pi, rho)
m3 <- slca(lc[3] ~ y1 + y2 + y3 + y4)
sim <- simulate(m3, parm = par)
mf <- estimate(m3, sim$response)
param(mf)
#> PI :
#> (lc)
#> class
#> 1 2 3
#> 0.3376 0.3202 0.3422
#>
#> RHO :
#> (a)
#> class
#> response 1 2 3
#> 1(V1) 0.1696 0.9176 0.7918
#> 2 0.8304 0.0824 0.2082
#> 1(V2) 0.0000 0.9239 1.0000
#> 2 1.0000 0.0761 0.0000
#> 1(V3) 0.1029 0.7914 0.1106
#> 2 0.8971 0.2086 0.8894
#> 1(V4) 0.1258 0.9728 0.0000
#> 2 0.8742 0.0272 1.0000
#>
#> V1 V2 V3 V4
#> lc y1 y2 y3 y4