I am trying to replicate a study that created a structural equation model (SEM) to explain effects on the intention to reduce meat consumption. The interactions of the latent variables are as follows:
- mident affects att, norm, pbcon, and redint.
- att, norm, and pbcon also affect redint. att, norm, pbcon, and redint were measured with 3 items each, while mident was measured with 2 items. All items used 5-point Likert scales.
I implemented this in R via the lavaan function:
m_free <- 'mident =~ identity1_0 + identity2_0
att =~ attitude1_0 + attitude2_0 + attitude3_0
norm =~ injnorm1 + injnorm2 + injnorm3
pbcon =~ pbc1_0 + pbc2_0 + pbc3_0
redint =~ intention1_0 + intention2_0 + intention3_0
identity1_0~1
identity2_0~1
identity1_0~~identity1_0
identity2_0~~identity2_0
attitude1_0~1
attitude2_0~1
attitude3_0~1
attitude1_0~~attitude1_0
attitude2_0~~attitude2_0
attitude3_0~~attitude3_0
injnorm1~1
injnorm2~1
injnorm3~1
injnorm1~~injnorm1
injnorm2~~injnorm2
injnorm3~~injnorm3
pbc1_0~1
pbc2_0~1
pbc3_0~1
pbc1_0~~pbc1_0
pbc2_0~~pbc2_0
pbc3_0~~pbc3_0
intention1_0~1
intention2_0~1
intention3_0~1
intention1_0~~intention1_0
intention2_0~~intention2_0
intention3_0~~intention3_0
mident~0
mident~~1*mident
att~0
att~~1*att
norm~0
norm~~1*norm
pbcon~0
pbcon~~1*pbcon
redint~0
redint~~1*redint
# Regressions
att~a*mident
norm~d*mident
pbcon~f*mident
redint~b*att + c*mident + e*norm + g*pbcon
d_mident := c
ind_mident_att := a*b
ind_mident_norm := d*e
ind_mident_pbcon := f*g
total := (a*b) + c + (d*e) + (f*g)
'
fit_m_free <- lavaan(model = m_free,
data = Indikatoren,
estimator = "DWLS")
summary(fit_m_free, fit.measures=TRUE, standardized= TRUE, rsquare=TRUE)
The model fit seems acceptable (CFI = 0.957, TLI = 0.945, RMSEA = 0.075, SRMR = 0.062) But the effects are huge compared to the study I am replicating. Most concerning is that the effect for mident goes into the opposite direction of what is theoretically plausible. I found out that att and mident show a strong negative correlation (with moderate negative correlations for their items) so this might explain it, but this shouldn't affect all the other variables. Moreover, I have 2.439 observations so sample size should also not be a problem. Therefore, I thought that I might have wrongly specified something in my code although nothing seems out of place to me. So my question is: Is there a mistake in my code or should I further investigate my data for some possible cause?
sem()
? There are defaults insem()
not present inlavaan()
that are easy to miss but are required for fitting an SEM the usual way. Try this and see if the results change. $\endgroup$