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
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
<~ 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?