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
#> 286 289 425
#>
#> $lc2
#>
#> 1 2 3 4
#> 60 73 72 795
#>
# 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 218 198 127 184
#> 2 124 164 195 177
#> 3 158 138 178 139
sim <- simulate(m2, nlevel = c(x1 = 2, x3 = 3, x4 = 4, x5 = 5))
d <- sim$response
sapply(d, table)
#> $x1
#>
#> 1 2
#> 335 165
#>
#> $x2
#>
#> 1 2 3
#> 142 232 126
#>
#> $x3
#>
#> 1 2 3 4
#> 123 197 107 73
#>
#> $x4
#>
#> 1 2 3 4 5
#> 156 78 60 95 111
#>
# 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.4031 0.2059 0.3910
#>
#> RHO :
#> (a)
#> class
#> response 1 2 3
#> 1(V1) 0.1917 1.0000 0.8665
#> 2 0.8083 0.0000 0.1335
#> 1(V2) 0.1634 0.9934 0.8839
#> 2 0.8366 0.0066 0.1161
#> 1(V3) 0.0934 0.1470 0.7982
#> 2 0.9066 0.8530 0.2018
#> 1(V4) 0.1046 0.0000 0.8794
#> 2 0.8954 1.0000 0.1206
#>
#> V1 V2 V3 V4
#> lc y1 y2 y3 y4