37.4 Second-Order Growth Model
Una volta che abbiamo dimostrato che l’invarianza forte o rigorosa è supportata per il modello di crescita latente, possiamo esaminare i cambiamenti nei punteggi fattoriali.
In questo esempio, imponiamo l’invarianza fattoriale rigorosa e modelliamo il cambiamento nei punteggi fattoriali del rendimento accademico dei bambini utilizzando un Second-Order Growth Model. Si noti che devono essere apportate alcune altre modifiche per l’identificazione e la scala.
growth_strict_invar <- " #opening quote
#factor loadings
eta1 =~ 15.176*s_g3+ #constrained for identification and scaling
lambda_R*r_g3+
lambda_M*m_g3
eta2 =~ 15.176*s_g5+
lambda_R*r_g5+
lambda_M*m_g5
eta3 =~ 15.176*s_g8+
lambda_R*r_g8+
lambda_M*m_g8
#latent variable variances
eta1~~psi*eta1
eta2~~psi*eta2
eta3~~psi*eta3
#latent variable covariances
eta1~~0*eta2 #constrained to zero
eta1~~0*eta3
eta2~~0*eta3
#unique variances
s_g3~~theta_S*s_g3 #adding constraints with names
s_g5~~theta_S*s_g5
s_g8~~theta_S*s_g8
r_g3~~theta_R*r_g3
r_g5~~theta_R*r_g5
r_g8~~theta_R*r_g8
m_g3~~theta_M*m_g3
m_g5~~theta_M*m_g5
m_g8~~theta_M*m_g8
#unique covariances
s_g3~~s_g5
s_g3~~s_g8
s_g5~~s_g8
r_g3~~r_g5
r_g3~~r_g8
r_g5~~r_g8
m_g3~~m_g5
m_g3~~m_g8
m_g5~~m_g8
#latent variable intercepts
eta1~0*1 #fixed to zero
eta2~0*1
eta3~0*1
#observed variable intercepts
s_g3~tau_S*1 #removed time-specific subscripts
s_g5~tau_S*1
s_g8~tau_S*1
r_g3~tau_R*1
r_g5~tau_R*1
r_g8~tau_R*1
m_g3~tau_M*1
m_g5~tau_M*1
m_g8~tau_M*1
#second-order latent basis growth
#growth factors
xi_1 =~ 1*eta1+ #intercept factor
1*eta2+
1*eta3
xi_2 =~ 0*eta1 #latent basis slope factor
+start(0.5)*eta2
+1*eta3
#factor variances & covariance
xi_1~~start(.8)*xi_1
xi_2~~start(.5)*xi_2
xi_1~~start(0)*xi_2
#factor intercepts
xi_1~0*1
xi_2~1
" # closing quote
Adattiamo il modello ai dati.
Esaminiamo la soluzione.
summary(fit_growth, fit.measures = TRUE)
#> lavaan 0.6.15 ended normally after 192 iterations
#>
#> Estimator ML
#> Optimization method NLMINB
#> Number of model parameters 41
#> Number of equality constraints 18
#>
#> Used Total
#> Number of observations 1478 2108
#> Number of missing patterns 24
#>
#> Model Test User Model:
#>
#> Test statistic 606.985
#> Degrees of freedom 31
#> P-value (Chi-square) 0.000
#>
#> Model Test Baseline Model:
#>
#> Test statistic 11669.413
#> Degrees of freedom 36
#> P-value 0.000
#>
#> User Model versus Baseline Model:
#>
#> Comparative Fit Index (CFI) 0.950
#> Tucker-Lewis Index (TLI) 0.943
#>
#> Robust Comparative Fit Index (CFI) 0.951
#> Robust Tucker-Lewis Index (TLI) 0.943
#>
#> Loglikelihood and Information Criteria:
#>
#> Loglikelihood user model (H0) -42203.827
#> Loglikelihood unrestricted model (H1) -41900.334
#>
#> Akaike (AIC) 84453.654
#> Bayesian (BIC) 84575.518
#> Sample-size adjusted Bayesian (SABIC) 84502.454
#>
#> Root Mean Square Error of Approximation:
#>
#> RMSEA 0.112
#> 90 Percent confidence interval - lower 0.104
#> 90 Percent confidence interval - upper 0.120
#> P-value H_0: RMSEA <= 0.050 0.000
#> P-value H_0: RMSEA >= 0.080 1.000
#>
#> Robust RMSEA 0.131
#> 90 Percent confidence interval - lower 0.121
#> 90 Percent confidence interval - upper 0.140
#> P-value H_0: Robust RMSEA <= 0.050 0.000
#> P-value H_0: Robust RMSEA >= 0.080 1.000
#>
#> Standardized Root Mean Square Residual:
#>
#> SRMR 0.113
#>
#> Parameter Estimates:
#>
#> Standard errors Standard
#> Information Observed
#> Observed information based on Hessian
#>
#> Latent Variables:
#> Estimate Std.Err z-value P(>|z|)
#> eta1 =~
#> s_g3 15.176
#> r_g3 (lm_R) 22.991 0.284 81.092 0.000
#> m_g3 (lm_M) 21.237 0.248 85.618 0.000
#> eta2 =~
#> s_g5 15.176
#> r_g5 (lm_R) 22.991 0.284 81.092 0.000
#> m_g5 (lm_M) 21.237 0.248 85.618 0.000
#> eta3 =~
#> s_g8 15.176
#> r_g8 (lm_R) 22.991 0.284 81.092 0.000
#> m_g8 (lm_M) 21.237 0.248 85.618 0.000
#> xi_1 =~
#> eta1 1.000
#> eta2 1.000
#> eta3 1.000
#> xi_2 =~
#> eta1 0.000
#> eta2 0.524 0.006 85.608 0.000
#> eta3 1.000
#>
#> Covariances:
#> Estimate Std.Err z-value P(>|z|)
#> .eta1 ~~
#> .eta2 0.000
#> .eta3 0.000
#> .eta2 ~~
#> .eta3 0.000
#> .s_g3 ~~
#> .s_g5 28.704 3.098 9.265 0.000
#> .s_g8 6.807 3.311 2.056 0.040
#> .s_g5 ~~
#> .s_g8 5.742 3.289 1.746 0.081
#> .r_g3 ~~
#> .r_g5 113.232 8.622 13.134 0.000
#> .r_g8 67.856 9.358 7.251 0.000
#> .r_g5 ~~
#> .r_g8 78.009 9.529 8.187 0.000
#> .m_g3 ~~
#> .m_g5 113.479 7.277 15.594 0.000
#> .m_g8 92.852 8.000 11.607 0.000
#> .m_g5 ~~
#> .m_g8 100.693 7.932 12.694 0.000
#> xi_1 ~~
#> xi_2 -0.061 0.019 -3.114 0.002
#>
#> Intercepts:
#> Estimate Std.Err z-value P(>|z|)
#> .eta1 0.000
#> .eta2 0.000
#> .eta3 0.000
#> .s_g3 (ta_S) 51.423 0.449 114.450 0.000
#> .s_g5 (ta_S) 51.423 0.449 114.450 0.000
#> .s_g8 (ta_S) 51.423 0.449 114.450 0.000
#> .r_g3 (ta_R) 126.339 0.704 179.381 0.000
#> .r_g5 (ta_R) 126.339 0.704 179.381 0.000
#> .r_g8 (ta_R) 126.339 0.704 179.381 0.000
#> .m_g3 (ta_M) 100.181 0.653 153.454 0.000
#> .m_g5 (ta_M) 100.181 0.653 153.454 0.000
#> .m_g8 (ta_M) 100.181 0.653 153.454 0.000
#> xi_1 0.000
#> xi_2 1.947 0.024 82.219 0.000
#>
#> Variances:
#> Estimate Std.Err z-value P(>|z|)
#> .eta1 (psi) 0.024 0.004 6.026 0.000
#> .eta2 (psi) 0.024 0.004 6.026 0.000
#> .eta3 (psi) 0.024 0.004 6.026 0.000
#> .s_g3 (th_S) 60.273 2.929 20.580 0.000
#> .s_g5 (th_S) 60.273 2.929 20.580 0.000
#> .s_g8 (th_S) 60.273 2.929 20.580 0.000
#> .r_g3 (th_R) 208.603 8.162 25.557 0.000
#> .r_g5 (th_R) 208.603 8.162 25.557 0.000
#> .r_g8 (th_R) 208.603 8.162 25.557 0.000
#> .m_g3 (th_M) 173.813 7.217 24.083 0.000
#> .m_g5 (th_M) 173.813 7.217 24.083 0.000
#> .m_g8 (th_M) 173.813 7.217 24.083 0.000
#> xi_1 0.982 0.042 23.184 0.000
#> xi_2 0.110 0.018 6.277 0.000
Generiamo il diagramma di percorso.