I'm trying to build a covariance-based structural equation model (SEM) using both reflective and formative specifications of latent variables. I use the sem
function in the lavaan
package for estimation (R version 3.1.3, lavaan version 0.5-18). But estimates turn always out to be zero which is unreasonable.
The lavaan model syntax uses =~
for reflective specification of latent variables, <~
for formative specification of latent variables, and ~
for regressions (http://www.inside-r.org/packages/cran/lavaan/docs/model.syntax). Here is a simple working example with only reflective specifications (it is a simplified version of the example provided at http://lavaan.ugent.be/tutorial/sem.html and by example(sem)
)
library(lavaan)
model <- '
# latent variable definitions
ind60 =~ x1 + x2
dem60 =~ y1 + y2
# regressions
dem60 ~ ind60
'
summary(sem(model, data=PoliticalDemocracy))
Now assume that based on prior theory I would know that dem60 is a formative construct composed of y1 and y2. Thus I change the specification from =~
to <~
and obtain the following code
library(lavaan)
model <- '
# latent variable definitions
ind60 =~ x1 + x2
dem60 <~ y1 + y2
# regressions
dem60 ~ ind60
'
summary(sem(model, data=PoliticalDemocracy))
The estimates for both y1 and y2 turn out to be zero. Analogously, the regression effect of ind60 on dem60 turns out to be zero. What do I need to change to get a meaningful result?
Several websites and blogs suggested the following modifications:
- Fix one parameter in the formative construct, i.e.
dem60 <~ 1*y1 + y2
. - Allow for covariance of the manifest indicators, i.e.
y1 ~~ y2
. - Fix the variance of the formative construct, i.e.
dem60 ~~ 1
. - Free the variance of the formative construct, i.e.
dem60 ~~ NA*dem60
.
None of these are working. Again: What do I need to change to get a meaningful result?