NormalizingWeight: Normalizing Weights for Factor Rotation

View source: R/NormalizingWeight.R

NormalizingWeightR Documentation

Normalizing Weights for Factor Rotation

Description

Internal utility function that computes normalizing weights for factor loading matrices prior to rotation. Called by GPForth, GPFoblq, and the random-start wrappers.

Usage

    NormalizingWeight(A, normalize=FALSE)

Arguments

normalize

controls normalization. One of:

  • FALSE (default) — no normalization

  • TRUE or "Kaiser" — Kaiser (Horst) normalization: rows of A are scaled to unit norm before rotation and rescaled after

  • "CM" — Cureton-Mulaik normalization: rows are weighted by a function of their angular distance from the equal-loading point (Cureton and Mulaik, 1975)

  • a numeric vector of length nrow(A) — custom weights

  • a function taking A and returning a weight vector

Details

NormalizingWeight is not exported from the NAMESPACE and is called internally by GPForth, GPFoblq, and the random-start wrapper functions. For a full description of the normalize argument and its options, see GPFRSorth.

The choice of normalization method can affect the rotation solution and its interpretation. For a detailed investigation of the effects of normalization on factor rotations, see Nguyen and Waller (2023).

Value

A numeric vector of normalizing weights. This function is not exported from the NAMESPACE and is only called internally by the gradient projection rotation functions. See GPFRSorth for details on the normalize argument.

References

Cureton, E.E. and Mulaik, S.A. (1975). The weighted varimax rotation and the promax rotation. Psychometrika, 40(2), 183–195. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1007/BF02291565")}

Nguyen, H.V. and Waller, N.G. (2023). Local minima and factor rotations in exploratory factor analysis. Psychological Methods, 28(5), 1122–1141. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1037/met0000467")}

See Also

GPFRSorth, GPForth

Examples

  data("CCAI", package = "GPArotation")
  # Kaiser normalization
  factanal(factors = 3, covmat = CCAI_R, n.obs = 461, rotation = "oblimin",
           control = list(rotate = list(normalize = TRUE)))

  data(Harman, package = "GPArotation")
  # two ways to do Kaiser normalization
  quartimin(Harman8, normalize = TRUE, randomStarts = 100)
  quartimin(Harman8, normalize = "Kaiser", randomStarts = 100)
  # Cureton-Mulaik normalization
  quartimin(Harman8, normalize = "CM", randomStarts = 100)


GPArotation documentation built on June 18, 2026, 9:06 a.m.