I would like to ask a quick question about the intercepts ("~1") in the standardized solution.
I understand that they are just the intercepts divided by the corresponding SDs:
A quick example:
``` r
library(lavaan)
#> This is lavaan 0.6-20
#> lavaan is FREE software! Please report any bugs.
dat <- HolzingerSwineford1939
mod <- "x1 ~ x4 + x7"
fit <- sem(mod,
dat,
fixed.x = FALSE,
meanstructure = TRUE)
(est <- parameterEstimates(fit, standardized = TRUE))
#> lhs op rhs est se z pvalue ci.lower ci.upper std.lv std.all
#> 1 x1 ~ x4 0.373 0.054 6.855 0.000 0.267 0.480 0.373 0.372
#> 2 x1 ~ x7 0.002 0.058 0.039 0.969 -0.112 0.116 0.002 0.002
#> 3 x1 ~~ x1 1.170 0.095 12.268 0.000 0.983 1.357 1.170 0.861
#> 4 x4 ~~ x4 1.351 0.110 12.268 0.000 1.135 1.566 1.351 1.000
#> 5 x4 ~~ x7 0.220 0.074 2.971 0.003 0.075 0.365 0.220 0.174
#> 6 x7 ~~ x7 1.183 0.096 12.268 0.000 0.994 1.372 1.183 1.000
#> 7 x1 ~1 3.783 0.277 13.642 0.000 3.240 4.327 3.783 3.246
#> 8 x4 ~1 3.061 0.067 45.694 0.000 2.930 3.192 3.061 2.634
#> 9 x7 ~1 4.186 0.063 66.766 0.000 4.063 4.309 4.186 3.848
(implied_sd <- lavInspect(fit, "implied")$cov)
#> x1 x4 x7
#> x1 1.358
#> x4 0.505 1.351
#> x7 0.085 0.220 1.183
est[7, "est"] / sqrt(implied_sd["x1", "x1"])
#> [1] 3.246046
est[7, "std.all"]
#> [1] 3.246046
```
This is also what Mplus does in the standardized solution.
This looks confusing because the "standardized solution" for the same simple model fitted by OLS will have the intercept equal to zero. However, given that both programs compute the intercept in the standardized solution in the same way, maybe there is a reason for doing so? What is this reason?
-- Shu Fai