promaxQ | R Documentation |
This function is an extension of the promax
function.
This function will extract the unrotated factor loadings (with three algorithm
options, see faX
) if they are not provided. The factor
intercorrelations (Phi) are also computed within this function.
promaxQ(
R = NULL,
urLoadings = NULL,
facMethod = "fals",
numFactors = NULL,
power = 4,
standardize = "Kaiser",
epsilon = 1e-04,
maxItr = 15000,
faControl = NULL
)
R |
(Matrix) A correlation matrix. |
urLoadings |
(Matrix) An unrotated factor-structure matrix to be rotated. |
facMethod |
(Character) The method used for factor extraction
(
|
numFactors |
(Scalar) The number of factors to extract if the lambda matrix is not provided. |
power |
(Scalar) The power with which to raise factor loadings for minimizing trivial loadings. The default value is 4. |
standardize |
(Character) Which standardization routine is applied to the
unrotated factor structure. The three options are "none", "Kaiser", and "CM".
The default option is "Kaiser" as is recommended by Kaiser and others. See
|
epsilon |
(Scalar) The convergence criterion used for evaluating the varimax rotation. The default value is 1e-4 (i.e., .0001). |
maxItr |
(Scalar) The maximum number of iterations allowed for computing the varimax rotation. The default value is 15,000 iterations. |
faControl |
(List) A list of optional parameters passed to the factor
extraction (
|
Varimax Standardization: When conducting the varimax rotation, it is recommended to standardize the factor loadings using Kaiser's normalization (i.e., rescaling the factor indicators [rows] so that the vectors have unit length). The standardization/normalization occurs by pre-multiplying the unrotated factor structure, A, by the inverse of H, where H^2 is a diagonal matrix with the communality estimates on the diagonal. A varimax rotation is then applied to the normalized, unrotated factor structure. Then, the varimax-rotated factor structure is rescaled to its original metric by pre-multiplying the varimax factor structure by H. For details, see Mulaik (2009).
Oblique Procrustes Rotation of the Varimax Solution: According to Hendrickson & White (1964), an unrestricted (i.e., oblique) Procrustes rotation is applied to the orthogonal varimax solution. Specifically, a target matrix is generated by raising the varimax factor loadings to the user-specified power (typically, power = 4) (must retain the signs of the original factor loadings). This should quickly diminish trivial factor loadings while retaining larger factor loadings. The Procrustes rotation takes the varimax solution and rotates it toward the promax-generated target matrix. For a modern description of this approach, see Mulaik (2009, ch. 12, p. 342-343).
Choice of a Power: Changing the power in which varimax factor loadings are raised will change the target matrix in the oblique Procrustes rotation. After raising factor loadings to some power, there will be a larger discrepancy between high and low loadings than before (e.g., squaring factor loadings of .6 and .7 yields loadings of .36 and .49 and cubing yields loadings of .216 and .343). Furthermore, increasing the power will increase the number of near-zero loadings, resulting in larger factor intercorrelations. Many (cf. Gorsuch, 1983; Hendrickson & White, 1964; Mulaik, 2009) advocate for raising varimax loadings to the fourth power (the default) but some (e.g., Gorsuch) advocate for trying power = 2 and power = 6 to see if there is an improvement in the simple structure without overly inflating factor correlations.
A list of the following elements are produced:
loadings: (Matrix) The oblique, promax-rotated, factor-pattern matrix.
vmaxLoadings: (Matrix) The orthogonal, varimax-rotated, factor-structure matrix used as the input matrix for the promax rotation.
rotMatrix: (Matrix) The (rescaled) transformation matrix used in an attempt to minimize the Euclidean distance between the varimax loadings and the generated promax target matrix (cf. Hendrickson & White, 1964; Mulaik, 2009, p. 342-343, eqn. 12.44).
Phi: (Matrix) The factor correlation matrix associated with
the promax solution. Phi is found by taking the inverse of the inner
product of the (rescaled) rotation matrix (rotMatrix) with itself (i.e.,
solve(T' T)
, where T is the (rescaled) rotation matrix).
vmaxDiscrepancy: (Scalar) The value of the minimized varimax discrepancy function. promax does not have a rotational criterion but the varimax rotation does.
convergence: (Logical) Whether the varimax rotation congerged.
Table: (Matrix) The table returned from GPForth
from the GPArotation
package.
rotateControl: (List) A list containing (a) the power parameter used, (b) whether the varimax rotation used Kaiser normalization, (c) the varimax epsilon convergence criterion, and (d) the maximum number of iterations specified.
power: The power in which the varimax-rotated factor loadings are raised.
standardize: Which standardization routine was used.
epsilon: The convergence criterion set for the varimax rotation.
maxItr: The maximum number of iterations allowed for reaching convergence in the varimax rotation.
Casey Giordano (Giord023@umn.edu)
Niels G. Waller (nwaller@umn.edu)
Gorsuch, R. L. (1983). Factor Analysis, 2nd. Hillsdale, NJ: LEA.
Hendrickson, A. E., & White, P. O. (1964). Promax: A quick method for rotation to oblique simple structure. British Journal of Statistical Psychology, 17(1), 65-70.
Mulaik, S. A. (2009). Foundations of Factor Analysis. Chapman and Hall/CRC.
Other Factor Analysis Routines:
BiFAD()
,
Box26
,
GenerateBoxData()
,
Ledermann()
,
SLi()
,
SchmidLeiman()
,
faAlign()
,
faEKC()
,
faIB()
,
faLocalMin()
,
faMB()
,
faMain()
,
faScores()
,
faSort()
,
faStandardize()
,
faX()
,
fals()
,
fapa()
,
fareg()
,
fsIndeterminacy()
,
orderFactors()
,
print.faMB()
,
print.faMain()
,
summary.faMB()
,
summary.faMain()
## Generate an orthgonal factor model
lambda <- matrix(c(.41, .00, .00,
.45, .00, .00,
.53, .00, .00,
.00, .66, .00,
.00, .38, .00,
.00, .66, .00,
.00, .00, .68,
.00, .00, .56,
.00, .00, .55),
nrow = 9, ncol = 3, byrow = TRUE)
## Model-implied correlation (covariance) matrix
R <- lambda %*% t(lambda)
## Unit diagonal elements
diag(R) <- 1
## Start from just a correlation matrix
Out1 <- promaxQ(R = R,
facMethod = "fals",
numFactors = 3,
power = 4,
standardize = "Kaiser")$loadings
## Iterate the promaxQ rotation using the rotate function
Out2 <- faMain(R = R,
facMethod = "fals",
numFactors = 3,
rotate = "promaxQ",
rotateControl = list(power = 4,
standardize = "Kaiser"))$loadings
## Align the factors to have the same orientation
Out1 <- faAlign(F1 = Out2,
F2 = Out1)$F2
## Show the equivalence of factor solutions from promaxQ and rotate
all.equal(Out1, Out2, check.attributes = FALSE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.