11

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:

  1. Fix one parameter in the formative construct, i.e. dem60 <~ 1*y1 + y2.
  2. Allow for covariance of the manifest indicators, i.e. y1 ~~ y2.
  3. Fix the variance of the formative construct, i.e. dem60 ~~ 1.
  4. 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?

Karolis Koncevičius
  • 4,282
  • 7
  • 30
  • 47
jhg
  • 305
  • 2
  • 4
  • 11
  • 2
    The error term for `dem60` is not identified. Note if you switch the direction of `ind60` and `dem60` (and fix one of the parameters) the lavaan will spit out an estimate (i.e. `model – Andy W May 29 '15 at 12:35
  • 2
    More generally, you need some type of external information to identify the formative construct. If you don't have that information, you might as well just look at `y1 ~ ind60` and `y2 ~ ind60`. – Andy W May 29 '15 at 12:41

0 Answers0