=======
You would expect to obtain the same estimates from the same model and data. It's deterministic - you gave the same program the same data, you expect the same results. These estimates are lavaan's best attempt at getting an answer.
It's also useful for diagnosing issues in the model - you look at the parameter estimates, and you see something you don't expect, you know you have written the model incorrectly (e.g. you expected two values to be equal, and they're not, you expect a value to be fixed to zero, and it's not).
To test for identification, try different start values.
Here's an example.
library(dplyr)
library(lavaan)
set.seed(42)
d <- data.frame(F = rnorm(1000)) %>%
dplyr::mutate(
y1 = rnorm(1000) + F,
y2 = rnorm(1000) + F
) %>% dplyr::select (-F)
model <- "F =~ y1 + y2"
fit <- lavaan::cfa(model, data = d)
print(summary(fit))
This model is not identified (it has -1 df), so I get the warning:
“lavaan->lav_model_vcov():
Could not compute standard errors! The information matrix could not be
inverted. This may be a symptom that the model is not identified.”
And every time I run it I get the following estimates:
Latent Variables:
Estimate Std.Err z-value P(>|z|)
F =~
y1 1.000
y2 0.933 NA
Variances:
Estimate Std.Err z-value P(>|z|)
.y1 0.951 NA
.y2 1.110 NA
F 1.044 NA
But if I add a start value I get different parameter estimates.
model_2 <- "F =~ y1 + start(0) * y2"
fit_2 <- lavaan::cfa(model_2, data = d)
print(summary(fit_2))
Latent Variables:
Estimate Std.Err z-value P(>|z|)
F =~
y1 1.000
y2 0.952 NA
Variances:
Estimate Std.Err z-value P(>|z|)
.y1 0.972 NA
.y2 1.092 NA
F 1.023 NA
But if I fit a model that is just identified, with 0 df:
model_3 <- "F =~ y1 + y2 + y3"
fit_3 <- lavaan::cfa(model_3, data = d)
print(summary(fit_3))
Or if I fit the same model, with different start values:
model_4 <- "F =~ y1 + start(0) * y2 + start(0) * y3"
It takes one more iteration, but gets the same estimates - so the model is identified.
Latent Variables:
Estimate Std.Err z-value P(>|z|)
F =~
y1 1.000
y2 0.897 0.057 15.867 0.000
y3 1.001 0.063 16.018 0.000
Variances:
Estimate Std.Err z-value P(>|z|)
.y1 0.910 0.071 12.740 0.000
.y2 1.145 0.070 16.438 0.000
.y3 0.924 0.072 12.849 0.000
F 1.085 0.099 10.994 0.000
=======