| echelon | R Documentation |
Rotates a factor loading matrix to an echelon parameterization.
echelon(L, reference = seq(NCOL(L)), ...)
L |
a factor loading matrix. |
reference |
integer vector indicating which rows of the loading
matrix are used to determine the rotation transformation.
Default uses the first |
... |
additional arguments discarded. |
The loading matrix is rotated so that the k rows indicated by
reference form the Cholesky factorization given by
t(chol(L[reference,] %*% t(L[reference,]))).
This defines the rotation transformation, which is then applied to all
rows to give the rotated loading matrix.
The optimization is not iterative and does not use the gradient projection
algorithm. The function can be used directly or passed to factor analysis
functions like factanal via the rotation
argument.
This parameterization has several useful properties:
It can be useful for comparison with published results in this parameterization.
Standard errors are more straightforward to compute because the solution corresponds to an unconstrained optimization.
Models with k and k+1 factors are nested,
making it straightforward to test the k-factor model
versus the (k+1)-factor model. In particular, the
Wald test and LM test can be used in addition to the LR test.
The test of a k-factor model versus a
(k+1)-factor model is a joint test of whether all
free parameters (loadings) in the (k+1)st column
are zero.
For some purposes, only the subspace spanned by the factors matters, not the specific parameterization within this subspace.
Back-predicted indicators (the explained portion of the indicators) do not depend on the rotation method. Combined with the greater ease of obtaining correct standard errors, this allows easier and more accurate prediction standard errors.
This parameterization and its standard errors can be used to detect identification problems (McDonald, 1999, pp. 181–182).
One use of echelon rotation is obtaining good starting values for subsequent rotation, though it may seem counterintuitive to rotate towards this solution afterwards.
A GPArotation object which is a list with elements:
loadings |
The rotated loadings matrix. |
Th |
The rotation matrix. |
method |
A string indicating the rotation method ( |
orthogonal |
Always |
convergence |
Always |
Erik Meijer and Paul Gilbert.
McDonald, R.P. (1999). Test Theory: A Unified Treatment. Erlbaum.
Wansbeek, T. and Meijer, E. (2000). Measurement Error and Latent Variables in Econometrics. North-Holland.
eiv,
rotations,
GPForth,
GPFoblq
data("WansbeekMeijer", package = "GPArotation")
fa.unrotated <- factanal(factors = 2, covmat = NetherlandsTV,
rotation = "none")
# Direct call
fa.ech <- echelon(fa.unrotated$loadings)
# Equivalent via factanal rotation argument
fa.ech2 <- factanal(factors = 2, covmat = NetherlandsTV,
rotation = "echelon")
# Compare unrotated, echelon, and factanal echelon loadings
cbind(loadings(fa.unrotated), loadings(fa.ech), loadings(fa.ech2))
# Echelon rotation with a different reference set
fa.ech3 <- echelon(fa.unrotated$loadings, reference = 6:7)
cbind(loadings(fa.unrotated), loadings(fa.ech), loadings(fa.ech3))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.