Learn R Programming

sirt (version 1.14-0)

lsem.estimate: Local Structural Equation Models (LSEM)

Description

Local structural equation models (LSEM) are structural equation models (SEM) which are evaluated for each value of a pre-defined moderator variable (Hildebrandt, Wilhelm, & Robitzsch, 2009; Hildebrandt et al., 2016). Like in nonparametric regression models, observations near a focal point - at which the model is evaluated - obtain higher weights, far distant obervations obtain lower weights. The LSEM can be specified by making use of lavaan syntax. It is also possible to specify a discretized version of LSEM in which values of the moderator are grouped and a multiple group SEM is specified. The LSEM can be tested by employing a permutation test, see lsem.permutationTest. The function lsem.MGM.stepfunctions outputs stepwise functions for a multiple group model evaluated at a grid of focal points of the moderator, specified in moderator.grid.

Usage

lsem.estimate(data, moderator, moderator.grid, lavmodel, type="LSEM", h = 1.1, residualize=TRUE, fit_measures = c("rmsea", "cfi", "tli", "gfi", "srmr"), standardized=FALSE, standardized_type = "std.all", eps = 1e-08, verbose = TRUE, ...) "summary"(object, file=NULL, digits=3, ...)
"plot"(x , parindex=NULL , ask=TRUE , ci = TRUE , lintrend = TRUE , parsummary = TRUE , ylim=NULL , xlab=NULL, ylab=NULL , main=NULL , digits=3, ...) lsem.MGM.stepfunctions( object , moderator.grid )

Arguments

data
Data frame
moderator
Variable name of the moderator
moderator.grid
Focal points at which the LSEM should be evaluated. If type="MGM", breaks are defined in this vector.
lavmodel
Specified SEM in lavaan. The function lavaan::sem (lavaan) is used.
type
Type of estimated model. The default is type="LSEM" which means that a local structural equation model is estimated. A multiple group model with a discretized moderator as the grouping variable can be estimated with type="MGM". In this case, the breaks must be defined in moderator.grid.
h
Bandwidth factor
residualize
Logical indicating whether a residualization should be applied.
fit_measures
Vector with names of fit measures following the labels in lavaan
standardized
Optional logical indicating whether standardized solution should be included as parameters in the output using the lavaan::standardizedSolution function. Standardized parameters are labelled as std__.
standardized_type
Type of standardization if standardized=TRUE. The types are described in lavaan::standardizedSolution.
eps
Minimum number for weights
verbose
Optional logical printing information about computation progress.
object
Object of class lsem
file
A file name in which the summary output will be written.
digits
Number of digits.
x
Object of class lsem.
parindex
Vector of indices for parameters in plot function.
ask
A logical which asks for changing the graphic for each parameter.
ci
Logical indicating whether confidence intervals should be plotted.
lintrend
Logical indicating whether a linear trend should be plotted.
parsummary
Logical indicating whether a parameter summary should be displayed.
ylim
Plot parameter ylim. Can be a list, see Examples.
xlab
Plot parameter xlab. Can be a vector.
ylab
Plot parameter ylab. Can be a vector.
main
Plot parameter main. Can be a vector.
...
Further arguments to be passed to lavaan::sem.

Value

List with following entries List with following entries

References

Hildebrandt, A., Luedtke, O., Robitzsch, A., Sommer, C., & Wilhelm, O. (2016). Exploring factor model parameters across continuous variables with local structural equation models. Multivariate Behavioral Research, 51, 257-278. Hildebrandt, A., Wilhelm, O., & Robitzsch, A. (2009). Complementary and competing factor analytic approaches for the investigation of measurement invariance. Review of Psychology, 16, 87-102.

See Also

lsem.permutationTest

Examples

Run this code
## 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 <- 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 <- 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")
# 
# #********************************
# #*** 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 <- lsem.estimate( dat , moderator="age" , moderator.grid=moderator.grid , 
#            lavmodel=lavmodel , type="MGM" , std.lv=TRUE)
# summary(mod2)
# 
# # output step functions
# smod2 <- 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 <- 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 <- lsem.estimate( dat , moderator="age" , moderator.grid=moderator.grid , 
#                lavmodel=lavmodel , h=2 , standardized=TRUE)
# summary(mod4)
# # permutation test
# pmod1 <- lsem.permutationTest( mod4 , B=3 )    
# ## End(Not run)	

Run the code above in your browser using DataLab