Skip to contents

Native principal-axis approximation of McDonald's omega (total + hierarchical).

Usage

morie_psymet_omega(data, nf = 1)

Arguments

data

Numeric matrix / data.frame of items.

nf

Number of factors (default 1).

Value

list with total, hier, alpha, nf, expvar.

Details

Loadings come from principal-axis factoring (communalities iterated on the reduced correlation matrix). hier is the general-factor omega of the Schmid-Leiman transformation: the nf factors are promax-rotated, their correlations are factored for one general factor (with two factors both load the square root of their correlation), and the items are projected onto it. With nf = 1 the single factor is the general factor, so hier equals total: a one-factor model cannot separate them. Items that load negatively on the general factor are reverse-keyed: they are scored the other way round first, as psych::omega() does, and a message names them.

Examples

if (requireNamespace("psych", quietly = TRUE)) {
  set.seed(1)
  f <- rnorm(120)
  X <- sapply(1:12, function(j) sqrt(0.5) * f + sqrt(0.5) * rnorm(120))
  colnames(X) <- paste0("i", 1:12)
  res <- morie_psymet_omega(X, nf = 4)
  c(res$total, res$hier)
}
#> [1] 0.9243707 0.8295088