Learn R Programming

GPArotation (version 2026.8-1)

NormalizingWeight: 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)

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.

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).

References

Cureton, E.E. and Mulaik, S.A. (1975). The weighted varimax rotation and the promax rotation. Psychometrika, 40(2), 183--195. 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. tools:::Rd_expr_doi("10.1037/met0000467")

See Also

GPFRSorth, GPForth

Examples

Run this code
  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)

Run the code above in your browser using DataLab