SEM与r的适度分析(交叉滞后模型)



我想用三个调节器做结构方程建模。我的变量是吸引力(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)

最新更新