View source: R/NormalizingWeight.R
| NormalizingWeight | R Documentation |
Internal utility function that computes normalizing weights for factor
loading matrices prior to rotation. Called by GPForth,
GPFoblq, and the random-start wrappers.
NormalizingWeight(A, normalize=FALSE)
A |
A factor loading matrix. |
normalize |
Indicates if and how the matrix should be normalized.
If |
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).
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.
Nguyen, H.V. and Waller, N.G. (2023). Local minima and factor rotations in exploratory factor analysis. Psychological Methods, 28(5), 1122–1141. doi: 10.1037/met0000467
GPFRSorth,
GPForth
data("CCAI", package = "GPArotation")
# Kaiser normalization
factanal(factors = 3, covmat = CCAI_R, n.obs = 461, rotation = "oblimin",
control = list(rotate = list(normalize = TRUE)))
# Cureton-Mulaik normalization passed as a function.
# May result in convergence problems.
NormalizingWeightCM <- function(L) {
Dk <- diag(sqrt(diag(L %*% t(L)))^-1) %*% L
wghts <- rep(0, nrow(L))
fpls <- Dk[, 1]
acosi <- acos(ncol(L)^(-1/2))
for (i in 1:nrow(L)) {
num <- acosi - acos(abs(fpls[i]))
dem <- acosi - (function(a, m)
ifelse(abs(a) < (m^(-1/2)), pi/2, 0))(fpls[i], ncol(L))
wghts[i] <- cos(num / dem * pi/2)^2 + 0.001
}
wghts * sqrt(diag(L %*% t(L)))^-1
}
data(Harman, package = "GPArotation")
quartimin(Harman8, normalize = NormalizingWeightCM(Harman8), randomStarts = 100)
quartimin(Harman8, normalize = TRUE, randomStarts = 100)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.