我想用三个调节器做结构方程建模。我的变量是吸引力(X),自我价值(Y),年龄(A),性别(G)和社会地位(S)。数据是纵向的,分为两波:t1和t2。为了找出X和Y之间存在哪种关系,这种关系朝哪个方向发展,以及这种关系如何被A, G和S调节,我想使用交叉滞后模型,其中X_t2和Y_t2是结果变量。我用的是r包lavaan。模型如下所示:
modelCLP <- '
# regressions
X_t2 ~ X_t1 + Y_t1 + A + G + S + Y_t1 * A + Y_t1 * G + Y_t1 * S
Y_t2 ~ Y_t1 + X_t2 + A + G + S + X_t1 * A + X_t1 * G + X_t1 * S
# co-movements
X_t2 ~~ Y_t2
X_t1 ~~ Y_t1
'
fit <- sem(modelCLP, data = datenB)
summary(fit, standardized = TRUE, fit.measures = TRUE)
我输出的问题是,对于等式1中的审核员和等式2中的审核员,我得到了相同的结果。当我对版主进行三次独立分析时,我得到了三种不同的结果。当我计算上面的模型时,我得到了这些结果:
lavaan 0.6-10 ended normally after 20 iterations
Estimator ML
Optimization method NLMINB
Number of model parameters 13
Number of equality constraints 4
Used Total
Number of observations 871 2406
Model Test User Model:
Test statistic 14.959
Degrees of freedom 4
P-value (Chi-square) 0.005
Model Test Baseline Model:
Test statistic 1024.222
Degrees of freedom 11
P-value 0.000
User Model versus Baseline Model:
Comparative Fit Index (CFI) 0.989
Tucker-Lewis Index (TLI) 0.970
Loglikelihood and Information Criteria:
Loglikelihood user model (H0) -1967.499
Loglikelihood unrestricted model (H1) -1960.020
Akaike (AIC) 3952.999
Bayesian (BIC) 3995.926
Sample-size adjusted Bayesian (BIC) 3967.344
Root Mean Square Error of Approximation:
RMSEA 0.056
90 Percent confidence interval - lower 0.028
90 Percent confidence interval - upper 0.088
P-value RMSEA <= 0.05 0.320
Standardized Root Mean Square Residual:
SRMR 0.018
Parameter Estimates:
Standard errors Standard
Information Expected
Information saturated (h1) model Structured
Regressions:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
X_t2 ~
X_t1 0.382 0.018 21.245 0.000 0.382 0.600
Y_t1 0.100 0.034 2.902 0.004 0.100 0.083
A (Y_t1) 0.002 0.002 1.395 0.163 0.002 0.037
G (Y_t1) 0.002 0.002 1.395 0.163 0.002 0.001
S (Y_t1) 0.002 0.002 1.395 0.163 0.002 0.003
Y_t2 ~
Y_t1 0.716 0.034 21.180 0.000 0.716 0.594
X_t1 0.064 0.018 3.617 0.000 0.064 0.100
A (X_t1) 0.004 0.001 2.724 0.006 0.004 0.071
G (X_t1) 0.004 0.001 2.724 0.006 0.004 0.002
S (X_t1) 0.004 0.001 2.724 0.006 0.004 0.006
Covariances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.X_t2 ~~
.Y_t2 0.104 0.020 5.287 0.000 0.104 0.182
Variances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.X_t2 0.580 0.028 20.869 0.000 0.580 0.581
.Y_t2 0.560 0.027 20.869 0.000 0.560 0.559
我该怎么做才能得到三个版主不同的结果?是否有更好的方法在R中使用多个版主来做SEM ?
我不确定lavaan在您的代码中究竟做了什么,但我相信可能'A', 'G'和'S'被认为是模型中的约束。
据我所知,在几乎(?)所有工具中运行SEM分析之前,我们需要准备交互(调节)条款…有几种方法可以做到。
- 一是计算潜在变量的因子得分,生成因子得分与调节因子之间的交互项乘积。 在R中,另一种不需要计算因子分数的方法是,例如,使用
- 从您的代码中,似乎您没有处理潜在变量,因此,计算变量之间的乘积就足够了:
semTools
包中的indProd()
函数。modelCLP$A_Y_t1=modelCLP$A*modelCLP$Y_t1
modelCLP$G_Y_t1=modelCLP$G*modelCLP$Y_t1
modelCLP$S_Y_t1=modelCLP$S*modelCLP$Y_t1
modelCLP$A_X_t1=modelCLP$A*modelCLP$Y_t1
modelCLP$G_X_t1=modelCLP$G*modelCLP$X_t1
modelCLP$S_X_t1=modelCLP$S*modelCLP$X_t1
modelCLP <- '
# regressions
X_t2 ~ X_t1 + Y_t1 + A + G + S + A_Y_t1 + G_Y_t1 + S_Y_t1
Y_t2 ~ Y_t1 + X_t2 + A + G + S + A_X_t1 + G_X_t1 + S_X_t1
# co-movements
X_t2 ~~ Y_t2
X_t1 ~~ Y_t1'
注意:您可能需要在所有变量(包括这些交互项)之间添加协方差。
fit <- sem(modelCLP, data = datenB)
summary(fit, standardized = TRUE, fit.measures = TRUE)