Hi Silvio,
You wrote: 'I think that
an "naive" reader may be really confused by this finding (i.e., one unstandardized coefficient by group, but different standardized coefficients across groups). Would you know any paper that report such kind of analyses?'
It is possible that "naive" readers will be confused. You can attach a note to your table and explain why you report multiple standardized betas. Maybe this will have a learning effect on the "naive" readers? Frankly, I don't usually pay attention to the standardized
betas. You are likely to find articles fairly quickly where only a single standardized beta per group and regression coefficient is reported, even if only the nonstandardized betas were constrained.
You wrote: 'Accordingly, would
you recommend, to constrain residual covariances across countries (after checking for invariance)?'
That depends on your epistemological
interest that you are pursuing with your studies. Honestly, I don't know what exactly you are aiming for. If you are referring to a CFA and the factor loadings, and you want the standardized factor loadings to be identical across groups, then you need to use
the following constraints: loadings, lv.variances, residuals
Example:
pop.model <- "
f1 =~ 1.0 * v1 + 0.9 * v2 + 0.9 * v3
f2 =~ 1.0 * v4 + 1.0 * v5 + 0.9 * v6
f3 =~ 1.0 * v7 + 0.9 * v8 + 1.0 * v9
f2 ~ 0.6 * f1
f3 ~ 0.3 * f1 + 0.5 * f2"
n <- 10000
set.seed(1)
data <- cbind(
rbind(
simulateData(pop.model, sample.nobs = n),
simulateData(pop.model, sample.nobs = n)
),
g = rep(1 : 2, each = n)
)
diff <- function(fit, op) {
ssl <- standardizedSolution(fit)
round(
ssl[ssl$op == op & ssl$group == 2, "est.std"] - ssl[ssl$op == op & ssl$group == 1, "est.std"],
6
)
}
m.cfa <- "
f1 =~ v1 + v2 + v3
f2 =~ v4 + v5 + v6
f3 =~ v7 + v8 + v9"
fit <- cfa(m.cfa, data, group = "g", group.equal = c("loadings", "lv.variances", "residuals"))
diff(fit, "=~")
If we are talking about the
regressions in the structural model, this is sufficient (you will also find 2 examples that do not work because either a regression coefficient or a variance was assumed to be invariant):
m.sem <- paste(
m.cfa,
"f2 ~ f1",
"f3 ~ f1 + f2",
sep = "\n"
)
fit <- sem(m.sem, data, group = "g", group.equal = c("loadings", "lv.variances", "regressions"))
diff(fit, "~")
fit <- sem(m.sem, data, group = "g", group.equal = c("loadings", "regressions", "lv.variances"), group.partial = "f2~f1")
diff(fit, "~")
fit <- sem(m.sem, data, group = "g", group.equal = c("loadings", "regressions", "lv.variances"), group.partial = "f1~~f1")
diff(fit, "~")
HTH
Christian