I am currently faced with the question. Do I include the variable XX reflectively, formatively or as a scale value in the model?
Theoretically, there is a lot to be said for a formative measurement model, since it is primarily knowledge that is being asked about.
Currently I have the problem that the model is not really identified with formative measurement model. I have restricted the first loading to 1. In addition, one could also restrict the variance of MHL to 1. And one could allow the covariances between the items (would this really be new information, i.e. increasing the degrees of freedom?).
Can a formative measurement model be adequately modelled in Lavaan or is that only possible with PLS Path Modeling? If it is possible with Lavaan, how do I model it at best in my case?
The parcelAllocation function is part of the package "SemTools".
modPP <- '
# Measurment Model
ZZ =~
AA + AA + AA +
AA + AA + AA +
AA + AA + AA + AA10
BB =~ YY + YY + YY + YY + YY5
XX <~ CC + CC + CC + CC + CC + CC + CC + CC + CC + CC +
CC + CC + CC + CC+ CC + CC + CC + CC + CC + CC +
CC + CC + CC + CC + CC + CC+CC + CC + CC + CC +
CC +CC + CC+ CC + CC35'
modPP_parcel <- '
# Measurment Model
ZZ =~ par1 + par2 + par3 + par4
BB =~ YY + YY + YY + YY + YY5
XX <~ 1*CC + CC + CC + CC + CC + CC + CC + CC + CC + CC +
CC + CC + CC + CC+ CC + CC + CC + CC + CC + CC +
CC + CC + CC + CC + CC + CC+CC + CC + CC + CC +
CC +CC + CC+ CC + CC35'
# Path Models
JJ ~ ZZ + BB + XX + U + T
ZZ ~ U + XX + T
BB ~ XX + U + ZZ + T
CC ~ U + T
U ~ T
# Residulavariance
YY1 ~~ YY2
# # Condition Formative
CC ~~ 1*CC
# Give covariances of all manifest variables of MHL? That would be some.
'
(parcel.names_PP <- paste0("par", 1:4))
parcelAllocation(modPP_parcel, df, parcel.names_PP, modPP,
nAlloc = 100, fun = "cfa", alpha = 0.05,
fit.measures = c("chisq", "df", "cfi", "tli", "rmsea", "srmr"),
show.progress = FALSE, iseed = 12345, do.fit = TRUE,
return.fit = TRUE, warn = FALSE)
dataList <- parcelAllocation(modPP_parcel, df, parcel.names, modPP, nAlloc = 100, iseed = 12345,
do.fit = FALSE)
fit.parcelsPP <- sem.mi(modPP_parcel, data = dataList)
summary(fit.parcelsPP, fit.measures = TRUE, standardized = TRUE, rsq = TRUE)
fit_sum_PP <- summary(fit.parcelsPP, fit.measures = TRUE, standardized = TRUE, rsq = TRUE)
fit_sum_PP
warnings()