echelon: Echelon Rotation

View source: R/echelon.R

echelonR Documentation

Echelon Rotation


Rotate to an echelon parameterization.


    echelon(L, reference=seq(NCOL(L)), ...)



a factor loading matrix


indicates rows of loading matrix that should be used to determine the rotation transformation.


additional arguments discarded.


The loadings matrix is rotated so the k rows of the loading matrix indicated by reference are the Cholesky factorization given by t(chol(L[reference,] %*% t(L[reference,]))). This defines the rotation transformation, which is then also applied to other rows to give the new loadings matrix.

The optimization is not iterative and does not use the GPA algorithm. The function can be used directly or the function name can be passed to factor analysis functions like factanal. An orthogonal solution is assumed (so Phi is identity).

The default uses the first k rows as the reference. If the submatrix of L indicated by reference is singular then the rotation will fail and the user needs to supply a different choice of rows.

One use of this parameterization is for obtaining good starting values (so it may appear strange to rotate towards this solution afterwards). It has a few other purposes:

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

(2) The S.E.s are more straightforward to compute, because it is the solution to an unconstrained optimization (though not necessarily computed as such).

(3) The models with k and (k+1) factors are nested, so it is more straightforward to test the k-factor model versus the (k+1)-factor model. In particular, in addition to the LR test (which does not depend on the rotation), now the Wald test and LM test can be used as well. For these, the test of a k-factor model versus a (k+1)-factor model is a joint test whether all the free parameters (loadings) in the (k+1)st column of L are zero.

(4) For some purposes, only the subspace spanned by the factors is important, not the specific parameterization within this subspace.

(5) The back-predicted indicators (explained portion of the indicators) do not depend on the rotation method. Combined with the greater ease to obtain correct standard errors of this method, this allows easier and more accurate prediction-standard errors.

(6) This parameterization and its standard errors can be used to detect identification problems (McDonald, 1999, pp. 181-182).


A list (which includes elements used by factanal) with:


The new loadings matrix.


The rotation.


A string indicating the rotation objective function ("echelon").


For consistency with other rotation results. Always TRUE.


For consistency with other rotation results. Always TRUE.


Erik Meijer and Paul Gilbert.


Roderick P. McDonald (1999) Test Theory: A Unified Treatment, Mahwah, NJ: Erlbaum.

Tom Wansbeek and Erik Meijer (2000) Measurement Error and Latent Variables in Econometrics, Amsterdam: North-Holland.

See Also

eiv, rotations, GPForth, GPFoblq


  data("WansbeekMeijer", package="GPArotation")
  fa.unrotated  <- factanal(factors = 2, covmat=NetherlandsTV, rotation="none")

  fa.ech <- echelon(fa.unrotated$loadings)
  fa.ech2 <- factanal(factors = 2, covmat=NetherlandsTV, rotation="echelon")
  cbind(loadings(fa.unrotated), loadings(fa.ech), loadings(fa.ech2))

  fa.ech3 <- echelon(fa.unrotated$loadings, reference=6:7)
  cbind(loadings(fa.unrotated), loadings(fa.ech), loadings(fa.ech3))

GPArotation documentation built on April 16, 2022, 5:05 p.m.