\encoding{UTF-8}
\name{echelon}
\alias{echelon}
\title{Echelon Rotation}
\usage{
    echelon(L, reference = seq(NCOL(L)), ...)
}
\arguments{
    \item{L}{a factor loading matrix.}
    \item{reference}{integer vector indicating which rows of the loading
         matrix are used to determine the rotation transformation.
         Default uses the first \eqn{k}{k} rows. If the submatrix
         indicated by \code{reference} is singular, a different choice
         of rows must be supplied.}
    \item{...}{additional arguments discarded.}
}
\value{
  A \code{GPArotation} object which is a list with elements:
  \item{loadings}{The rotated loadings matrix.}
  \item{Th}{The rotation matrix.}
  \item{method}{A string indicating the rotation method (\code{"echelon"}).}
  \item{orthogonal}{Always \code{TRUE} (an orthogonal solution is assumed;
       \eqn{\Phi}{Phi} is the identity matrix).}
  \item{convergence}{Always \code{TRUE} (the optimization is not iterative).}
}
\description{
  Rotates a factor loading matrix to an echelon parameterization.
}
\details{
  The loading matrix is rotated so that the \eqn{k}{k} rows indicated by
  \code{reference} form the Cholesky factorization given by
  \code{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 \code{\link[stats]{factanal}} via the \code{rotation}
  argument.

  This parameterization has several useful properties:

  \enumerate{
    \item It can be useful for comparison with published results in this
          parameterization.
    \item Standard errors are more straightforward to compute because the
          solution corresponds to an unconstrained optimization.
    \item Models with \eqn{k}{k} and \eqn{k+1}{k+1} factors are nested,
          making it straightforward to test the \eqn{k}{k}-factor model
          versus the \eqn{(k+1)}{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 \eqn{k}{k}-factor model versus a
          \eqn{(k+1)}{k+1}-factor model is a joint test of whether all
          free parameters (loadings) in the \eqn{(k+1)}{k+1}st column
          are zero.
    \item For some purposes, only the subspace spanned by the factors
          matters, not the specific parameterization within this subspace.
    \item 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.
    \item 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.
}
\examples{
  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))
}
\seealso{
  \code{\link{eiv}},
  \code{\link{rotations}},
  \code{\link{GPForth}},
  \code{\link{GPFoblq}}
}
\references{
  McDonald, R.P. (1999). \emph{Test Theory: A Unified Treatment}.
    Erlbaum.

  Wansbeek, T. and Meijer, E. (2000). \emph{Measurement Error and
    Latent Variables in Econometrics}. North-Holland.
}
\author{Erik Meijer and Paul Gilbert.}
\concept{rotation}
\keyword{multivariate}