Due 5/12/14
1997 Child Development article by N. Eisenberg et al. (link)
It's missing all the error terms for endogenous variables (disturbances for latent variables) and variances for exogenous variables, but those were probably left off intentionally to avoid cluttering the figure unnecessarily.
They also included method correlations (all the teacher report indicators were correlated, etc.), which are not drawn in the figure.
“Error variances are correlated across rater (e.g. all error variances were correlated across teachers).” p.302
parent-reported negative emotionality (.353)-> negative emotionality (.415)-> resiliency (.542)-> socially appropriate behavior (.531)-> peer report = .0422
PLUS
parent-reported negative emotionality (.353)-> negative emotionality (-.69)-> emotional control (.863)-> resiliency (.542)-> socially appropriate behavior (.531)-> peer report = -.0605
PLUS
parent-reported negative emotionality (.353)-> negative emotionality (-.60)-> behavioral regulation (-.353)-> resiliency (.542)-> socially appropriate behavior (.531)-> peer report = .0215
PLUS
parent-reported negative emotionality (.353)-> negative emotionality (-.60)-> behavioral regulation (.533)-> socially appropriate behavior (.531)-> peer report = .0599
TOTAL IMPLIED CORRELATION = .0631
I can do this one, too, I just don't have time right now…
See attached mplus files: eisenberg measurement.inp, eisenberg measurement.out
setwd("/Users/TARDIS/Dropbox/SEM")
library(lavaan)
## This is lavaan 0.5-16
## lavaan is BETA software! Please report any bugs.
data <- as.matrix(read.table("eisenberg.dat", fill=TRUE))
# last column is weird and nearly empty with just one value (the overall SD maybe?). Remove it.
data <- data[,1:13]
# take off first row, which is the SDs
SDs <- data[1,]
# remaining rows (other than the 1st) are the correlation matrix
corrs <- data[-1,]
# convert to covariances for use by lavaan
covs <- cor2cov(corrs, SDs, names = c("t_SocApp", "t_SocStat", "f_SocStat", "f_SocApp",
"p_AttnCtrl", "t_AttnCtrl", "p_BehReg", "t_BehReg",
"p_Resil", "t_Resil", "b_BehReg", "p_NegEmo", "t_NegEmo"))
# http://lavaan.ugent.be/tutorial/cov.html
measurement.model <- "
# latent variables
SocApp =~ t_SocApp + f_SocApp
SocStat =~ t_SocStat + f_SocStat
NegEmo =~ t_NegEmo + p_NegEmo
Resil =~ t_Resil + p_Resil
AttnCtrl =~ t_AttnCtrl + p_AttnCtrl
BehReg =~ t_BehReg + p_BehReg + b_BehReg
# correlated residuals
t_SocApp ~~ t_SocStat + t_NegEmo + t_Resil + t_AttnCtrl + t_BehReg
t_SocStat ~~ t_NegEmo + t_Resil + t_AttnCtrl + t_BehReg
t_NegEmo ~~ t_Resil + t_AttnCtrl + t_BehReg
t_Resil ~~ t_AttnCtrl + t_BehReg
t_AttnCtrl ~~ t_BehReg
p_NegEmo ~~ p_Resil + p_AttnCtrl + p_BehReg
p_Resil ~~ p_AttnCtrl + p_BehReg
p_AttnCtrl ~~ p_BehReg
f_SocApp ~~ f_SocStat
"
fit <- sem(measurement.model,
sample.cov = covs,
sample.nobs = 193)
## Warning: lavaan WARNING: covariance matrix of latent variables is not
## positive definite; use inspect(fit,"cov.lv") to investigate.
# in response to an error message about the cov matrix of latent variables
inspect(fit,"cov.lv")
## SocApp SocStt NegEmo Resil AttnCt BehReg
## SocApp 0.389
## SocStat 0.256 0.255
## NegEmo -0.247 -0.211 0.351
## Resil 0.247 0.190 -0.271 0.357
## AttnCtrl 0.228 0.170 -0.169 0.175 0.174
## BehReg 0.437 0.229 -0.254 0.145 0.264 0.670
summary(fit, standardized = TRUE)
## lavaan (0.5-16) converged normally after 104 iterations
##
## Number of observations 193
##
## Estimator ML
## Minimum Function Test Statistic 36.304
## Degrees of freedom 28
## P-value (Chi-square) 0.135
##
## Parameter estimates:
##
## Information Expected
## Standard Errors Standard
##
## Estimate Std.err Z-value P(>|z|) Std.lv Std.all
## Latent variables:
## SocApp =~
## t_SocApp 1.000 0.624 0.770
## f_SocApp 0.201 0.037 5.481 0.000 0.126 0.525
## SocStat =~
## t_SocStat 1.000 0.505 0.574
## f_SocStat 0.771 0.176 4.380 0.000 0.390 0.699
## NegEmo =~
## t_NegEmo 1.000 0.592 0.676
## p_NegEmo 1.227 0.386 3.179 0.001 0.727 0.367
## Resil =~
## t_Resil 1.000 0.598 0.678
## p_Resil 0.382 0.126 3.038 0.002 0.229 0.375
## AttnCtrl =~
## t_AttnCtrl 1.000 0.417 0.732
## p_AttnCtrl 0.527 0.091 5.791 0.000 0.220 0.577
## BehReg =~
## t_BehReg 1.000 0.819 0.774
## p_BehReg 0.564 0.097 5.795 0.000 0.461 0.594
## b_BehReg 0.523 0.110 4.750 0.000 0.428 0.438
##
## Covariances:
## t_SocApp ~~
## t_SocStat 0.136 0.053 2.550 0.011 0.136 0.366
## t_NegEmo -0.164 0.058 -2.838 0.005 -0.164 -0.492
## t_Resil 0.023 0.058 0.396 0.692 0.023 0.069
## t_AttnCtrl 0.083 0.036 2.325 0.020 0.083 0.412
## t_BehReg 0.070 0.064 1.094 0.274 0.070 0.201
## t_SocStat ~~
## t_NegEmo -0.196 0.061 -3.198 0.001 -0.196 -0.422
## t_Resil 0.205 0.061 3.381 0.001 0.205 0.440
## t_AttnCtrl 0.060 0.037 1.618 0.106 0.060 0.216
## t_BehReg -0.154 0.057 -2.716 0.007 -0.154 -0.319
## t_NegEmo ~~
## t_Resil -0.262 0.090 -2.911 0.004 -0.262 -0.628
## t_AttnCtrl -0.075 0.039 -1.920 0.055 -0.075 -0.298
## t_BehReg -0.084 0.063 -1.324 0.185 -0.084 -0.195
## t_Resil ~~
## t_AttnCtrl 0.081 0.042 1.935 0.053 0.081 0.320
## t_BehReg -0.081 0.060 -1.337 0.181 -0.081 -0.186
## t_AttnCtrl ~~
## t_BehReg 0.016 0.040 0.391 0.696 0.016 0.061
## p_NegEmo ~~
## p_Resil -0.562 0.095 -5.915 0.000 -0.562 -0.539
## p_AttnCtrl -0.252 0.051 -4.919 0.000 -0.252 -0.440
## p_BehReg -0.287 0.096 -2.976 0.003 -0.287 -0.249
## p_Resil ~~
## p_AttnCtrl 0.072 0.016 4.464 0.000 0.072 0.407
## p_BehReg 0.043 0.029 1.485 0.138 0.043 0.120
## p_AttnCtrl ~~
## p_BehReg 0.068 0.018 3.679 0.000 0.068 0.347
## f_SocApp ~~
## f_SocStat 0.017 0.009 1.891 0.059 0.017 0.206
## SocApp ~~
## SocStat 0.256 0.067 3.804 0.000 0.811 0.811
## NegEmo -0.247 0.070 -3.514 0.000 -0.669 -0.669
## Resil 0.247 0.069 3.568 0.000 0.662 0.662
## AttnCtrl 0.228 0.048 4.736 0.000 0.876 0.876
## BehReg 0.437 0.087 5.015 0.000 0.855 0.855
## SocStat ~~
## NegEmo -0.211 0.065 -3.223 0.001 -0.705 -0.705
## Resil 0.190 0.063 3.020 0.003 0.630 0.630
## AttnCtrl 0.170 0.045 3.755 0.000 0.806 0.806
## BehReg 0.229 0.062 3.683 0.000 0.552 0.552
## NegEmo ~~
## Resil -0.271 0.097 -2.801 0.005 -0.766 -0.766
## AttnCtrl -0.169 0.046 -3.638 0.000 -0.684 -0.684
## BehReg -0.254 0.077 -3.280 0.001 -0.523 -0.523
## Resil ~~
## AttnCtrl 0.175 0.049 3.597 0.000 0.703 0.703
## BehReg 0.145 0.068 2.138 0.033 0.295 0.295
## AttnCtrl ~~
## BehReg 0.264 0.054 4.854 0.000 0.774 0.774
##
## Variances:
## t_SocApp 0.267 0.064 0.267 0.407
## f_SocApp 0.041 0.005 0.041 0.724
## t_SocStat 0.519 0.078 0.519 0.670
## f_SocStat 0.159 0.036 0.159 0.511
## t_NegEmo 0.416 0.113 0.416 0.542
## p_NegEmo 3.400 0.390 3.400 0.866
## t_Resil 0.419 0.124 0.419 0.540
## p_Resil 0.320 0.037 0.320 0.860
## t_AttnCtrl 0.151 0.031 0.151 0.465
## p_AttnCtrl 0.097 0.012 0.097 0.667
## t_BehReg 0.448 0.111 0.448 0.401
## p_BehReg 0.391 0.051 0.391 0.648
## b_BehReg 0.772 0.086 0.772 0.808
## SocApp 0.389 0.084 1.000 1.000
## SocStat 0.255 0.081 1.000 1.000
## NegEmo 0.351 0.120 1.000 1.000
## Resil 0.357 0.131 1.000 1.000
## AttnCtrl 0.174 0.040 1.000 1.000
## BehReg 0.670 0.144 1.000 1.000
# Modification indices can be requested by adding the argument modindices = TRUE in the summary() call, or by calling the function modindices() directly. The modindices() function returns a data frame, which you can sort or filter to extract what you want.
# http://lavaan.ugent.be/tutorial/modindices.html
mi <- modindices(fit)
mi[mi$mi > 4,] #just return mis greater than 4
## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 1 <NA> <NA> <NA> NA NA NA NA NA
## 2 <NA> <NA> <NA> NA NA NA NA NA
## 3 <NA> <NA> <NA> NA NA NA NA NA
## 4 NegEmo =~ b_BehReg 4.361 -0.420 -0.249 -0.254 -0.254
## 5 <NA> <NA> <NA> NA NA NA NA NA
## 6 <NA> <NA> <NA> NA NA NA NA NA
## 7 <NA> <NA> <NA> NA NA NA NA NA
## 8 <NA> <NA> <NA> NA NA NA NA NA
## 9 <NA> <NA> <NA> NA NA NA NA NA
## 10 <NA> <NA> <NA> NA NA NA NA NA
## 11 p_NegEmo ~~ t_BehReg 4.196 0.208 0.208 0.099 0.099
## 12 <NA> <NA> <NA> NA NA NA NA NA
## 13 <NA> <NA> <NA> NA NA NA NA NA
## 14 p_AttnCtrl ~~ t_BehReg 6.765 0.062 0.062 0.154 0.154
See attached mplus files: eisenberg full mediation.inp, eisenberg full mediation.out
mediation.model <- '
# latent variables
SocApp =~ t_SocApp + f_SocApp
SocStat =~ t_SocStat + f_SocStat
NegEmo =~ t_NegEmo + p_NegEmo
Resil =~ t_Resil + p_Resil
AttnCtrl =~ t_AttnCtrl + p_AttnCtrl
BehReg =~ t_BehReg + p_BehReg + b_BehReg
# regressions
Resil ~ NegEmo + AttnCtrl + BehReg
SocApp ~ Resil + 0*NegEmo + 0*AttnCtrl + 0*BehReg + 0*SocStat
SocStat ~ Resil + 0*NegEmo + 0*AttnCtrl + 0*BehReg + 0*SocApp
# correlated residuals
t_SocApp ~~ t_SocStat + t_NegEmo + t_Resil + t_AttnCtrl + t_BehReg
t_SocStat ~~ t_NegEmo + t_Resil + t_AttnCtrl + t_BehReg
t_NegEmo ~~ t_Resil + t_AttnCtrl + t_BehReg
t_Resil ~~ t_AttnCtrl + t_BehReg
t_AttnCtrl ~~ t_BehReg
p_NegEmo ~~ p_Resil + p_AttnCtrl + p_BehReg
p_Resil ~~ p_AttnCtrl + p_BehReg
p_AttnCtrl ~~ p_BehReg
f_SocApp ~~ f_SocStat
'
fit <- sem(mediation.model,
sample.cov = covs,
sample.nobs = 193)
## Warning: lavaan WARNING: some estimated variances are negative
## Warning: lavaan WARNING: covariance matrix of latent variables is not positive definite; use inspect(fit,"cov.lv") to investigate.
# I got a warning about negative variances, and another warning about the cov matrix of my latent variables
inspect(fit,"cov.lv")
## SocApp SocStt NegEmo Resil AttnCt BehReg
## SocApp 0.383
## SocStat 0.249 0.227
## NegEmo -0.268 -0.174 0.310
## Resil 0.244 0.158 -0.170 0.155
## AttnCtrl 0.231 0.150 -0.156 0.146 0.170
## BehReg 0.392 0.254 -0.302 0.249 0.275 0.613
summary(fit, standardized = TRUE)
## lavaan (0.5-16) converged normally after 103 iterations
##
## Number of observations 193
##
## Estimator ML
## Minimum Function Test Statistic 54.145
## Degrees of freedom 35
## P-value (Chi-square) 0.020
##
## Parameter estimates:
##
## Information Expected
## Standard Errors Standard
## Warning: NaNs produced
## Estimate Std.err Z-value P(>|z|) Std.lv Std.all
## Latent variables:
## SocApp =~
## t_SocApp 1.000 0.619 0.767
## f_SocApp 0.214 0.039 5.489 0.000 0.132 0.552
## SocStat =~
## t_SocStat 1.000 0.476 0.546
## f_SocStat 0.799 0.187 4.279 0.000 0.381 0.682
## NegEmo =~
## t_NegEmo 1.000 0.557 0.637
## p_NegEmo 1.176 0.404 2.908 0.004 0.655 0.331
## Resil =~
## t_Resil 1.000 0.394 0.444
## p_Resil 0.403 0.149 2.700 0.007 0.159 0.261
## AttnCtrl =~
## t_AttnCtrl 1.000 0.412 0.723
## p_AttnCtrl 0.534 0.094 5.665 0.000 0.220 0.578
## BehReg =~
## t_BehReg 1.000 0.783 0.743
## p_BehReg 0.561 0.101 5.534 0.000 0.439 0.566
## b_BehReg 0.544 0.116 4.682 0.000 0.426 0.435
##
## Regressions:
## Resil ~
## NegEmo -0.211 0.136 -1.549 0.121 -0.298 -0.298
## AttnCtrl 0.656 0.271 2.423 0.015 0.687 0.687
## BehReg 0.008 0.132 0.061 0.951 0.016 0.016
## SocApp ~
## Resil 1.574 0.321 4.899 0.000 1.001 1.001
## NegEmo 0.000 0.000 0.000
## AttnCtrl 0.000 0.000 0.000
## BehReg 0.000 0.000 0.000
## SocStat 0.000 0.000 0.000
## SocStat ~
## Resil 1.021 0.218 4.680 0.000 0.844 0.844
## NegEmo 0.000 0.000 0.000
## AttnCtrl 0.000 0.000 0.000
## BehReg 0.000 0.000 0.000
## SocApp 0.000 0.000 0.000
##
## Covariances:
## t_SocApp ~~
## t_SocStat 0.131 0.053 2.496 0.013 0.131 0.346
## t_NegEmo -0.139 0.054 -2.560 0.010 -0.139 -0.399
## t_Resil 0.019 0.051 0.364 0.716 0.019 0.045
## t_AttnCtrl 0.074 0.035 2.127 0.033 0.074 0.364
## t_BehReg 0.111 0.060 1.867 0.062 0.111 0.305
## t_SocStat ~~
## t_NegEmo -0.225 0.057 -3.954 0.000 -0.225 -0.457
## t_Resil 0.241 0.058 4.157 0.000 0.241 0.415
## t_AttnCtrl 0.075 0.035 2.155 0.031 0.075 0.259
## t_BehReg -0.178 0.058 -3.042 0.002 -0.178 -0.345
## t_NegEmo ~~
## t_Resil -0.362 0.064 -5.681 0.000 -0.362 -0.677
## t_AttnCtrl -0.088 0.037 -2.395 0.017 -0.088 -0.332
## t_BehReg -0.044 0.066 -0.669 0.503 -0.044 -0.092
## t_Resil ~~
## t_AttnCtrl 0.114 0.036 3.147 0.002 0.114 0.366
## t_BehReg -0.175 0.060 -2.934 0.003 -0.175 -0.313
## t_AttnCtrl ~~
## t_BehReg 0.006 0.041 0.136 0.892 0.006 0.020
## p_NegEmo ~~
## p_Resil -0.610 0.094 -6.456 0.000 -0.610 -0.555
## p_AttnCtrl -0.259 0.051 -5.060 0.000 -0.259 -0.447
## p_BehReg -0.248 0.098 -2.525 0.012 -0.248 -0.208
## p_Resil ~~
## p_AttnCtrl 0.074 0.016 4.759 0.000 0.074 0.408
## p_BehReg 0.019 0.029 0.650 0.515 0.019 0.051
## p_AttnCtrl ~~
## p_BehReg 0.063 0.019 3.372 0.001 0.063 0.316
## f_SocApp ~~
## f_SocStat 0.016 0.009 1.769 0.077 0.016 0.193
## NegEmo ~~
## AttnCtrl -0.156 0.044 -3.561 0.000 -0.681 -0.681
## BehReg -0.302 0.078 -3.862 0.000 -0.692 -0.692
## AttnCtrl ~~
## BehReg 0.275 0.055 4.996 0.000 0.852 0.852
##
## Variances:
## t_SocApp 0.269 0.064 0.269 0.412
## f_SocApp 0.040 0.005 0.040 0.695
## t_SocStat 0.535 0.076 0.535 0.702
## f_SocStat 0.167 0.035 0.167 0.535
## t_NegEmo 0.455 0.100 0.455 0.594
## p_NegEmo 3.492 0.389 3.492 0.891
## t_Resil 0.630 0.076 0.630 0.802
## p_Resil 0.346 0.036 0.346 0.932
## t_AttnCtrl 0.155 0.031 0.155 0.478
## p_AttnCtrl 0.096 0.012 0.096 0.666
## t_BehReg 0.496 0.108 0.496 0.447
## p_BehReg 0.410 0.051 0.410 0.680
## b_BehReg 0.774 0.086 0.774 0.810
## SocApp -0.001 0.041 -0.002 -0.002
## SocStat 0.065 0.032 0.288 0.288
## NegEmo 0.310 0.105 1.000 1.000
## Resil 0.021 0.014 0.135 0.135
## AttnCtrl 0.170 0.039 1.000 1.000
## BehReg 0.613 0.137 1.000 1.000
# Modification indices
mi <- modindices(fit)
# add a direct relationship between BehReg and SocApp
final.model <- '
# latent variables
SocApp =~ t_SocApp + f_SocApp
SocStat =~ t_SocStat + f_SocStat
NegEmo =~ t_NegEmo + p_NegEmo
Resil =~ t_Resil + p_Resil
AttnCtrl =~ t_AttnCtrl + p_AttnCtrl
BehReg =~ t_BehReg + p_BehReg + b_BehReg
# regressions
Resil ~ NegEmo + AttnCtrl + BehReg
SocApp ~ Resil + BehReg + 0*NegEmo + 0*AttnCtrl + 0*SocStat
SocStat ~ Resil + 0*NegEmo + 0*AttnCtrl + 0*BehReg + 0*SocApp
# correlated residuals
t_SocApp ~~ t_SocStat + t_NegEmo + t_Resil + t_AttnCtrl + t_BehReg
t_SocStat ~~ t_NegEmo + t_Resil + t_AttnCtrl + t_BehReg
t_NegEmo ~~ t_Resil + t_AttnCtrl + t_BehReg
t_Resil ~~ t_AttnCtrl + t_BehReg
t_AttnCtrl ~~ t_BehReg
p_NegEmo ~~ p_Resil + p_AttnCtrl + p_BehReg
p_Resil ~~ p_AttnCtrl + p_BehReg
p_AttnCtrl ~~ p_BehReg
f_SocApp ~~ f_SocStat
'
fit <- sem(final.model,
sample.cov = covs,
sample.nobs = 193)
inspect(fit,"cov.lv")
## SocApp SocStt NegEmo Resil AttnCt BehReg
## SocApp 0.398
## SocStat 0.254 0.264
## NegEmo -0.269 -0.214 0.325
## Resil 0.235 0.208 -0.198 0.193
## AttnCtrl 0.235 0.170 -0.163 0.158 0.173
## BehReg 0.433 0.219 -0.275 0.202 0.269 0.666
summary(fit, standardized = TRUE)
## lavaan (0.5-16) converged normally after 111 iterations
##
## Number of observations 193
##
## Estimator ML
## Minimum Function Test Statistic 45.073
## Degrees of freedom 34
## P-value (Chi-square) 0.097
##
## Parameter estimates:
##
## Information Expected
## Standard Errors Standard
##
## Estimate Std.err Z-value P(>|z|) Std.lv Std.all
## Latent variables:
## SocApp =~
## t_SocApp 1.000 0.631 0.779
## f_SocApp 0.201 0.037 5.512 0.000 0.127 0.532
## SocStat =~
## t_SocStat 1.000 0.514 0.583
## f_SocStat 0.752 0.172 4.367 0.000 0.386 0.694
## NegEmo =~
## t_NegEmo 1.000 0.570 0.650
## p_NegEmo 1.230 0.390 3.153 0.002 0.702 0.354
## Resil =~
## t_Resil 1.000 0.439 0.494
## p_Resil 0.410 0.140 2.922 0.003 0.180 0.295
## AttnCtrl =~
## t_AttnCtrl 1.000 0.416 0.727
## p_AttnCtrl 0.533 0.092 5.811 0.000 0.221 0.580
## BehReg =~
## t_BehReg 1.000 0.816 0.772
## p_BehReg 0.563 0.099 5.701 0.000 0.459 0.590
## b_BehReg 0.526 0.112 4.712 0.000 0.429 0.439
##
## Regressions:
## Resil ~
## NegEmo -0.312 0.162 -1.927 0.054 -0.406 -0.406
## AttnCtrl 0.935 0.317 2.947 0.003 0.885 0.885
## BehReg -0.204 0.125 -1.629 0.103 -0.379 -0.379
## SocApp ~
## Resil 0.790 0.212 3.728 0.000 0.549 0.549
## BehReg 0.410 0.098 4.192 0.000 0.530 0.530
## NegEmo 0.000 0.000 0.000
## AttnCtrl 0.000 0.000 0.000
## SocStat 0.000 0.000 0.000
## SocStat ~
## Resil 1.081 0.227 4.762 0.000 0.924 0.924
## NegEmo 0.000 0.000 0.000
## AttnCtrl 0.000 0.000 0.000
## BehReg 0.000 0.000 0.000
## SocApp 0.000 0.000 0.000
##
## Covariances:
## t_SocApp ~~
## t_SocStat 0.136 0.053 2.561 0.010 0.136 0.374
## t_NegEmo -0.147 0.053 -2.756 0.006 -0.147 -0.433
## t_Resil 0.039 0.050 0.772 0.440 0.039 0.099
## t_AttnCtrl 0.077 0.035 2.207 0.027 0.077 0.385
## t_BehReg 0.074 0.063 1.161 0.246 0.074 0.215
## t_SocStat ~~
## t_NegEmo -0.196 0.062 -3.186 0.001 -0.196 -0.411
## t_Resil 0.202 0.063 3.181 0.001 0.202 0.366
## t_AttnCtrl 0.060 0.037 1.618 0.106 0.060 0.214
## t_BehReg -0.151 0.056 -2.714 0.007 -0.151 -0.314
## t_NegEmo ~~
## t_Resil -0.339 0.066 -5.101 0.000 -0.339 -0.658
## t_AttnCtrl -0.083 0.037 -2.233 0.026 -0.083 -0.319
## t_BehReg -0.068 0.063 -1.087 0.277 -0.068 -0.152
## t_Resil ~~
## t_AttnCtrl 0.105 0.038 2.783 0.005 0.105 0.348
## t_BehReg -0.133 0.057 -2.325 0.020 -0.133 -0.257
## t_AttnCtrl ~~
## t_BehReg 0.011 0.041 0.278 0.781 0.011 0.043
## p_NegEmo ~~
## p_Resil -0.594 0.094 -6.290 0.000 -0.594 -0.550
## p_AttnCtrl -0.256 0.051 -5.005 0.000 -0.256 -0.444
## p_BehReg -0.276 0.097 -2.851 0.004 -0.276 -0.237
## p_Resil ~~
## p_AttnCtrl 0.073 0.016 4.650 0.000 0.073 0.404
## p_BehReg 0.033 0.029 1.148 0.251 0.033 0.091
## p_AttnCtrl ~~
## p_BehReg 0.067 0.018 3.632 0.000 0.067 0.344
## f_SocApp ~~
## f_SocStat 0.017 0.009 1.968 0.049 0.017 0.208
## NegEmo ~~
## AttnCtrl -0.163 0.045 -3.639 0.000 -0.689 -0.689
## BehReg -0.275 0.076 -3.606 0.000 -0.591 -0.591
## AttnCtrl ~~
## BehReg 0.269 0.055 4.919 0.000 0.795 0.795
##
## Variances:
## t_SocApp 0.258 0.064 0.258 0.394
## f_SocApp 0.041 0.005 0.041 0.717
## t_SocStat 0.512 0.079 0.512 0.660
## f_SocStat 0.161 0.036 0.161 0.519
## t_NegEmo 0.445 0.098 0.445 0.577
## p_NegEmo 3.446 0.389 3.446 0.875
## t_Resil 0.596 0.079 0.596 0.756
## p_Resil 0.339 0.036 0.339 0.913
## t_AttnCtrl 0.154 0.031 0.154 0.471
## p_AttnCtrl 0.097 0.012 0.097 0.664
## t_BehReg 0.452 0.113 0.452 0.404
## p_BehReg 0.394 0.052 0.394 0.651
## b_BehReg 0.771 0.086 0.771 0.807
## SocApp 0.035 0.038 0.088 0.088
## SocStat 0.039 0.039 0.147 0.147
## NegEmo 0.325 0.104 1.000 1.000
## Resil 0.025 0.022 0.127 0.127
## AttnCtrl 0.173 0.039 1.000 1.000
## BehReg 0.666 0.145 1.000 1.000
# Modification indices
mi <- modindices(fit)
Indeed, the modifications they did seem very reasonable from the output.
The only other potentially tempting modification that sticks out to me is reg BY tsocap, but if there's no theoretical justification to add that arrow, then it's probably best not to to avoid overfitting.
See attached mplus files: eisenberg final.inp, eisenberg final.out
[Note: along the way you may get warnings about a non positive definite covariance matrix. This is to be expected. Most likely Eisenberg's analyses of the original data did not produce these problems – remember that she had the raw data, whereas we are using a correlation and SD table that was rounded to 2 decimal places. Read the handout on “Heywood cases” in the Handouts section and come prepared to discuss. For purposes of doing the homework, ignore the warnings.]
They justify the paths that are there, but they don't justify the paths that aren't there, which is really the most important piece. The drawn paths are free parameters - we're estimating them, so they're allowed to be whatever fits best (including 0). The missing paths are constrained to equal 0 exactly. That requires justification.