Description Usage Arguments Details Value Source Examples
This function finds omega total, omega hierarchical, and omega subscale
from a SchmidLeiman (SL) solution or lavaan single factor, secondorder (see below),
or bifactor solution. The SLbased omegas can either be found from a
psych::schmid
, SL
, or,
in a more flexible way, by leaving
model = NULL
and specifying additional arguments. By setting the
type
argument, results from psych::omega
can be reproduced.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
model 
class 
type 
character. Either 
g_name 
character. The name of the general factor from the lavaan solution.
This needs only be specified if 
group_names 
character. An optional vector of group names. The length
must correspond to the number of groups for which the 
factor_corres 
matrix. A logical matrix or a numeric matrix containing 0's and 1's that indicates which variable corresponds to which group factor. Must have the same dimensions as the matrix of group factor loadings from the SL solution. Crossloadings are allowed here. See examples for use. 
var_names 
character. A vector with subtest names in the order
of the rows from the SL solution. This needs only be specified if 
fac_names 
character. An optional vector of group factor names in the
order of the columns of the SL solution. If left 
g_load 
numeric. A vector of general factor loadings from an SL solution.
This needs only be specified if 
s_load 
matrix. A matrix of group factor loadings from an SL solution.
This needs only be specified if 
u2 
numeric. A vector of uniquenesses from an SL solution. This needs
only be specified if 
cormat 
matrix. A correlation matrix to be used when

pattern 
matrix. Pattern coefficients from an oblique factor solution.
This needs only be specified if 
Phi 
matrix. Factor intercorrelations from an oblique factor solution.
This needs only be specified if 
variance 
character. If 
If model
is a lavaan
secondorder 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 secondorder factor (secondorder model with one secondorder
factor assumed) or a breadth factor (bifactor model assumed). Please note that
this function only works for secondorder models if they contain no more than
one secondorder factor. In case of a secondorder solution, a
SchmidLeiman transformation is performed on the first and secondorder loadings
and omega coefficents are obtained from the transformed (orthogonalized) solution
(see SL
for more information on SchmidLeiman 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 omegas are computed for
each group.
The type argument is not evaluated if model
is of class
lavaan
.
If model
is of class SL
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 variabletofactor correspondences. type = "psych"
reproduces the psych::omega
results, where
variabletofactor correspondences are found 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
.
The calculation of the total variance (for the whole scale as well as the
subscale composites) can also be controlled in this function using the
variance
argument. For both types—"EFAtools"
and "psych"
—variance
is set to "correlation"
by default, which means that
total variances are found using the correlation matrix. If
variance = "sums_load"
the total variance is calculated using the
squared sums of general loadings and group factor loadings and the sum of the
uniquenesses. This will only get comparable results to
variance = "correlation"
if no crossloadings are present and simple
structure is wellachieved in general with the SL solution (i.e., the
uniquenesses should capture almost all of the variance not explained by the
general factor and the variable's allocated group factor).
If found for an SL or lavaan
secondorder of bifactor solution
without multiple groups:
A matrix with omegas for the whole scale and for the subscales.
tot 
Omega total. 
hier 
Omega hierarchical. 
sub 
Omega subscale. 
If found for a lavaan
single factor solution without multiple groups:
A vector with omega total for the single factor.
If found for a lavaan
output from a multiple group analysis: A list
containing the output described above for each group.
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.
Gignac, G. E. (2014). On the Inappropriateness of Using Items to Calculate Total Scale Score Reliability via Coefficient Alpha for Multidimensional Scales. European Journal of Psychological Assessment, 30, 130139.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69  ## Use with lavaan outputs
# Create and fit bifactor model in lavaan (assume all variables have SDs of 1)
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_bi < lavaan::cfa(mod, sample.cov = test_models$baseline$cormat,
sample.nobs = 500, estimator = "ml", orthogonal = TRUE)
# Compute omega for bifactor solution
OMEGA(fit_bi, g_name = "g")
# Create and fit secondorder model in lavaan (assume all variables have SDs of 1)
mod < 'F1 =~ V1 + V2 + V3 + V4 + V5 + V6
F2 =~ V7 + V8 + V9 + V10 + V11 + V12
F3 =~ V13 + V14 + V15 + V16 + V17 + V18
g =~ F1 + F2 + F3'
fit_ho < lavaan::cfa(mod, sample.cov = test_models$baseline$cormat,
sample.nobs = 500, estimator = "ml")
# Compute omega for secondorder solution
OMEGA(fit_ho, g_name = "g")
## Use with an output from the SL function, with type EFAtools
efa_mod < EFA(test_models$baseline$cormat, N = 500, n_factors = 3,
type = "EFAtools", method = "PAF", rotation = "promax")
sl_mod < SL(efa_mod, type = "EFAtools", method = "PAF")
# Two examples how to specify the indicatortofactor correspondences:
# Based on a specific salience threshold for the loadings (here: .20):
factor_corres_1 < sl_mod$sl[, c("F1", "F2", "F3")] >= .2
# Or more flexibly (could also be TRUE and FALSE instead of 0 and 1):
factor_corres_2 < matrix(c(rep(0, 12), rep(1, 6), rep(0, 6), rep(1, 6),
rep(0, 6), rep(1, 6), rep(0, 12)), ncol = 3,
byrow = FALSE)
OMEGA(sl_mod, type = "EFAtools", factor_corres = factor_corres_1)
## Use with an output from the psych::schmid function, with type psych for
## OMEGA
schmid_mod < psych::schmid(test_models$baseline$cormat, nfactors = 3,
n.obs = 500, fm = "pa", rotate = "Promax")
# Find correlation matrix from phi and pattern matrix from psych::schmid output
OMEGA(schmid_mod, type = "psych")
# Use specified correlation matrix
OMEGA(schmid_mod, type = "psych", cormat = test_models$baseline$cormat)
## Manually specify components (useful if omegas should be computed for a SL
## or bifactor solution found with another program)
## As an example, we extract the elements from an SL output here. This gives
## the same results as in the second example above.
efa_mod < EFA(test_models$baseline$cormat, N = 500, n_factors = 3,
type = "EFAtools", method = "PAF", rotation = "promax")
sl_mod < SL(efa_mod, type = "EFAtools", method = "PAF")
factor_corres < matrix(c(rep(0, 12), rep(1, 6), rep(0, 6), rep(1, 6),
rep(0, 6), rep(1, 6), rep(0, 12)), ncol = 3,
byrow = FALSE)
OMEGA(model = NULL, type = "EFAtools", var_names = rownames(sl_mod$sl),
g_load = sl_mod$sl[, "g"], s_load = sl_mod$sl[, c("F1", "F2", "F3")],
u2 = sl_mod$sl[, "u2"], cormat = test_models$baseline$cormat,
factor_corres = factor_corres)

Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.