What this function does
All types of McDonald's omegas (total, hierarchical, and subscale; McDonald,
1978, 1985, 1999) are calculated for
the general factor as well as for the subscales / group factors (see, e.g.,
Gignac, 2014; Rodriguez et al., 2016a, 2016b). Omegas refer to the correlation
between a factor and a unit-weighted composite score and thus the
true score variance in a unit-weighted composite based on the respective
indicators. Omega total is the total true score variance in a composite.
Omega hierarchical is the true score variance in a composite that is attributable
to the general factor, and omega subscale is the true score variance in a
composite attributable to all subscales / group factors (for the whole scale)
or to the specific subscale / group factor (for subscale composites).
Accordingly, on a subscale row the hier column reports the share of that
subscale's composite variance due to the general factor and the sub column
the share due to the subscale-specific factor; the latter corresponds to the
omega hierarchical subscale of Rodriguez et al. (2016a, 2016b).
The H index (also construct reliability or replicability index) is the
correlation between an optimally-weighted composite score
and a factor (Hancock & Mueller, 2001; Rodriguez et al., 2016a, 2016b). It, too,
can be calculated for the whole scale / general factor as well as for the
subscales / group factors. Low values indicate that a latent variable is not well
defined by its indicators.
The ECV (Rodriguez et al., 2016a, 2016b) is the ratio of the
variance explained by the general factor and the variance explained by the
general factor and the group factors.
The PUC (Bonifay et al., 2015; Reise et al., 2013, Rodriguez et al., 2016a,
2016b) refers to the proportion
of correlations in the underlying correlation matrix that is not contaminated
by variance of both the general factor and the group factors (i.e., correlations
between indicators from different group factors, which reflect only general
factor variance). The higher the PUC, the more similar a general factor from
a multidimensional model will be to the single factor from a unidimensional
model.
How to use this function
If model is a lavaan second-order or bifactor solution,
only the name of the general factor from the lavaan model needs to be specified
additionally with the g_name argument. It is then determined whether this
general factor is a second-order factor (second-order model with one second-order
factor assumed) or a breadth factor (bifactor model assumed). Please note that
this function only works for second-order models if they contain no more than
one second-order factor. In case of a second-order solution, a
Schmid-Leiman transformation is performed on the first- and second-order loadings
and omega coefficients are obtained from the transformed (orthogonalized) solution
(see efa_schmid_leiman() for more information on Schmid-Leiman transformation).
There is also the possibility to enter a lavaan single factor solution.
In this case, g_name is not needed. Finally, if a solution from a
lavaan multiple group analysis is entered, the indices are computed for
each group. For lavaan input the composite variances entering the omegas are
model-implied: they are computed from the fitted loadings and the fitted residual
covariance matrix, and count any freed residual covariance as well as the residual
variances. The coefficients thus coincide with the observed-score versions when the
model fits perfectly. The omegas split a composite's variance into a general part and one part
per group factor, which needs uncorrelated latent variables: fit a bifactor model
with orthogonal = TRUE (not lavaan's default) and leave the covariances between
a second-order model's first-order factors at zero. A fit whose factors correlate is
rejected rather than scored as though they did not.
The type argument is not evaluated if model is of class
lavaan.
If model is of class efa_schmid_leiman() or
psych::schmid() only the
type and, depending on the type (see below), the factor_corres
arguments need to be specified additionally. If model is of class
psych::schmid() and variance = "correlation"
(default), it is
recommended to also provide the original correlation matrix in cormat
to get more accurate results. Otherwise, the correlation matrix will be found
based on the pattern matrix and Phi from the
psych::schmid() output
using the psych::factor.model() function.
If model = NULL, the arguments type, factor_corres
(depending on the type, see below), var_names, g_load, s_load,
and u2 and either cormat (recommended) or Phi and
pattern need to be specified. If Phi and pattern are
specified instead of cormat, the correlation matrix is found using
the psych::factor.model() function.
The only difference between type = "EFAtools" and type = "psych"
is the determination of variable-to-factor correspondences. type = "psych"
derives them as psych::omega() does, by
taking the highest
group factor loading for each variable as the relevant group factor loading.
To do this, factor_corres must be left NULL.
Both settings score a composite by the true score variance the model attributes
to it, counting every factor its variables load on; they differ only in the
variance that is divided into. variance = "correlation" uses the composite's
observed variance, giving the observed-score form of omega; "sums_load" uses its
model-implied variance, which partitions exactly into omega hierarchical plus omega
subscale on the whole-scale row. The two settings agree up to model misfit, and
differ mainly in the whole-scale omega subscale, which counts all group-factor
variance under "sums_load" but only the assigned subscale composites under
"correlation".