Creating a composite mediator using formative approch in lavaan

49 views
Skip to first unread message

ahmad

unread,
May 13, 2025, 3:45:41 PM5/13/25
to lavaan
Hi,

I have a couple of questions regarding creating a composite factor using a formative approach in lavaan.

1. Is there a confirmatory factor analysis (CFA) for a composite approach using a formative approach, similar to a reflective approach?
2. Is the following CFA model with binary indicators using a formative approach correctly specified? 
Model <- '
  risk <~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8

risk ~~ 1*risk

'
cfa(Model, data, ordered = TRUE)
3. Can I use this model as is in a structural model as a mediator when I have latent independent variables (IVs) and dependent variables (DVs)?
Best wishes,
Ahmad

Jeremy Miles

unread,
May 13, 2025, 5:28:12 PM5/13/25
to lav...@googlegroups.com
On Tue, 13 May 2025 at 12:45, ahmad <valik...@gmail.com> wrote:
Hi,

I have a couple of questions regarding creating a composite factor using a formative approach in lavaan.

1. Is there a confirmatory factor analysis (CFA) for a composite approach using a formative approach, similar to a reflective approach?


I'm not exactly sure what you mean. Not really - composite measurement models are generally saturated (that is, they have zero degrees of freedom) so there's nothing to test.

 
2. Is the following CFA model with binary indicators using a formative approach correctly specified? 
Model <- '
  risk <~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8

risk ~~ 1*risk

'

That model is not identified. You have fewer than zero degrees of freedom.  

You need some exogenous variables to identify the model.

Here's a full example :


library(dplyr)
library(lavaan)

set.seed(420)

n <- 1000

d <- data.frame(
x1 = rnorm(n),
x2 = rnorm(n),
x3 = rnorm(n),
x4 = rnorm(n),
x5 = rnorm(n),
x6 = rnorm(n)
) %>%
dplyr::mutate(
risk = x1 + x2 + x3 + rnorm(n),
y1 = rnorm(n),
y2 = rnorm(n)
) %>% dplyr::select(-risk)


Model <- '
risk <~ x1 + x2 + x3 + x4 + x5 + x6
risk ~~ 0 * risk
risk =~ y1 + y2
y1 ~~ 0 * y2
y1 ~~ 1 * y1
y2 ~~ 1 * y2
'

fit <- lavaan::lavaan(Model, data = d)
print(summary(fit))
 
cfa(Model, data, ordered = TRUE)
3. Can I use this model as is in a structural model as a mediator when I have latent independent variables (IVs) and dependent variables (DVs)?
Best wishes,

Not really. 

Your model looks like (I didn't draw all of the X variables):

image.png
There isn't really any distinction between the IV(s) and the x variables. With a single DV this is saturated and is the same as a regression model (if you add the correlations between Xs and IV, and you'd need a really good reason not to*). 
With a second DV you gain some more degrees of freedom, but there's no mediation going on - you have a multivariate regression with restrictions (or a MIMIC model). 

Hope that helps,

Jeremy

* And I can't think of a reason good enough.

 
Reply all
Reply to author
Forward
0 new messages