Reliability and common-variance coefficients for a factor solution
Source:R/efa_reliability.R
efa_reliability.RdComputes model-based reliability coefficients (McDonald's omega total,
hierarchical, and subscale; standardized Cronbach's alpha; and the H index)
together with the bifactor common-variance indices (explained common variance,
ECV, and percent of uncontaminated correlations, PUC) for the general factor
and each group factor, and returns them as a tidy, long-format table. The
coefficients can be obtained from a Schmid-Leiman solution
(efa_schmid_leiman() or psych::schmid()), an oblique efa_fit()
(correlated-factors) solution, a lavaan single-factor, second-order, or
bifactor fit, a raw bifactor loading matrix, or manually supplied components.
Usage
efa_reliability(
model = NULL,
coefficients = NULL,
g_name = "g",
group_names = NULL,
factor_map = NULL,
variance = c("correlation", "sums_load"),
var_names = NULL,
fac_names = NULL,
g_load = NULL,
s_load = NULL,
u2 = NULL,
cormat = NULL,
pattern = NULL,
Phi = NULL
)Source
McDonald, R. P. (1978). Generalizability in factorable domains: Domain validity and generalizability. Educational and Psychological Measurement, 38, 75-79.
McDonald, R. P. (1985). Factor analysis and related methods. Hillsdale, NJ: Erlbaum.
McDonald, R. P. (1999). Test theory: A unified treatment. Mahwah, NJ: Erlbaum.
Cronbach, L. J. (1951). Coefficient alpha and the internal structure of tests. Psychometrika, 16, 297-334.
Hancock, G. R., & Mueller, R. O. (2001). Rethinking construct reliability within latent variable systems. In R. Cudeck, S. du Toit, & D. Sörbom (Eds.), Structural equation modeling: Present and future (pp. 195-216). Lincolnwood, IL: Scientific Software International.
Bonifay, W. E., Reise, S. P., Scheines, R., & Meijer, R. R. (2015). When are multidimensional data unidimensional enough for structural equation modeling? An evaluation of the DETECT multidimensionality index. Structural Equation Modeling, 22, 504-516.
Reise, S. P., Scheines, R., Widaman, K. F., & Haviland, M. G. (2013). Multidimensionality and structural coefficient bias in structural equation modeling: A bifactor perspective. Educational and Psychological Measurement, 73, 5-26.
Rodriguez, A., Reise, S. P., & Haviland, M. G. (2016a). Applying bifactor statistical indices in the evaluation of psychological measures. Journal of Personality Assessment, 98, 223-237.
Rodriguez, A., Reise, S. P., & Haviland, M. G. (2016b). Evaluating bifactor models: Calculating and interpreting statistical indices. Psychological Methods, 21, 137-150.
Arguments
- model
an
efa_schmid_leiman(),schmid(psych::schmid()),efa_fit()(oblique), orlavaanobject; a raw bifactor loading matrix (general factor first); orNULLto supply the components manually viag_load,s_load,u2, andvar_names.- coefficients
character. An optional subset of the coefficients to return, any of
"omega_total","omega_hierarchical","omega_subscale","alpha","H","ECV", and"PUC". DefaultNULLreturns all of them.- g_name
character. The name of the general factor in the
lavaansolution. Only needed for alavaansecond-order or bifactor fit. Default is"g".- group_names
character. An optional vector of group names for a
lavaanmultiple-group fit. Its length must match the number of groups.- factor_map
matrix. A logical or 0/1 matrix indicating which variable corresponds to which group factor, with the same dimensions as the group loading matrix (cross-loadings are allowed). If
NULL(default), each variable is assigned to the group factor on which it loads most strongly. Not used forlavaaninput.- variance
character. The total-variance denominator for the coefficients:
"correlation"(default) takes it from the correlation matrix (the observed-score omega, as inpsych::omega());"sums_load"uses the model-implied composite variance from the squared loading sums and the uniquenesses, which needs no correlation matrix and so is the way to score a bare loading matrix or manual components given without one. Some inputs fix the convention:lavaanis always model-implied and an obliqueefa_fit()is always correlation-based.- var_names
character. Subtest names in the row order of the loadings. Only needed when
modelisNULL.- fac_names
character. An optional vector of group-factor names in the column order of the loadings. Taken from the input if
NULL.- g_load
numeric. General-factor loadings. Only needed when
modelisNULL.- s_load
matrix. Group-factor loadings. Only needed when
modelisNULL.- u2
numeric. Uniquenesses. Only needed when
modelisNULL(or to override the communality-based default for a raw bifactor matrix).- cormat
matrix. A correlation matrix used when
variance = "correlation". IfNULL, it is taken from the input object or reconstructed frompatternandPhiwhere possible.- pattern
matrix. Pattern coefficients from an oblique solution, used with
Phito reconstructcormatwhenmodelisNULLand nocormatis given.- Phi
matrix. Factor intercorrelations from an oblique solution, used with
pattern.
Value
An object of class efa_reliability: a long-format data frame with
one row per computed coefficient, with columns
- coefficient
the coefficient name (e.g.
"omega_total").- level
"general"for the general-factor row,"group"otherwise.- factor
the factor label (
"g"for the general factor).- group
the group label, or
NAfor a single ungrouped solution.- value
the coefficient value.
Structurally undefined cells (for example ECV and PUC on a group factor) are
omitted. The object carries a settings attribute (the total-variance
convention used) and a kind attribute tagging each coefficient as a
reliability coefficient or a common-variance index, and has a print()
method.
Details
Coefficients
The reliability coefficients are McDonald's omegas (McDonald, 1978, 1985, 1999), standardized Cronbach's alpha (Cronbach, 1951), and the H index (construct replicability; Hancock & Mueller, 2001). The omegas give the share of true score variance in a unit-weighted composite: omega total the share due to all factors together, omega hierarchical the share due to the general factor only, and omega subscale the share due to the group factors (for the whole scale) or to the specific group factor (for a subscale composite). Alpha is computed from the standardized correlation matrix. The H index is the reliability of an optimally weighted composite; low values indicate a factor that is not well defined by its indicators.
The common-variance indices ECV and PUC (Bonifay et al., 2015; Reise et al., 2013; Rodriguez et al., 2016a, 2016b) describe the general factor and so are reported for the general factor only. The ECV is the share of the common variance that is explained by the general factor. The PUC is the proportion of correlations that reflect general-factor variance alone (those between indicators of different group factors); the higher it is, the more similar the general factor is to the single factor of a unidimensional model.
Input
An oblique efa_fit() object is scored as the correlated-factors model it is
(having no general factor, it omits the bifactor indices – omega hierarchical,
ECV, and PUC), and a bare loading matrix is read as a raw bifactor solution
(general factor in the first column). For a correlated-factors efa_fit() solution variance is always
"correlation". The indicator-to-factor correspondences come from factor_map
when it is supplied; otherwise each variable is assigned to the group factor on
which it loads most strongly. For lavaan input the composite variances are
model-implied (variance is not used), and the coefficients are computed per
group.
See also
efa_fit() for the solution these are computed from, and OMEGA(), the
superseded function that returns these same coefficients in a wide, per-factor layout.
Other reliability coefficients:
print.efa_reliability()
Examples
## From an oblique EFA (correlated-factors) solution. With no factor_map, each
## item is auto-assigned to its highest-loading factor.
efa_mod <- efa_fit(test_models$baseline$cormat, N = 500, n_factors = 3,
estimator = "PAF", rotation = "promax")
efa_reliability(efa_mod)
#>
#> Total variance from the correlation matrix.
#>
#> ── Reliability coefficients ────────────────────────────────────────────────────
#>
#> tot sub alpha H
#> g .883 .868
#> F1 .734 .734 .768 .760
#> F2 .680 .680 .763 .753
#> F3 .667 .667 .743 .738
## From a Schmid-Leiman solution, with an explicit indicator-to-factor map.
sl_mod <- efa_schmid_leiman(efa_mod, estimator = "PAF")
fc <- sl_mod$sl[, c("F1", "F2", "F3")] >= .2
efa_reliability(sl_mod, factor_map = fc)
#>
#> Total variance from the correlation matrix.
#>
#> ── Reliability coefficients ────────────────────────────────────────────────────
#>
#> tot hier sub alpha H
#> g .883 .740 .125 .868 .842
#> F1 .769 .500 .269 .768 .463
#> F2 .763 .494 .270 .763 .472
#> F3 .744 .519 .225 .743 .408
#>
#> ── Common-variance indices ─────────────────────────────────────────────────────
#>
#> ECV PUC
#> g .652 .706
## Request a subset of the coefficients only.
efa_reliability(sl_mod, factor_map = fc,
coefficients = c("omega_total", "alpha"))
#>
#> Total variance from the correlation matrix.
#>
#> ── Reliability coefficients ────────────────────────────────────────────────────
#>
#> tot alpha
#> g .883 .868
#> F1 .769 .768
#> F2 .763 .763
#> F3 .744 .743
## From a lavaan bifactor solution.
# \donttest{
if (requireNamespace("lavaan", quietly = TRUE)) {
mod <- 'F1 =~ V1 + V2 + V3 + V4 + V5 + V6
F2 =~ V7 + V8 + V9 + V10 + V11 + V12
F3 =~ V13 + V14 + V15 + V16 + V17 + V18
g =~ V1 + V2 + V3 + V4 + V5 + V6 + V7 + V8 + V9 + V10 + V11 + V12 +
V13 + V14 + V15 + V16 + V17 + V18'
fit <- lavaan::cfa(mod, sample.cov = test_models$baseline$cormat,
sample.nobs = 500, estimator = "ml", orthogonal = TRUE)
efa_reliability(fit, g_name = "g")
}
#>
#> Total variance from the model-implied composite variance.
#>
#> ── Reliability coefficients ────────────────────────────────────────────────────
#>
#> tot hier sub alpha H
#> g .883 .765 .118 .868 .849
#> F1 .748 .570 .177 .742 .379
#> F2 .767 .501 .265 .762 .482
#> F3 .769 .494 .274 .768 .473
#>
#> ── Common-variance indices ─────────────────────────────────────────────────────
#>
#> ECV PUC
#> g .672 .706
# }