Errors-in-Variables Rotation
eiv.RdRotates a factor loading matrix to an errors-in-variables representation.
Value
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 (
"eiv").- orthogonal
Always
FALSE(oblique rotation).- convergence
Always
TRUE(the optimization is not iterative).- Phi
The covariance matrix of the rotated factors.
Details
The loading matrix is rotated so that the \(k\) rows indicated by
identity form an identity matrix, with the remaining
\(M-k\) rows as free parameters. \(\Phi\) is also free.
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.
Viewed as a rotation method it is oblique, with an explicit solution. Given an initial loadings matrix \(L\) partitioned as \(L = (L_1^T, L_2^T)^T\), the rotated loadings matrix is \((I, (L_2 L_1^{-1})^T)^T\) and \(\Phi = L_1 L_1^T\), where \(I\) is the \(k \times k\) identity matrix. It is assumed that \(\Phi = I\) for the initial loadings matrix.
Not all authors consider this representation to be a rotation in the strict sense.
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.
One may have prior knowledge about which reference variables load on only one factor without imposing restrictive constraints on other loadings — in this sense it has similarities to CFA.
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.
One use of this parameterization is obtaining good starting values for subsequent rotation, though it may seem counterintuitive to rotate towards this solution afterwards.
References
Hägglund, G. (1982). Factor analysis by instrumental variables methods. Psychometrika, 47, 209–222.
Lewin-Koh, S.C. and Amemiya, Y. (2003). Heteroscedastic factor analysis. Biometrika, 90, 85–97.
Wansbeek, T. and Meijer, E. (2000). Measurement Error and Latent Variables in Econometrics. North-Holland.
Examples
data("WansbeekMeijer", package = "GPArotation")
fa.unrotated <- factanal(factors = 2, covmat = NetherlandsTV,
rotation = "none")
# Direct call
fa.eiv <- eiv(fa.unrotated$loadings)
# Equivalent via factanal rotation argument
fa.eiv2 <- factanal(factors = 2, covmat = NetherlandsTV,
rotation = "eiv")
# Compare unrotated, eiv, and factanal eiv loadings
cbind(loadings(fa.unrotated), loadings(fa.eiv), loadings(fa.eiv2))
#> Factor1 Factor2 factor 1 factor 2 factor 1 factor 2
#> NL1 0.6972803 -0.3736554 1.0000000 0.0000000 0.0000000 -1.0000000
#> TV2 0.7774628 -0.3184149 0.0000000 1.0000000 1.0000000 0.0000000
#> NL3 0.6832300 -0.3620428 0.9334902 0.0415785 0.0415785 -0.9334902
#> RTL4 0.6612198 0.2361132 -5.7552381 6.0121639 6.0121639 5.7552381
#> RTL5 0.6972393 0.3026050 -6.6776277 6.8857539 6.8857539 6.6776277
#> Veronica 0.7100285 0.4059509 -7.9104168 8.0078509 8.0078509 7.9104168
#> SBS6 0.6353584 0.3526947 -6.9585766 7.0581340 7.0581340 6.9585766
# Eiv rotation with a different identity set
fa.eiv3 <- eiv(fa.unrotated$loadings, identity = 6:7)
cbind(loadings(fa.unrotated), loadings(fa.eiv), loadings(fa.eiv3))
#> Factor1 Factor2 factor 1 factor 2 factor 1 factor 2
#> NL1 0.6972803 -0.3736554 1.0000000 0.0000000 -64.434973 73.105108
#> TV2 0.7774628 -0.3184149 0.0000000 1.0000000 -63.526095 72.215616
#> NL3 0.6832300 -0.3620428 0.9334902 0.0415785 -62.790735 71.245519
#> RTL4 0.6612198 0.2361132 -5.7552381 6.0121639 -11.090687 13.434816
#> RTL5 0.6972393 0.3026050 -6.6776277 6.8857539 -7.152291 9.090254
#> Veronica 0.7100285 0.4059509 -7.9104168 8.0078509 1.000000 0.000000
#> SBS6 0.6353584 0.3526947 -6.9585766 7.0581340 0.000000 1.000000