Comparing Regression Parameters of Different lavaan Models Fitted to the Same Dataset
dmlavaan.Rd
The function dmlavaan
compares model parameters from different lavaan
models fitted to the same dataset. This leads to dependent coefficients.
Statistical inference is either conducted by M-estimation (i.e., robust
sandwich method; method="bootstrap"
) or bootstrap (method="bootstrap"
).
See Mize et al. (2019) or Weesie (1999) for more details.
Arguments
- fun1
lavaan function of the first model (e.g.,
"lavaan"
,"cfa"
, or"sem"
)- args1
arguments for lavaan function in the first model
- fun2
lavaan function of the second model (e.g.,
"lavaan"
,"cfa"
, or"sem"
)- args2
arguments for lavaan function in the second model
- method
estimation method for standard errors
- R
Number of bootstrap samples
Details
In bootstrap estimation, a normal approximation is applied in the
computation of confidence intervals. Hence, R
could be chosen
relatively small.
TO DO (not yet implemented):
1) | inclusion of sampling weights |
2) | cluster robust standard errors in hierarchical sampling |
3) | stratification |
Value
A list with following entries
- coef
Model parameters of both models
- vcov
Covariance matrix of model parameters of both models
- partable
Parameter table containing all univariate model parameters
- ...
More entries
References
Mize, T.D., Doan, L., & Long, J.S. (2019). A general framework for comparing predictions and marginal effects across models. Sociological Methodology, 49(1), 152-189. doi:10.1177/0081175019852763
Weesie, J. (1999) Seemingly unrelated estimation and the cluster-adjusted sandwich estimator. Stata Technical Bulletin, 9, 231-248.
Examples
if (FALSE) {
############################################################################
# EXAMPLE 1: Confirmatory factor analysis with and without fourth item
#############################################################################
#**** simulate data
N <- 200 # number of persons
I <- 4 # number of items
# loadings and error correlations
lam <- seq(.7,.4, len=I)
PSI <- diag( 1-lam^2 )
# define some model misspecification
sd_error <- .1
S1 <- matrix( c( -1.84, 0.39,-0.68, 0.13,
0.39,-1.31,-0.07,-0.27,
-0.68,-0.07, 0.90, 1.91,
0.13,-0.27, 1.91,-0.56 ), nrow=4, ncol=4, byrow=TRUE)
S1 <- ( S1 - mean(S1) ) / sd(S1) * sd_error
Sigma <- lam %*% t(lam) + PSI + S1
dat <- MASS::mvrnorm(n=N, mu=rep(0,I), Sigma=Sigma)
colnames(dat) <- paste0("X",1:4)
dat <- as.data.frame(dat)
rownames(Sigma) <- colnames(Sigma) <- colnames(dat)
#*** define two lavaan models
lavmodel1 <- "F=~ X1 + X2 + X3 + X4"
lavmodel2 <- "F=~ X1 + X2 + X3"
#*** define lavaan estimation arguments and functions
fun2 <- fun1 <- "cfa"
args1 <- list( model=lavmodel1, data=dat, std.lv=TRUE, estimator="MLR")
args2 <- args1
args2$model <- lavmodel2
#* run model comparison
res1 <- sirt::dmlavaan( fun1=fun1, args1=args1, fun2=fun2, args2=args2)
# inspect results
sirt:::print_digits(res1$partable, digits=3)
}