eiv: Errors-in-Variables Rotation

View source: R/eiv.R

eivR Documentation

Errors-in-Variables Rotation

Description

Rotates a factor loading matrix to an errors-in-variables representation.

Usage

    eiv(L, identity = seq(NCOL(L)), ...)

Arguments

L

a factor loading matrix.

identity

integer vector indicating which rows of the loading matrix should form an identity matrix. Default uses the first k rows. If inverting the submatrix indicated by identity fails, a different choice of rows must be supplied.

...

additional arguments discarded.

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:

  1. It can be useful for comparison with published results in this parameterization.

  2. Standard errors are more straightforward to compute because the solution corresponds to an unconstrained optimization.

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

  4. For some purposes, only the subspace spanned by the factors matters, not the specific parameterization within this subspace.

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

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.

Author(s)

Erik Meijer and Paul Gilbert.

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.

See Also

echelon, rotations, GPForth, GPFoblq

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

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

GPArotation documentation built on April 29, 2026, 9:08 a.m.

Related to eiv in GPArotation...