Perform Rotations

DESCRIPTION:
Computes rotations, the possible rotations include procrustes, promax, the oblimin family, and the orthomax family.

This function is generic (see Methods); method functions can be written to handle specific classes of data. Classes which already have methods for this function include: factanal, princomp.


USAGE:
rotate(x, ...)
rotate.default(x, rotation=NULL, orthogonal=T, parameters=NULL,
               normalize=T)

REQUIRED ARGUMENTS:
x:
an object of an appropriate class for rotate, and a matrix (generally with fewer columns than rows) for rotate.default.

OPTIONAL ARGUMENTS:
rotation:
character string partially matching the name of a rotation. The names are: "varimax", "quartimax", "equamax", "parsimax", "orthomax", "covarimin", "biquartimin", "quartimin", "oblimin", "crawford.ferguson", "procrustes", "promax", "none". If rotation is NULL, then the remaining arguments define the rotation.
orthogonal:
logical flag: if TRUE, the rotation is constrained to be orthogonal.
parameters:
parameters for the rotation. Most rotations will ignore these, but the families ("oblimin", "orthomax" and "crawford.ferguson") will use them. This is required for Procrustes rotations and must be a matrix of the same dimension as x. If parameters is NULL, then the default for orthogonal rotations is parameters=1, and for oblique rotations the default is parameters=c(1/p, 1, -1/p, -1) where p is the number of rows of x.
normalize:
logical flag: if TRUE, then Kaiser normalization is performed.

VALUE:
the return value depends on the method of rotate that is used.

rotate.default returns a list which depends on the type of rotation (see obliquemin, orthomax and procrustes). The list that is returned will always contain the following components:

rmat:
the rotated version of the matrix.
tmat:
the transformation matrix. Thus x %*% tmat is equal to rmat up to numerical precision.

DETAILS:
The parameters argument provides a means of selecting a specific rotation. For orthogonal rotations (rotation=orthomax, or rotation=NULL and orthogonal=T), parameters must be of length 1. For the oblimin family, parameters should be of length 1 or length 4. Crawford-Ferguson rotations allows parameters to be of length 2 or 4.

REFERENCES:
Harman, H. H. (1976). Modern Factor Analysis, 3rd Edition. University of Chicago Press, Chicago.

Mardia, K. V., Kent, J. T. and Bibby, J. M. (1979). Multivariate Analysis. Academic Press, London.


SEE ALSO:
obliquemin , orthomax , procrustes .

EXAMPLES:
amat <- matrix(c(2,-1,-2,3,2,1,-2,-4),4)
rotate(amat) # varimax rotation
rotate(amat, "quartimin")
rotate(amat, ortho=T, param=10)