# NOT RUN {
#############################################################################
# EXAMPLE 1: data.lsem01 | Age differentiation
#############################################################################
data(data.lsem01)
dat <- data.lsem01
# specify lavaan model
lavmodel <- "
F=~ v1+v2+v3+v4+v5
F ~~ 1*F"
# define grid of moderator variable age
moderator.grid <- seq(4,23,1)
#********************************
#*** Model 1: estimate LSEM with bandwidth 2
mod1 <- sirt::lsem.estimate( dat, moderator="age", moderator.grid=moderator.grid,
lavmodel=lavmodel, h=2, std.lv=TRUE)
summary(mod1)
plot(mod1, parindex=1:5)
# perform permutation test for Model 1
pmod1 <- sirt::lsem.permutationTest( mod1, B=10 )
# only for illustrative purposes the number of permutations B is set
# to a low number of 10
summary(pmod1)
plot(pmod1, type="global")
#** estimate Model 1 based on sufficient statistics
mod1b <- sirt::lsem.estimate( dat, moderator="age", moderator.grid=moderator.grid,
lavmodel=lavmodel, h=2, std.lv=TRUE, sufficient_statistics=TRUE )
summary(mod1b)
#********************************
#*** Model 2: estimate multiple group model with 4 age groups
# define breaks for age groups
moderator.grid <- seq( 3.5, 23.5, len=5) # 4 groups
# estimate model
mod2 <- sirt::lsem.estimate( dat, moderator="age", moderator.grid=moderator.grid,
lavmodel=lavmodel, type="MGM", std.lv=TRUE)
summary(mod2)
# output step functions
smod2 <- sirt::lsem.MGM.stepfunctions( object=mod2, moderator.grid=seq(4,23,1) )
str(smod2)
#********************************
#*** Model 3: define standardized loadings as derived variables
# specify lavaan model
lavmodel <- "
F=~ a1*v1+a2*v2+a3*v3+a4*v4
v1 ~~ s1*v1
v2 ~~ s2*v2
v3 ~~ s3*v3
v4 ~~ s4*v4
F ~~ 1*F
# standardized loadings
l1 :=a1 / sqrt(a1^2 + s1 )
l2 :=a2 / sqrt(a2^2 + s2 )
l3 :=a3 / sqrt(a3^2 + s3 )
l4 :=a4 / sqrt(a4^2 + s4 )
"
# estimate model
mod3 <- sirt::lsem.estimate( dat, moderator="age", moderator.grid=moderator.grid,
lavmodel=lavmodel, h=2, std.lv=TRUE)
summary(mod3)
plot(mod3)
#********************************
#*** Model 4: estimate LSEM and automatically include standardized solutions
lavmodel <- "
F=~ 1*v1+v2+v3+v4
F ~~ F"
mod4 <- sirt::lsem.estimate( dat, moderator="age", moderator.grid=moderator.grid,
lavmodel=lavmodel, h=2, standardized=TRUE)
summary(mod4)
# permutation test
pmod1 <- sirt::lsem.permutationTest( mod4, B=3 )
# }
Run the code above in your browser using DataLab