10 Measurement Invariance and Equivalence
Group comparisons are among the most common claims made with psychological scales. We compare depression across genders, well-being across countries, personality across age groups, and change across time. Before interpreting those differences, however, we need to ask whether the measurement model itself operates comparably across the groups.
Suppose two people from different groups have the same level of the latent trait. If the instrument is invariant, their expected responses to an item should not differ merely because they belong to different groups (Lubke & Muthén, 2004; Svetina et al., 2020).
An observed group difference can reflect:
- a genuine difference in the latent construct;
- a difference in how particular items function across groups; or
- both.
Measurement-invariance analysis helps separate these possibilities before substantive group comparisons are interpreted.
This chapter develops measurement invariance in four steps:
- define invariance in the common-factor model;
- distinguish configural, loading, intercept/threshold, and residual invariance;
- explain why ordinal indicators require special identification and threshold constraints; and
- conduct categorical multi-group CFA in R with
lavaanandsemTools.
10.1 What Is Measurement Invariance?
For a continuous-indicator factor model,
\[ \mathbf{y} = \boldsymbol{\nu} + \mathbf{\Lambda}\boldsymbol{\eta} + \boldsymbol{\epsilon}, \]
where:
- \(\boldsymbol{\nu}\) contains item intercepts;
- \(\mathbf{\Lambda}\) contains factor loadings;
- \(\boldsymbol{\eta}\) contains latent factor scores; and
- \(\boldsymbol{\epsilon}\) contains indicator-specific residuals.
The implied covariance matrix is
\[ \mathbf{\Sigma} = \mathbf{\Lambda} \mathbf{\Phi} \mathbf{\Lambda}^{\mathsf T} + \mathbf{\Theta}, \]
where \(\mathbf{\Phi}\) is the latent-factor covariance matrix and \(\mathbf{\Theta}\) is the residual covariance matrix.
For group \(g\),
\[ E(\mathbf{y}^{(g)}) = \boldsymbol{\nu}^{(g)} + \mathbf{\Lambda}^{(g)} \boldsymbol{\kappa}^{(g)}, \]
where \(\boldsymbol{\kappa}^{(g)}\) contains the latent means.
Measurement invariance is investigated by asking which parts of this measurement model can reasonably be constrained to equality across groups.
A scale is not simply “invariant” or “noninvariant.” Different claims require equality of different parameters. The level of invariance needed depends on the comparison the researcher intends to make.
11 Levels of Invariance for Continuous Indicators
The familiar hierarchy for continuous CFA is summarized below.
| Level | Equality constraints | What it mainly supports |
|---|---|---|
| Configural | Same factor pattern | Similar qualitative factor structure |
| Metric / weak | Factor loadings | Comparison of factor relations and scale units |
| Scalar / strong | Loadings + intercepts | Comparison of latent means |
| Strict | Loadings + intercepts + residual variances | Stronger equality of observed-score measurement error |
11.1 Configural invariance
Configural invariance asks whether the same broad factor structure is plausible across groups. The number of factors and the pattern of which items load on which factors are the same, but most parameter values are allowed to differ.
If one group requires a fundamentally different loading pattern, stronger levels of invariance are difficult to interpret because the groups may not be measuring the construct with the same structural organization.
11.2 Metric invariance
Metric invariance constrains factor loadings to equality:
\[ \mathbf{\Lambda}^{(1)} = \mathbf{\Lambda}^{(2)} = \cdots = \mathbf{\Lambda}^{(G)}. \]
Equal loadings imply that the scale of the latent variable is linked to the indicators in the same way across groups. This level is particularly important when comparing factor covariances, correlations, or structural relations across groups.
Failure of loading invariance points to indicators whose relationship with the latent construct differs across groups. It should be described as evidence of differential measurement functioning, rather than as proof that respondents intentionally answer with “bias.”
11.3 Scalar invariance
Scalar invariance adds equality of item intercepts:
\[ \boldsymbol{\nu}^{(1)} = \boldsymbol{\nu}^{(2)} = \cdots = \boldsymbol{\nu}^{(G)}. \]
Together with equal loadings, equal intercepts make latent-mean comparisons interpretable: expected observed differences are not systematically shifted by group-specific item intercepts.
11.4 Strict invariance
Strict invariance additionally constrains residual variances:
\[ \mathbf{\Theta}^{(1)} = \mathbf{\Theta}^{(2)} = \cdots = \mathbf{\Theta}^{(G)}. \]
Strict invariance is a stronger requirement than is usually needed for latent-mean comparisons. In many applied settings, scalar/strong invariance is the main target for comparing latent means (Hancock, 1997; Svetina et al., 2020).
The purpose is not to mechanically pass four stages. Each constraint corresponds to a substantive comparison. Decide first what comparison you want to make, and then evaluate whether the measurement parameters required for that comparison are sufficiently comparable.
12 Categorical Indicators Change the Problem
Many psychological items are binary or ordinal rather than continuous. Treating such variables as normally distributed continuous indicators can alter parameter estimates, fit statistics, and cross-group comparisons (Beauducel & Herzberg, 2006; Lubke & Muthén, 2004; Muthén & Kaplan, 1985).
For an ordinal item \(Y_j\), assume an underlying continuous response variable
\[ Y_j^*. \]
The observed category is determined by thresholds. If item \(j\) has categories \(0,\ldots,C\), then
\[ Y_j=c \quad\text{when}\quad \tau_{jc}<Y_j^*\leq\tau_{j,c+1}, \]
with
\[ \tau_{j0}=-\infty \qquad\text{and}\qquad \tau_{j,C+1}=+\infty. \]
The latent response follows a factor model,
\[ \mathbf{Y}^* = \boldsymbol{\nu} + \mathbf{\Lambda}\boldsymbol{\eta} + \boldsymbol{\epsilon}. \]
Now the thresholds themselves become part of the measurement model. Consequently, categorical invariance cannot be obtained simply by copying the continuous-data sequence and replacing the estimator.
12.1 Why identification matters
For ordered categorical models, thresholds, intercepts, residual variances, latent means, and factor scales can be identified in several statistically equivalent ways at the configural stage. Once equality constraints are imposed, however, identification constraints can become substantive restrictions if they are not handled carefully (Wu & Estabrook, 2016).
The Wu–Estabrook approach explicitly addresses this problem. semTools::measEq.syntax() implements these identification rules through
12.1.1 A practical sequence for ordinal indicators
Under this approach, a useful sequence is:
| Model | Main equality constraints |
|---|---|
| Configural | Same factor pattern; thresholds and loadings largely free across groups |
| Threshold invariance | Thresholds equal across groups |
| Threshold + loading invariance | Thresholds and factor loadings equal across groups |
| Additional constraints | Intercepts, means, or residuals if required by the research question and identification scheme |
Wu & Estabrook (2016) recommend testing threshold equality before loading equality for ordered indicators. Svetina et al. (2020) provide an applied tutorial of this sequence with lavaan and semTools.
For ordinal indicators, observed category means are determined through thresholds on the underlying response variables. Therefore, the familiar continuous-data labels metric and scalar can obscure what is actually being constrained. Report the specific constrained parameters—for example, threshold invariance and threshold + loading invariance.
13 Measurement Invariance in R
We will use:
-
lavaanfor CFA estimation (Rosseel, 2012); -
semToolsto generate correctly identified invariance syntax (Jorgensen et al., 2022); and - the
bfidata frompsych(Revelle, 2023).
13.1 Install and load the packages
This is lavaan 0.7-2
lavaan is FREE software! Please report any bugs.
###############################################################################
This is semTools 0.5-9
All users of R (or SEM) are invited to submit functions or ideas for functions.
###############################################################################
Anexando pacote: 'psych'
Os seguintes objetos são mascarados por 'package:semTools':
reliability, skew
O seguinte objeto é mascarado por 'package:lavaan':
cor2cov
13.2 Prepare the BFI data
The BFI dataset contains 25 personality items and a gender variable coded 1 and 2. For this tutorial, we use all five personality domains.
Complete-case analysis is used only to keep the tutorial compact. Missing-data handling should be planned explicitly in substantive applications, especially because categorical estimators and missing-data methods interact with the assumptions of the analysis.
13.3 Specify the five-factor configural model
We will treat all personality items as ordered indicators:
13.4 1. Configural model
The configural model imposes no cross-group equality constraints beyond those needed for identification.
configural.syntax <- semTools::measEq.syntax(
configural.model = mod.cat,
data = dat,
ordered = ordered_items,
parameterization = "delta",
ID.fac = "std.lv",
ID.cat = "Wu.Estabrook.2016",
group = "gender",
group.equal = "configural"
)
fit.configural <- lavaan::cfa(
as.character(configural.syntax),
data = dat,
group = "gender",
ordered = ordered_items,
estimator = "WLSMV"
)Before moving to stronger constraints, inspect whether the configural model is substantively reasonable in both groups:
lavaan 0.7-2 ended normally after 26 iterations
Estimator DWLS
Optimization method NLMINB
Number of model parameters 320
Number of observations per group:
Male 805
Female 1631
Model Test User Model:
Standard Scaled
Test Statistic 6441.668 6087.699
Degrees of freedom 530 530
P-value (Unknown) NA 0.000
Scaling correction factor 1.094
Shift parameter 197.275
simple second-order correction
Test statistic for each group:
Male 2201.315 2201.315
Female 3886.384 3886.384
Model Test Baseline Model:
Test statistic 69703.669 32452.029
Degrees of freedom 600 600
P-value NA 0.000
Scaling correction factor 2.170
User Model versus Baseline Model:
Comparative Fit Index (CFI) 0.914 0.826
Tucker-Lewis Index (TLI) 0.903 0.802
Robust Comparative Fit Index (CFI) 0.735
Robust Tucker-Lewis Index (TLI) 0.700
Root Mean Square Error of Approximation:
RMSEA 0.096 0.093
90 Percent confidence interval - lower 0.094 0.091
90 Percent confidence interval - upper 0.098 0.095
P-value H_0: RMSEA <= 0.050 0.000 0.000
P-value H_0: RMSEA >= 0.080 1.000 1.000
Robust RMSEA 0.096
90 Percent confidence interval - lower 0.094
90 Percent confidence interval - upper 0.098
P-value H_0: Robust RMSEA <= 0.050 0.000
P-value H_0: Robust RMSEA >= 0.080 1.000
Standardized Root Mean Square Residual:
SRMR 0.085 0.085
Goodness of Fit Index:
Goodness of Fit Index (GFI) 0.837
90 Percent confidence interval - lower 0.831
90 Percent confidence interval - upper 0.843
Robust GFI 0.837
90 Percent confidence interval - lower 0.830
90 Percent confidence interval - upper 0.843
Parameter Estimates:
Parameterization Delta
Standard errors Robust.sem
Information Expected
Information saturated (h1) model Unstructured
Group 1 [Male]:
Latent Variables:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
Agreeableness =~
A1 (l.1_) 0.319 0.035 9.083 0.000 0.319 0.319
A2 (l.2_) -0.657 0.026 -25.292 0.000 -0.657 -0.657
A3 (l.3_) -0.758 0.021 -36.817 0.000 -0.758 -0.758
A4 (l.4_) -0.587 0.029 -20.467 0.000 -0.587 -0.587
A5 (l.5_) -0.826 0.020 -41.932 0.000 -0.826 -0.826
Conscientiousness =~
C1 (l.6_) 0.597 0.029 20.317 0.000 0.597 0.597
C2 (l.7_) 0.607 0.028 21.313 0.000 0.607 0.607
C3 (l.8_) 0.516 0.029 17.645 0.000 0.516 0.516
C4 (l.9_) -0.735 0.025 -29.584 0.000 -0.735 -0.735
C5 (l.10) -0.728 0.024 -29.958 0.000 -0.728 -0.728
Extraversion =~
E1 (l.11) 0.570 0.027 21.265 0.000 0.570 0.570
E2 (l.12) 0.772 0.020 38.951 0.000 0.772 0.772
E3 (l.13) -0.704 0.022 -31.659 0.000 -0.704 -0.704
E4 (l.14) -0.760 0.020 -38.423 0.000 -0.760 -0.760
E5 (l.15) -0.698 0.022 -31.134 0.000 -0.698 -0.698
Neuroticism =~
N1 (l.16) 0.834 0.015 53.982 0.000 0.834 0.834
N2 (l.17) 0.812 0.016 49.958 0.000 0.812 0.812
N3 (l.18) 0.722 0.019 38.614 0.000 0.722 0.722
N4 (l.19) 0.715 0.023 31.440 0.000 0.715 0.715
N5 (l.20) 0.575 0.028 20.865 0.000 0.575 0.575
Openness =~
O1 (l.21) 0.651 0.034 18.951 0.000 0.651 0.651
O2 (l.22) -0.441 0.037 -11.885 0.000 -0.441 -0.441
O3 (l.23) 0.814 0.031 26.154 0.000 0.814 0.814
O4 (l.24) 0.194 0.043 4.457 0.000 0.194 0.194
O5 (l.25) -0.535 0.034 -15.937 0.000 -0.535 -0.535
Covariances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
Agreeableness ~~
Cnscnt (p.2_) -0.331 0.040 -8.354 0.000 -0.331 -0.331
Extrvr (p.3_1) 0.693 0.024 28.708 0.000 0.693 0.693
Nrtcsm (p.4_1) 0.217 0.037 5.825 0.000 0.217 0.217
Opnnss (p.5_1) -0.285 0.038 -7.526 0.000 -0.285 -0.285
Conscientiousness ~~
Extrvr (p.3_2) -0.426 0.036 -11.994 0.000 -0.426 -0.426
Nrtcsm (p.4_2) -0.349 0.034 -10.331 0.000 -0.349 -0.349
Opnnss (p.5_2) 0.353 0.039 9.038 0.000 0.353 0.353
Extraversion ~~
Nrtcsm (p.4_3) 0.289 0.034 8.597 0.000 0.289 0.289
Opnnss (p.5_3) -0.407 0.034 -11.915 0.000 -0.407 -0.407
Neuroticism ~~
Opnnss (p.5_4) -0.113 0.040 -2.840 0.005 -0.113 -0.113
Intercepts:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.A1 (n.1.) 0.000 0.000 0.000
.A2 (n.2.) 0.000 0.000 0.000
.A3 (n.3.) 0.000 0.000 0.000
.A4 (n.4.) 0.000 0.000 0.000
.A5 (n.5.) 0.000 0.000 0.000
.C1 (n.6.) 0.000 0.000 0.000
.C2 (n.7.) 0.000 0.000 0.000
.C3 (n.8.) 0.000 0.000 0.000
.C4 (n.9.) 0.000 0.000 0.000
.C5 (n.10) 0.000 0.000 0.000
.E1 (n.11) 0.000 0.000 0.000
.E2 (n.12) 0.000 0.000 0.000
.E3 (n.13) 0.000 0.000 0.000
.E4 (n.14) 0.000 0.000 0.000
.E5 (n.15) 0.000 0.000 0.000
.N1 (n.16) 0.000 0.000 0.000
.N2 (n.17) 0.000 0.000 0.000
.N3 (n.18) 0.000 0.000 0.000
.N4 (n.19) 0.000 0.000 0.000
.N5 (n.20) 0.000 0.000 0.000
.O1 (n.21) 0.000 0.000 0.000
.O2 (n.22) 0.000 0.000 0.000
.O3 (n.23) 0.000 0.000 0.000
.O4 (n.24) 0.000 0.000 0.000
.O5 (n.25) 0.000 0.000 0.000
Agrblns (a.1.) 0.000 0.000 0.000
Cnscnts (a.2.) 0.000 0.000 0.000
Extrvrs (a.3.) 0.000 0.000 0.000
Nertcsm (a.4.) 0.000 0.000 0.000
Opennss (a.5.) 0.000 0.000 0.000
Thresholds:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
A1|t1 (A1.1) -0.760 0.049 -15.462 0.000 -0.760 -0.760
A1|t2 (A1.2) 0.076 0.044 1.726 0.084 0.076 0.076
A1|t3 (A1.3) 0.544 0.047 11.664 0.000 0.544 0.544
A1|t4 (A1.4) 1.062 0.055 19.467 0.000 1.062 1.062
A1|t5 (A1.5) 1.768 0.081 21.775 0.000 1.768 1.768
A2|t1 (A2.1) -1.902 0.090 -21.159 0.000 -1.902 -1.902
A2|t2 (A2.2) -1.278 0.060 -21.241 0.000 -1.278 -1.278
A2|t3 (A2.3) -0.915 0.052 -17.725 0.000 -0.915 -0.915
A2|t4 (A2.4) -0.186 0.044 -4.190 0.000 -0.186 -0.186
A2|t5 (A2.5) 0.785 0.050 15.858 0.000 0.785 0.785
A3|t1 (A3.1) -1.768 0.081 -21.775 0.000 -1.768 -1.768
A3|t2 (A3.2) -1.148 0.057 -20.288 0.000 -1.148 -1.148
A3|t3 (A3.3) -0.764 0.049 -15.528 0.000 -0.764 -0.764
A3|t4 (A3.4) -0.079 0.044 -1.797 0.072 -0.079 -0.079
A3|t5 (A3.5) 0.882 0.051 17.283 0.000 0.882 0.882
A4|t1 (A4.1) -1.624 0.073 -22.099 0.000 -1.624 -1.624
A4|t2 (A4.2) -1.051 0.054 -19.353 0.000 -1.051 -1.051
A4|t3 (A4.3) -0.719 0.049 -14.795 0.000 -0.719 -0.719
A4|t4 (A4.4) -0.164 0.044 -3.698 0.000 -0.164 -0.164
A4|t5 (A4.5) 0.533 0.047 11.457 0.000 0.533 0.533
A5|t1 (A5.1) -1.865 0.087 -21.356 0.000 -1.865 -1.865
A5|t2 (A5.2) -1.173 0.057 -20.493 0.000 -1.173 -1.173
A5|t3 (A5.3) -0.735 0.049 -15.063 0.000 -0.735 -0.735
A5|t4 (A5.4) -0.111 0.044 -2.501 0.012 -0.111 -0.111
A5|t5 (A5.5) 0.842 0.050 16.706 0.000 0.842 0.842
C1|t1 (C1.1) -2.031 0.100 -20.314 0.000 -2.031 -2.031
C1|t2 (C1.2) -1.425 0.065 -21.902 0.000 -1.425 -1.425
C1|t3 (C1.3) -0.855 0.051 -16.899 0.000 -0.855 -0.855
C1|t4 (C1.4) -0.221 0.045 -4.964 0.000 -0.221 -0.221
C1|t5 (C1.5) 0.794 0.050 15.990 0.000 0.794 0.794
C2|t1 (C2.1) -1.902 0.090 -21.159 0.000 -1.902 -1.902
C2|t2 (C2.2) -1.101 0.055 -19.859 0.000 -1.101 -1.101
C2|t3 (C2.3) -0.652 0.048 -13.649 0.000 -0.652 -0.652
C2|t4 (C2.4) -0.014 0.044 -0.317 0.751 -0.014 -0.014
C2|t5 (C2.5) 0.953 0.052 18.221 0.000 0.953 0.953
C3|t1 (C3.1) -1.848 0.086 -21.442 0.000 -1.848 -1.848
C3|t2 (C3.2) -1.084 0.055 -19.693 0.000 -1.084 -1.084
C3|t3 (C3.3) -0.664 0.048 -13.852 0.000 -0.664 -0.664
C3|t4 (C3.4) 0.045 0.044 1.022 0.307 0.045 0.045
C3|t5 (C3.5) 1.035 0.054 19.179 0.000 1.035 1.035
C4|t1 (C4.1) -0.664 0.048 -13.852 0.000 -0.664 -0.664
C4|t2 (C4.2) 0.042 0.044 0.951 0.341 0.042 0.042
C4|t3 (C4.3) 0.498 0.046 10.765 0.000 0.498 0.498
C4|t4 (C4.4) 1.185 0.058 20.594 0.000 1.185 1.185
C4|t5 (C4.5) 1.884 0.089 21.261 0.000 1.884 1.884
C5|t1 (C5.1) -0.999 0.053 -18.766 0.000 -0.999 -0.999
C5|t2 (C5.2) -0.384 0.045 -8.469 0.000 -0.384 -0.384
C5|t3 (C5.3) -0.111 0.044 -2.501 0.012 -0.111 -0.111
C5|t4 (C5.4) 0.425 0.046 9.306 0.000 0.425 0.425
C5|t5 (C5.5) 1.179 0.057 20.544 0.000 1.179 1.179
E1|t1 (E1.1) -0.896 0.051 -17.473 0.000 -0.896 -0.896
E1|t2 (E1.2) -0.244 0.045 -5.456 0.000 -0.244 -0.244
E1|t3 (E1.3) 0.108 0.044 2.431 0.015 0.108 0.108
E1|t4 (E1.4) 0.584 0.047 12.420 0.000 0.584 0.584
E1|t5 (E1.5) 1.179 0.057 20.544 0.000 1.179 1.179
E2|t1 (E2.1) -0.963 0.053 -18.343 0.000 -0.963 -0.963
E2|t2 (E2.2) -0.253 0.045 -5.666 0.000 -0.253 -0.253
E2|t3 (E2.3) 0.070 0.044 1.585 0.113 0.070 0.070
E2|t4 (E2.4) 0.625 0.047 13.173 0.000 0.625 0.625
E2|t5 (E2.5) 1.224 0.059 20.884 0.000 1.224 1.224
E3|t1 (E3.1) -1.508 0.068 -22.077 0.000 -1.508 -1.508
E3|t2 (E3.2) -0.896 0.051 -17.473 0.000 -0.896 -0.896
E3|t3 (E3.3) -0.415 0.046 -9.097 0.000 -0.415 -0.415
E3|t4 (E3.4) 0.322 0.045 7.140 0.000 0.322 0.322
E3|t5 (E3.5) 1.185 0.058 20.594 0.000 1.185 1.185
E4|t1 (E4.1) -1.488 0.068 -22.049 0.000 -1.488 -1.488
E4|t2 (E4.2) -0.887 0.051 -17.347 0.000 -0.887 -0.887
E4|t3 (E4.3) -0.588 0.047 -12.489 0.000 -0.588 -0.588
E4|t4 (E4.4) -0.120 0.044 -2.712 0.007 -0.120 -0.120
E4|t5 (E4.5) 0.768 0.049 15.594 0.000 0.768 0.768
E5|t1 (E5.1) -1.739 0.080 -21.870 0.000 -1.739 -1.739
E5|t2 (E5.2) -1.073 0.055 -19.580 0.000 -1.073 -1.073
E5|t3 (E5.3) -0.668 0.048 -13.920 0.000 -0.668 -0.668
E5|t4 (E5.4) -0.008 0.044 -0.176 0.860 -0.008 -0.008
E5|t5 (E5.5) 0.887 0.051 17.347 0.000 0.887 0.887
N1|t1 (N1.1) -0.641 0.048 -13.445 0.000 -0.641 -0.641
N1|t2 (N1.2) -0.008 0.044 -0.176 0.860 -0.008 -0.008
N1|t3 (N1.3) 0.364 0.045 8.050 0.000 0.364 0.364
N1|t4 (N1.4) 0.887 0.051 17.347 0.000 0.887 0.887
N1|t5 (N1.5) 1.579 0.071 22.122 0.000 1.579 1.579
N2|t1 (N2.1) -1.014 0.054 -18.945 0.000 -1.014 -1.014
N2|t2 (N2.2) -0.354 0.045 -7.840 0.000 -0.354 -0.354
N2|t3 (N2.3) 0.048 0.044 1.092 0.275 0.048 0.048
N2|t4 (N2.4) 0.691 0.048 14.325 0.000 0.691 0.691
N2|t5 (N2.5) 1.408 0.064 21.848 0.000 1.408 1.408
N3|t1 (N3.1) -0.764 0.049 -15.528 0.000 -0.764 -0.764
N3|t2 (N3.2) -0.073 0.044 -1.656 0.098 -0.073 -0.073
N3|t3 (N3.3) 0.286 0.045 6.368 0.000 0.286 0.286
N3|t4 (N3.4) 0.864 0.051 17.028 0.000 0.864 0.864
N3|t5 (N3.5) 1.624 0.073 22.099 0.000 1.624 1.624
N4|t1 (N4.1) -0.915 0.052 -17.725 0.000 -0.915 -0.915
N4|t2 (N4.2) -0.257 0.045 -5.737 0.000 -0.257 -0.257
N4|t3 (N4.3) 0.105 0.044 2.360 0.018 0.105 0.105
N4|t4 (N4.4) 0.735 0.049 15.063 0.000 0.735 0.735
N4|t5 (N4.5) 1.337 0.062 21.557 0.000 1.337 1.337
N5|t1 (N5.1) -0.418 0.046 -9.167 0.000 -0.418 -0.418
N5|t2 (N5.2) 0.302 0.045 6.719 0.000 0.302 0.302
N5|t3 (N5.3) 0.633 0.048 13.309 0.000 0.633 0.633
N5|t4 (N5.4) 1.142 0.056 20.235 0.000 1.142 1.142
N5|t5 (N5.5) 1.725 0.079 21.910 0.000 1.725 1.725
O1|t1 (O1.1) -2.329 0.132 -17.649 0.000 -2.329 -2.329
O1|t2 (O1.2) -1.848 0.086 -21.442 0.000 -1.848 -1.848
O1|t3 (O1.3) -1.337 0.062 -21.557 0.000 -1.337 -1.337
O1|t4 (O1.4) -0.633 0.048 -13.309 0.000 -0.633 -0.633
O1|t5 (O1.5) 0.289 0.045 6.438 0.000 0.289 0.289
O2|t1 (O2.1) -0.487 0.046 -10.557 0.000 -0.487 -0.487
O2|t2 (O2.2) 0.199 0.045 4.472 0.000 0.199 0.199
O2|t3 (O2.3) 0.584 0.047 12.420 0.000 0.584 0.584
O2|t4 (O2.4) 1.068 0.055 19.524 0.000 1.068 1.068
O2|t5 (O2.5) 1.568 0.071 22.121 0.000 1.568 1.568
O3|t1 (O3.1) -1.848 0.086 -21.442 0.000 -1.848 -1.848
O3|t2 (O3.2) -1.470 0.067 -22.013 0.000 -1.470 -1.470
O3|t3 (O3.3) -1.004 0.053 -18.826 0.000 -1.004 -1.004
O3|t4 (O3.4) -0.171 0.044 -3.838 0.000 -0.171 -0.171
O3|t5 (O3.5) 0.790 0.050 15.924 0.000 0.790 0.790
O4|t1 (O4.1) -2.111 0.107 -19.687 0.000 -2.111 -2.111
O4|t2 (O4.2) -1.568 0.071 -22.121 0.000 -1.568 -1.568
O4|t3 (O4.3) -1.211 0.058 -20.789 0.000 -1.211 -1.211
O4|t4 (O4.4) -0.595 0.047 -12.626 0.000 -0.595 -0.595
O4|t5 (O4.5) 0.199 0.045 4.472 0.000 0.199 0.199
O5|t1 (O5.1) -0.505 0.046 -10.904 0.000 -0.505 -0.505
O5|t2 (O5.2) 0.325 0.045 7.210 0.000 0.325 0.325
O5|t3 (O5.3) 0.824 0.050 16.447 0.000 0.824 0.824
O5|t4 (O5.4) 1.329 0.062 21.520 0.000 1.329 1.329
O5|t5 (O5.5) 1.865 0.087 21.356 0.000 1.865 1.865
Variances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
Agrblns (p.1_) 1.000 1.000 1.000
Cnscnts (p.2_) 1.000 1.000 1.000
Extrvrs (p.3_) 1.000 1.000 1.000
Nertcsm (p.4_) 1.000 1.000 1.000
Opennss (p.5_) 1.000 1.000 1.000
.A1 0.898 0.898 0.898
.A2 0.568 0.568 0.568
.A3 0.426 0.426 0.426
.A4 0.656 0.656 0.656
.A5 0.317 0.317 0.317
.C1 0.643 0.643 0.643
.C2 0.632 0.632 0.632
.C3 0.733 0.733 0.733
.C4 0.460 0.460 0.460
.C5 0.470 0.470 0.470
.E1 0.675 0.675 0.675
.E2 0.404 0.404 0.404
.E3 0.504 0.504 0.504
.E4 0.422 0.422 0.422
.E5 0.513 0.513 0.513
.N1 0.304 0.304 0.304
.N2 0.340 0.340 0.340
.N3 0.479 0.479 0.479
.N4 0.489 0.489 0.489
.N5 0.669 0.669 0.669
.O1 0.577 0.577 0.577
.O2 0.805 0.805 0.805
.O3 0.338 0.338 0.338
.O4 0.963 0.963 0.963
.O5 0.713 0.713 0.713
Scales y*:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
A1 1.000 1.000 1.000
A2 1.000 1.000 1.000
A3 1.000 1.000 1.000
A4 1.000 1.000 1.000
A5 1.000 1.000 1.000
C1 1.000 1.000 1.000
C2 1.000 1.000 1.000
C3 1.000 1.000 1.000
C4 1.000 1.000 1.000
C5 1.000 1.000 1.000
E1 1.000 1.000 1.000
E2 1.000 1.000 1.000
E3 1.000 1.000 1.000
E4 1.000 1.000 1.000
E5 1.000 1.000 1.000
N1 1.000 1.000 1.000
N2 1.000 1.000 1.000
N3 1.000 1.000 1.000
N4 1.000 1.000 1.000
N5 1.000 1.000 1.000
O1 1.000 1.000 1.000
O2 1.000 1.000 1.000
O3 1.000 1.000 1.000
O4 1.000 1.000 1.000
O5 1.000 1.000 1.000
Group 2 [Female]:
Latent Variables:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
Agreeableness =~
A1 (l.1_) 0.352 0.025 14.362 0.000 0.352 0.352
A2 (l.2_) -0.665 0.019 -35.278 0.000 -0.665 -0.665
A3 (l.3_) -0.763 0.016 -48.562 0.000 -0.763 -0.763
A4 (l.4_) -0.519 0.024 -21.644 0.000 -0.519 -0.519
A5 (l.5_) -0.770 0.017 -46.649 0.000 -0.770 -0.770
Conscientiousness =~
C1 (l.6_) 0.600 0.021 28.675 0.000 0.600 0.600
C2 (l.7_) 0.594 0.021 28.817 0.000 0.594 0.594
C3 (l.8_) 0.547 0.021 25.499 0.000 0.547 0.547
C4 (l.9_) -0.761 0.018 -41.784 0.000 -0.761 -0.761
C5 (l.10) -0.710 0.018 -39.006 0.000 -0.710 -0.710
Extraversion =~
E1 (l.11) 0.510 0.021 24.541 0.000 0.510 0.510
E2 (l.12) 0.714 0.015 46.975 0.000 0.714 0.714
E3 (l.13) -0.680 0.018 -38.637 0.000 -0.680 -0.680
E4 (l.14) -0.727 0.016 -45.498 0.000 -0.727 -0.727
E5 (l.15) -0.579 0.020 -29.670 0.000 -0.579 -0.579
Neuroticism =~
N1 (l.16) 0.870 0.010 88.783 0.000 0.870 0.870
N2 (l.17) 0.829 0.011 74.747 0.000 0.829 0.829
N3 (l.18) 0.744 0.013 58.544 0.000 0.744 0.744
N4 (l.19) 0.707 0.016 44.236 0.000 0.707 0.707
N5 (l.20) 0.563 0.019 29.919 0.000 0.563 0.563
Openness =~
O1 (l.21) 0.672 0.023 29.623 0.000 0.672 0.672
O2 (l.22) -0.425 0.027 -16.005 0.000 -0.425 -0.425
O3 (l.23) 0.814 0.023 35.598 0.000 0.814 0.814
O4 (l.24) 0.155 0.030 5.248 0.000 0.155 0.155
O5 (l.25) -0.445 0.026 -17.362 0.000 -0.445 -0.445
Covariances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
Agreeableness ~~
Cnscnt (p.2_) -0.381 0.027 -13.917 0.000 -0.381 -0.381
Extrvr (p.3_1) 0.706 0.018 38.308 0.000 0.706 0.706
Nrtcsm (p.4_1) 0.324 0.026 12.417 0.000 0.324 0.324
Opnnss (p.5_1) -0.369 0.028 -13.228 0.000 -0.369 -0.369
Conscientiousness ~~
Extrvr (p.3_2) -0.368 0.027 -13.624 0.000 -0.368 -0.368
Nrtcsm (p.4_2) -0.313 0.025 -12.317 0.000 -0.313 -0.313
Opnnss (p.5_2) 0.345 0.029 11.973 0.000 0.345 0.345
Extraversion ~~
Nrtcsm (p.4_3) 0.318 0.025 12.636 0.000 0.318 0.318
Opnnss (p.5_3) -0.561 0.023 -24.494 0.000 -0.561 -0.561
Neuroticism ~~
Opnnss (p.5_4) -0.130 0.029 -4.476 0.000 -0.130 -0.130
Intercepts:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.A1 (n.1.) 0.000 0.000 0.000
.A2 (n.2.) 0.000 0.000 0.000
.A3 (n.3.) 0.000 0.000 0.000
.A4 (n.4.) 0.000 0.000 0.000
.A5 (n.5.) 0.000 0.000 0.000
.C1 (n.6.) 0.000 0.000 0.000
.C2 (n.7.) 0.000 0.000 0.000
.C3 (n.8.) 0.000 0.000 0.000
.C4 (n.9.) 0.000 0.000 0.000
.C5 (n.10) 0.000 0.000 0.000
.E1 (n.11) 0.000 0.000 0.000
.E2 (n.12) 0.000 0.000 0.000
.E3 (n.13) 0.000 0.000 0.000
.E4 (n.14) 0.000 0.000 0.000
.E5 (n.15) 0.000 0.000 0.000
.N1 (n.16) 0.000 0.000 0.000
.N2 (n.17) 0.000 0.000 0.000
.N3 (n.18) 0.000 0.000 0.000
.N4 (n.19) 0.000 0.000 0.000
.N5 (n.20) 0.000 0.000 0.000
.O1 (n.21) 0.000 0.000 0.000
.O2 (n.22) 0.000 0.000 0.000
.O3 (n.23) 0.000 0.000 0.000
.O4 (n.24) 0.000 0.000 0.000
.O5 (n.25) 0.000 0.000 0.000
Agrblns (a.1.) 0.000 0.000 0.000
Cnscnts (a.2.) 0.000 0.000 0.000
Extrvrs (a.3.) 0.000 0.000 0.000
Nertcsm (a.4.) 0.000 0.000 0.000
Opennss (a.5.) 0.000 0.000 0.000
Thresholds:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
A1|t1 (A1.1) -0.287 0.032 -9.121 0.000 -0.287 -0.287
A1|t2 (A1.2) 0.457 0.032 14.177 0.000 0.457 0.457
A1|t3 (A1.3) 0.853 0.036 24.015 0.000 0.853 0.853
A1|t4 (A1.4) 1.332 0.043 30.656 0.000 1.332 1.332
A1|t5 (A1.5) 1.947 0.065 29.734 0.000 1.947 1.947
A2|t1 (A2.1) -2.269 0.087 -25.979 0.000 -2.269 -2.269
A2|t2 (A2.2) -1.691 0.054 -31.306 0.000 -1.691 -1.691
A2|t3 (A2.3) -1.336 0.044 -30.682 0.000 -1.336 -1.336
A2|t4 (A2.4) -0.634 0.033 -18.969 0.000 -0.634 -0.634
A2|t5 (A2.5) 0.347 0.032 10.942 0.000 0.347 0.347
A3|t1 (A3.1) -1.837 0.060 -30.596 0.000 -1.837 -1.837
A3|t2 (A3.2) -1.383 0.045 -30.968 0.000 -1.383 -1.383
A3|t3 (A3.3) -1.070 0.038 -27.830 0.000 -1.070 -1.070
A3|t4 (A3.4) -0.456 0.032 -14.129 0.000 -0.456 -0.456
A3|t5 (A3.5) 0.490 0.032 15.104 0.000 0.490 0.490
A4|t1 (A4.1) -1.698 0.054 -31.286 0.000 -1.698 -1.698
A4|t2 (A4.2) -1.186 0.040 -29.330 0.000 -1.186 -1.186
A4|t3 (A4.3) -0.957 0.037 -26.004 0.000 -0.957 -0.957
A4|t4 (A4.4) -0.483 0.032 -14.909 0.000 -0.483 -0.483
A4|t5 (A4.5) 0.095 0.031 3.044 0.002 0.095 0.095
A5|t1 (A5.1) -2.088 0.074 -28.288 0.000 -2.088 -2.088
A5|t2 (A5.2) -1.411 0.045 -31.112 0.000 -1.411 -1.411
A5|t3 (A5.3) -0.997 0.037 -26.684 0.000 -0.997 -0.997
A5|t4 (A5.4) -0.307 0.032 -9.712 0.000 -0.307 -0.307
A5|t5 (A5.5) 0.613 0.033 18.442 0.000 0.613 0.613
C1|t1 (C1.1) -1.937 0.065 -29.824 0.000 -1.937 -1.937
C1|t2 (C1.2) -1.379 0.045 -30.946 0.000 -1.379 -1.379
C1|t3 (C1.3) -0.945 0.037 -25.788 0.000 -0.945 -0.945
C1|t4 (C1.4) -0.235 0.031 -7.493 0.000 -0.235 -0.235
C1|t5 (C1.5) 0.759 0.035 21.994 0.000 0.759 0.759
C2|t1 (C2.1) -1.845 0.060 -30.539 0.000 -1.845 -1.845
C2|t2 (C2.2) -1.228 0.041 -29.769 0.000 -1.228 -1.228
C2|t3 (C2.3) -0.820 0.035 -23.333 0.000 -0.820 -0.820
C2|t4 (C2.4) -0.161 0.031 -5.171 0.000 -0.161 -0.161
C2|t5 (C2.5) 0.791 0.035 22.690 0.000 0.791 0.791
C3|t1 (C3.1) -1.889 0.063 -30.220 0.000 -1.889 -1.889
C3|t2 (C3.2) -1.225 0.041 -29.737 0.000 -1.225 -1.225
C3|t3 (C3.3) -0.803 0.035 -22.966 0.000 -0.803 -0.803
C3|t4 (C3.4) -0.033 0.031 -1.064 0.287 -0.033 -0.033
C3|t5 (C3.5) 0.903 0.036 24.999 0.000 0.903 0.903
C4|t1 (C4.1) -0.559 0.033 -16.997 0.000 -0.559 -0.559
C4|t2 (C4.2) 0.232 0.031 7.394 0.000 0.232 0.232
C4|t3 (C4.3) 0.703 0.034 20.681 0.000 0.703 0.703
C4|t4 (C4.4) 1.282 0.042 30.268 0.000 1.282 1.282
C4|t5 (C4.5) 2.037 0.071 28.858 0.000 2.037 2.037
C5|t1 (C5.1) -0.882 0.036 -24.599 0.000 -0.882 -0.882
C5|t2 (C5.2) -0.240 0.031 -7.641 0.000 -0.240 -0.240
C5|t3 (C5.3) 0.078 0.031 2.500 0.012 0.078 0.078
C5|t4 (C5.4) 0.690 0.034 20.350 0.000 0.690 0.690
C5|t5 (C5.5) 1.310 0.043 30.496 0.000 1.310 1.310
E1|t1 (E1.1) -0.640 0.033 -19.113 0.000 -0.640 -0.640
E1|t2 (E1.2) 0.024 0.031 0.767 0.443 0.024 0.024
E1|t3 (E1.3) 0.398 0.032 12.465 0.000 0.398 0.398
E1|t4 (E1.4) 0.878 0.036 24.510 0.000 0.878 0.878
E1|t5 (E1.5) 1.463 0.047 31.313 0.000 1.463 1.463
E2|t1 (E2.1) -0.842 0.035 -23.789 0.000 -0.842 -0.842
E2|t2 (E2.2) -0.136 0.031 -4.380 0.000 -0.136 -0.136
E2|t3 (E2.3) 0.178 0.031 5.715 0.000 0.178 0.178
E2|t4 (E2.4) 0.776 0.035 22.366 0.000 0.776 0.776
E2|t5 (E2.5) 1.344 0.044 30.733 0.000 1.344 1.344
E3|t1 (E3.1) -1.642 0.052 -31.427 0.000 -1.642 -1.642
E3|t2 (E3.2) -1.043 0.038 -27.428 0.000 -1.043 -1.043
E3|t3 (E3.3) -0.534 0.033 -16.319 0.000 -0.534 -0.534
E3|t4 (E3.4) 0.267 0.031 8.480 0.000 0.267 0.267
E3|t5 (E3.5) 1.147 0.040 28.864 0.000 1.147 1.147
E4|t1 (E4.1) -1.691 0.054 -31.306 0.000 -1.691 -1.691
E4|t2 (E4.2) -1.135 0.040 -28.716 0.000 -1.135 -1.135
E4|t3 (E4.3) -0.755 0.034 -21.901 0.000 -0.755 -0.755
E4|t4 (E4.4) -0.299 0.032 -9.466 0.000 -0.299 -0.299
E4|t5 (E4.5) 0.595 0.033 17.962 0.000 0.595 0.595
E5|t1 (E5.1) -1.821 0.059 -30.701 0.000 -1.821 -1.821
E5|t2 (E5.2) -1.231 0.041 -29.802 0.000 -1.231 -1.231
E5|t3 (E5.3) -0.820 0.035 -23.333 0.000 -0.820 -0.820
E5|t4 (E5.4) -0.208 0.031 -6.654 0.000 -0.208 -0.208
E5|t5 (E5.5) 0.757 0.035 21.948 0.000 0.757 0.757
N1|t1 (N1.1) -0.784 0.035 -22.551 0.000 -0.784 -0.784
N1|t2 (N1.2) -0.110 0.031 -3.539 0.000 -0.110 -0.110
N1|t3 (N1.3) 0.286 0.032 9.072 0.000 0.286 0.286
N1|t4 (N1.4) 0.849 0.035 23.925 0.000 0.849 0.849
N1|t5 (N1.5) 1.407 0.045 31.092 0.000 1.407 1.407
N2|t1 (N2.1) -1.285 0.042 -30.297 0.000 -1.285 -1.285
N2|t2 (N2.2) -0.577 0.033 -17.480 0.000 -0.577 -0.577
N2|t3 (N2.3) -0.193 0.031 -6.159 0.000 -0.193 -0.193
N2|t4 (N2.4) 0.481 0.032 14.860 0.000 0.481 0.481
N2|t5 (N2.5) 1.171 0.040 29.153 0.000 1.171 1.171
N3|t1 (N3.1) -1.038 0.038 -27.347 0.000 -1.038 -1.038
N3|t2 (N3.2) -0.316 0.032 -10.008 0.000 -0.316 -0.316
N3|t3 (N3.3) -0.010 0.031 -0.322 0.748 -0.010 -0.010
N3|t4 (N3.4) 0.588 0.033 17.769 0.000 0.588 0.588
N3|t5 (N3.5) 1.238 0.041 29.867 0.000 1.238 1.238
N4|t1 (N4.1) -0.999 0.037 -26.726 0.000 -0.999 -0.999
N4|t2 (N4.2) -0.243 0.031 -7.740 0.000 -0.243 -0.243
N4|t3 (N4.3) 0.147 0.031 4.726 0.000 0.147 0.147
N4|t4 (N4.4) 0.739 0.034 21.527 0.000 0.739 0.739
N4|t5 (N4.5) 1.314 0.043 30.523 0.000 1.314 1.314
N5|t1 (N5.1) -0.894 0.036 -24.822 0.000 -0.894 -0.894
N5|t2 (N5.2) -0.238 0.031 -7.592 0.000 -0.238 -0.238
N5|t3 (N5.3) 0.127 0.031 4.083 0.000 0.127 0.127
N5|t4 (N5.4) 0.684 0.034 20.208 0.000 0.684 0.684
N5|t5 (N5.5) 1.221 0.041 29.704 0.000 1.221 1.221
O1|t1 (O1.1) -2.471 0.108 -22.979 0.000 -2.471 -2.471
O1|t2 (O1.2) -1.619 0.051 -31.462 0.000 -1.619 -1.619
O1|t3 (O1.3) -1.109 0.039 -28.376 0.000 -1.109 -1.109
O1|t4 (O1.4) -0.321 0.032 -10.155 0.000 -0.321 -0.321
O1|t5 (O1.5) 0.546 0.033 16.658 0.000 0.546 0.546
O2|t1 (O2.1) -0.590 0.033 -17.817 0.000 -0.590 -0.590
O2|t2 (O2.2) 0.104 0.031 3.341 0.001 0.104 0.104
O2|t3 (O2.3) 0.457 0.032 14.177 0.000 0.457 0.457
O2|t4 (O2.4) 0.974 0.037 26.304 0.000 0.974 0.974
O2|t5 (O2.5) 1.534 0.049 31.465 0.000 1.534 1.534
O3|t1 (O3.1) -2.037 0.071 -28.858 0.000 -2.037 -2.037
O3|t2 (O3.2) -1.399 0.045 -31.052 0.000 -1.399 -1.399
O3|t3 (O3.3) -0.878 0.036 -24.510 0.000 -0.878 -0.878
O3|t4 (O3.4) -0.058 0.031 -1.856 0.063 -0.058 -0.058
O3|t5 (O3.5) 0.903 0.036 24.999 0.000 0.903 0.903
O4|t1 (O4.1) -2.146 0.078 -27.598 0.000 -2.146 -2.146
O4|t2 (O4.2) -1.549 0.049 -31.479 0.000 -1.549 -1.549
O4|t3 (O4.3) -1.212 0.041 -29.604 0.000 -1.212 -1.212
O4|t4 (O4.4) -0.575 0.033 -17.432 0.000 -0.575 -0.575
O4|t5 (O4.5) 0.300 0.032 9.515 0.000 0.300 0.300
O5|t1 (O5.1) -0.653 0.034 -19.447 0.000 -0.653 -0.653
O5|t2 (O5.2) 0.197 0.031 6.308 0.000 0.197 0.197
O5|t3 (O5.3) 0.745 0.034 21.668 0.000 0.745 0.745
O5|t4 (O5.4) 1.340 0.044 30.707 0.000 1.340 1.340
O5|t5 (O5.5) 2.001 0.068 29.223 0.000 2.001 2.001
Variances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
Agrblns (p.1_) 1.000 1.000 1.000
Cnscnts (p.2_) 1.000 1.000 1.000
Extrvrs (p.3_) 1.000 1.000 1.000
Nertcsm (p.4_) 1.000 1.000 1.000
Opennss (p.5_) 1.000 1.000 1.000
.A1 0.876 0.876 0.876
.A2 0.558 0.558 0.558
.A3 0.419 0.419 0.419
.A4 0.730 0.730 0.730
.A5 0.407 0.407 0.407
.C1 0.640 0.640 0.640
.C2 0.647 0.647 0.647
.C3 0.701 0.701 0.701
.C4 0.421 0.421 0.421
.C5 0.496 0.496 0.496
.E1 0.740 0.740 0.740
.E2 0.490 0.490 0.490
.E3 0.537 0.537 0.537
.E4 0.471 0.471 0.471
.E5 0.664 0.664 0.664
.N1 0.244 0.244 0.244
.N2 0.313 0.313 0.313
.N3 0.447 0.447 0.447
.N4 0.500 0.500 0.500
.N5 0.683 0.683 0.683
.O1 0.548 0.548 0.548
.O2 0.820 0.820 0.820
.O3 0.337 0.337 0.337
.O4 0.976 0.976 0.976
.O5 0.802 0.802 0.802
Scales y*:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
A1 1.000 1.000 1.000
A2 1.000 1.000 1.000
A3 1.000 1.000 1.000
A4 1.000 1.000 1.000
A5 1.000 1.000 1.000
C1 1.000 1.000 1.000
C2 1.000 1.000 1.000
C3 1.000 1.000 1.000
C4 1.000 1.000 1.000
C5 1.000 1.000 1.000
E1 1.000 1.000 1.000
E2 1.000 1.000 1.000
E3 1.000 1.000 1.000
E4 1.000 1.000 1.000
E5 1.000 1.000 1.000
N1 1.000 1.000 1.000
N2 1.000 1.000 1.000
N3 1.000 1.000 1.000
N4 1.000 1.000 1.000
N5 1.000 1.000 1.000
O1 1.000 1.000 1.000
O2 1.000 1.000 1.000
O3 1.000 1.000 1.000
O4 1.000 1.000 1.000
O5 1.000 1.000 1.000
If the factor pattern is poorly represented in one group, equality tests on later parameters are difficult to interpret.
13.5 2. Threshold invariance
Following the categorical sequence, we next constrain item thresholds to equality across groups.
threshold.syntax <- semTools::measEq.syntax(
configural.model = mod.cat,
data = dat,
ordered = ordered_items,
parameterization = "delta",
ID.fac = "std.lv",
ID.cat = "Wu.Estabrook.2016",
group = "gender",
group.equal = c("configural","thresholds")
)
fit.thresholds <- lavaan::cfa(
as.character(threshold.syntax),
data = dat,
group = "gender",
ordered = ordered_items,
estimator = "WLSMV"
)Threshold invariance asks whether the latent response levels at which respondents move between observed categories can be treated as equivalent across groups.
13.6 3. Threshold + loading invariance
We now add equality constraints on the factor loadings.
loading.syntax <- semTools::measEq.syntax(
configural.model = mod.cat,
data = dat,
ordered = ordered_items,
parameterization = "delta",
ID.fac = "std.lv",
ID.cat = "Wu.Estabrook.2016",
group = "gender",
group.equal = c("configural","thresholds", "loadings")
)
fit.loadings <- lavaan::cfa(
as.character(loading.syntax),
data = dat,
group = "gender",
ordered = ordered_items,
estimator = "WLSMV"
)This model asks whether both the category thresholds and the item–factor relationships can be treated as equal across groups.
14 Compare the Models
14.1 Collect fit indices
get_fit <- function(fit) {
lavaan::fitMeasures(
fit,
c(
"chisq.scaled",
"df.scaled",
"pvalue.scaled",
"cfi.scaled",
"tli.scaled",
"rmsea.scaled",
"srmr"
)
)
}
results <- rbind(
Configural = get_fit(fit.configural),
Thresholds = get_fit(fit.thresholds),
Thresholds_Loadings = get_fit(fit.loadings)
)
round(results, 3) chisq.scaled df.scaled pvalue.scaled cfi.scaled tli.scaled
Configural 6087.699 530 0 0.826 0.802
Thresholds 6397.557 605 0 0.818 0.820
Thresholds_Loadings 6006.291 625 0 0.831 0.838
rmsea.scaled srmr
Configural 0.093 0.085
Thresholds 0.089 0.085
Thresholds_Loadings 0.084 0.085
The table should be read comparatively. Ask whether progressively stronger equality constraints produce meaningful deterioration in model fit.
14.2 Scaled chi-square difference tests
| Df | AIC | BIC | Chisq | Chisq diff | RMSEA | Df diff | Pr(>Chisq) | |
|---|---|---|---|---|---|---|---|---|
| fit.configural | 530 | NA | NA | 6441.668 | NA | NA | NA | NA |
| fit.thresholds | 605 | NA | NA | 6479.084 | 85.80474 | 0 | 75 | 0.1848805 |
| Df | AIC | BIC | Chisq | Chisq diff | RMSEA | Df diff | Pr(>Chisq) | |
|---|---|---|---|---|---|---|---|---|
| fit.thresholds | 605 | NA | NA | 6479.084 | NA | NA | NA | NA |
| fit.loadings | 625 | NA | NA | 6514.606 | 19.73842 | 0.0252422 | 20 | 0.4743963 |
For WLSMV models, use the appropriate scaled difference-testing procedure provided by lavaan; do not manually subtract the printed chi-square statistics.
14.3 Changes in approximate fit
You can also calculate changes in CFI and RMSEA:
delta_fit <- data.frame(
Comparison = c(
"Thresholds - Configural",
"Thresholds + Loadings - Thresholds"
),
Delta_CFI = c(
fitMeasures(fit.thresholds, "cfi.scaled") -
fitMeasures(fit.configural, "cfi.scaled"),
fitMeasures(fit.loadings, "cfi.scaled") -
fitMeasures(fit.thresholds, "cfi.scaled")
),
Delta_RMSEA = c(
fitMeasures(fit.thresholds, "rmsea.scaled") -
fitMeasures(fit.configural, "rmsea.scaled"),
fitMeasures(fit.loadings, "rmsea.scaled") -
fitMeasures(fit.thresholds, "rmsea.scaled")
)
)
delta_fit[c("Delta_CFI", "Delta_RMSEA")] <- lapply(
delta_fit[c("Delta_CFI", "Delta_RMSEA")],
round,
digits = 3
)
delta_fit| Comparison | Delta_CFI | Delta_RMSEA |
|---|---|---|
| Thresholds - Configural | -0.007 | -0.004 |
| Thresholds + Loadings - Thresholds | 0.013 | -0.005 |
Simulation-based recommendations depend on the type of indicators, sample size, number of groups, model complexity, estimator, and the form of noninvariance. Svetina et al. (2020) summarize evidence for categorical models and show why the decision rule should match the analysis design rather than be copied from continuous-data conventions.
15 What If Full Invariance Fails?
Failure of an equality-constrained model does not necessarily mean that all group comparisons must be abandoned. The source of misfit may be a small number of items.
A partial invariance model frees selected parameters while retaining equality constraints for the remaining items. This can be useful when there is a substantive reason to believe that a small number of parameters differ across groups (Cheung & Lau, 2012).
In semTools, parameters can be released through group.partial. However, partial invariance should not become a data-driven search for a model that passes arbitrary fit cutoffs. Each freed loading or threshold should be reported and interpreted.
If an item has different thresholds or loadings across groups, that is not merely a technical obstacle. It can reveal differences in language, interpretation, response-category use, cultural meaning, or the relationship between the item and the construct. Investigating why the parameter differs is often more informative than simply freeing it.
16 What Can Be Compared at Each Stage?
| Evidence obtained | Comparisons that become more defensible |
|---|---|
| Similar configural structure | Qualitative interpretation of the same broad construct structure |
| Equal loadings | Factor relations and associations on a common latent scale |
| Equal thresholds/intercepts plus loadings | Latent mean comparisons |
| Equal residuals as well | Stronger observed-score comparability |
For categorical indicators, always translate these labels back into the actual constraints imposed by the identification scheme.
17 Reporting Measurement Invariance
A transparent report should state:
- the groups being compared;
- the item type and estimator;
- the factor model;
- the categorical identification method;
- which parameters were constrained at each step;
- fit indices for every model;
- the difference-testing procedure;
- changes in approximate-fit indices;
- any partially freed parameters; and
- which substantive comparisons are justified by the retained level of invariance.
For this tutorial, a report could begin:
Measurement invariance of the five-factor BFI model was evaluated across gender groups using categorical multi-group CFA with WLSMV estimation. Ordered indicators were identified using the Wu–Estabrook approach. A configural model was followed by equality constraints on item thresholds and then by equality constraints on thresholds and factor loadings. Relative fit was evaluated using scaled chi-square difference tests together with changes in CFI and RMSEA.
Insert the numerical results from the fitted models before drawing a substantive conclusion.
18 Concluding Remarks
Measurement invariance is the bridge between a measurement model and a group-comparison claim. Without it, an observed difference can be ambiguous: the groups may differ on the construct, on the functioning of the indicators, or on both.
The central lesson is not to treat invariance as a sequence of software commands. Each equality constraint asks a substantive question about the measurement process. Continuous and categorical indicators require different parameterizations, and ordered categorical models require particular attention to thresholds and identification (Svetina et al., 2020; Wu & Estabrook, 2016).
A useful analysis therefore ends with more than “invariance was supported.” It states which parameters were sufficiently comparable, which were not, and what comparisons those results allow the researcher to defend.