Long story short: the current version of lavaan (or any SEM software for
that matter) does a poor job handling composites. We rely on a 'trick'
where a phantom latent variable is created, which is then the dependent
variable predicted by composite indicators. That is also why strange
tricks (like the equality constraint) are needed.
I would recommend to have a look at the cSEM package, which was designed
to handle composites, and uses various PLS-style estimation methods.
If you are brave, you can try out the github version of lavaan (0.6-20).
In this version, we have 'native' support for composites (without
tricks). The model syntax is the same, but (for now) you need the
following options to run it:
fit <- sem(yourmodel, data = yourdata, optim.gradient = "numerical",
composites = TRUE)
but this may change in the next weeks. No support for robust test
statistics yet though. In other words, this is work in progress, but you
can write your model simply as:
#Climate composite variables
backgroundclimate_composite <~ longterm_rainfallseasonality +
mean_annual_temp
pulse_stressors <~ droughtindex + heatwave
#regression
stable_area ~ backgroundclimate_composite + pulse_stressors +
water_depth + pixel_hetero + anthropic_dist + burnedarea
#remaining relationships
pulse_stressors ~ backgroundclimate_composite
biodiversity ~ pulse_stressors + backgroundclimate_composite +
anthropic_dist
burnedarea ~ pulse_stressors + backgroundclimate_composite
heatwave ~~ mat #covariance correlated
Yves.