\encoding{UTF-8}
\name{vgQ}
\alias{vgQ}
\alias{vgQ.oblimin}
\alias{vgQ.quartimin}
\alias{vgQ.target}
\alias{vgQ.pst}
\alias{vgQ.oblimax}
\alias{vgQ.entropy}
\alias{vgQ.quartimax}
\alias{vgQ.varimax}
\alias{vgQ.simplimax}
\alias{vgQ.bentler}
\alias{vgQ.tandemI}
\alias{vgQ.tandemII}
\alias{vgQ.geomin}
\alias{vgQ.bigeomin}
\alias{vgQ.cf}
\alias{vgQ.infomax}
\alias{vgQ.mccammon}
\alias{vgQ.bifactor}
\alias{vgQ.varimin}
\alias{vgQ.lp.wls}

\title{Rotation Criteria: Value and Gradient Functions}
\usage{
    vgQ.oblimin(L, gam=0)
    vgQ.quartimin(L)
    vgQ.target(L, Target=NULL)
    vgQ.pst(L, W=NULL, Target=NULL)
    vgQ.oblimax(L)
    vgQ.entropy(L)
    vgQ.quartimax(L)
    vgQ.varimax(L)
    vgQ.simplimax(L, k=nrow(L))
    vgQ.bentler(L)
    vgQ.tandemI(L)
    vgQ.tandemII(L)
    vgQ.geomin(L, delta=0.01)
    vgQ.bigeomin(L, delta=0.01)
    vgQ.cf(L, kappa=0)
    vgQ.infomax(L)
    vgQ.mccammon(L)
    vgQ.varimin(L)
    vgQ.bifactor(L)
    vgQ.lp.wls(L, W)
}
\arguments{
    \item{L}{a factor loading matrix.}
    \item{gam}{0 = Quartimin, 0.5 = Biquartimin, 1 = Covarimin.}
    \item{Target}{rotation target matrix for objective calculation.}
    \item{W}{weight matrix; weighting of each element in target rotation
         (\code{vgQ.pst}) or in iterative reweighted least squares
         (\code{vgQ.lp.wls}).}
    \item{k}{number of near-zero loadings to target.}
    \item{delta}{small constant added to \eqn{\Lambda^2}{Lambda^2} for
         numerical stability in the objective calculation.}
    \item{kappa}{complexity weight for the Crawford-Ferguson family; see
         \code{\link{cfT}} for details.}
}

\value{A list with:
  \item{f}{The value of the rotation criterion at \code{L}.}
  \item{Gq}{The gradient of the criterion at \code{L}.}
  \item{Method}{A string indicating the criterion name.}
}

\description{
  Rotation criterion functions that compute the value and gradient of the
  rotation objective Q. Not exported from the package NAMESPACE.
}

\details{
  The \code{vgQ.*} functions are called internally by the gradient projection
  optimization routines and would typically not be used directly. They can be
  inspected using \code{:::}, for example:
  \code{GPArotation:::vgQ.oblimin}. The gradient projection algorithms are
  described in Bernaards and Jennrich (2005).

  The \code{T} or \code{Q} suffix on rotation function names should be omitted
  for the corresponding \code{vgQ.*} function. For example,
  \code{GPArotation:::vgQ.target} is the criterion used by both
  \code{targetT} and \code{targetQ}.

\tabular{lll}{
\code{vgQ.oblimin}   \tab orthogonal or oblique \tab oblimin family \cr
\code{vgQ.quartimin} \tab oblique               \tab oblimin with \code{gam = 0} \cr
\code{vgQ.target}    \tab orthogonal or oblique \tab target rotation \cr
\code{vgQ.pst}       \tab orthogonal or oblique \tab partially specified target rotation \cr
\code{vgQ.oblimax}   \tab oblique               \tab maximizes overall kurtosis of loadings \cr
\code{vgQ.entropy}   \tab orthogonal            \tab minimum entropy \cr
\code{vgQ.quartimax} \tab orthogonal            \tab maximizes variance of squared loadings within variables \cr
\code{vgQ.varimax}   \tab orthogonal            \tab maximizes variance of squared loadings within factors \cr
\code{vgQ.simplimax} \tab oblique               \tab minimizes the k smallest squared loadings \cr
\code{vgQ.bentler}   \tab orthogonal or oblique \tab Bentler invariant pattern simplicity \cr
\code{vgQ.tandemI}   \tab orthogonal            \tab Tandem principle I criterion \cr
\code{vgQ.tandemII}  \tab orthogonal            \tab Tandem principle II criterion \cr
\code{vgQ.geomin}    \tab orthogonal or oblique \tab minimizes geometric mean of squared loadings \cr
\code{vgQ.bigeomin}  \tab orthogonal or oblique \tab geomin with a general factor in column 1 \cr
\code{vgQ.cf}        \tab orthogonal or oblique \tab Crawford-Ferguson family \cr
\code{vgQ.infomax}   \tab orthogonal or oblique \tab infomax information criterion \cr
\code{vgQ.mccammon}  \tab orthogonal            \tab McCammon minimum entropy ratio \cr
\code{vgQ.varimin}   \tab orthogonal            \tab varimin criterion \cr
\code{vgQ.bifactor}  \tab orthogonal or oblique \tab bifactor/biquartimin rotation \cr
\code{vgQ.lp.wls}    \tab orthogonal or oblique \tab iterative reweighted least squares
                                                      for \eqn{L^p}{Lp} rotation \cr
                                                      }

  See \code{\link{rotations}} for details on rotation arguments.

  New rotation criteria can be added by defining a function named
  \code{vgQ.newmethod}. The function takes \code{L} as its first argument,
  plus any additional arguments, and must return a list with elements
  \code{f}, \code{Gq}, and \code{Method}.

  Gradient projection \emph{without} derivatives can be performed using the
  \code{GPArotateDF} package; type
  \code{vignette("GPArotateDF", package = "GPArotation")} at the command line.
}

\examples{
  GPArotation:::vgQ.oblimin
}

\seealso{
   \code{\link{rotations}},
   \code{\link{GPFRSorth}}
}

\references{
  Bernaards, C.A. and Jennrich, R.I. (2005) Gradient Projection Algorithms
    and Software for Arbitrary Rotation Criteria in Factor Analysis.
    \emph{Educational and Psychological Measurement}, \bold{65}, 676--696.
    doi: 10.1177/0013164404272507
    }

\author{Coen A. Bernaards and Robert I. Jennrich
        with some R modifications by Paul Gilbert.}
\concept{rotation}
\keyword{multivariate}