Next: round() Up: MacAnova Help File Previous: rotate()   Contents


rotation(loadings [, method:Method, kaiser:T, reorder:T,
  lambda:lam,verbose:T]), where loadings is a REAL matrix, lam >= 0 is a
  real scalar and Method is a quoted string or CHARACTER scalar

Keywords: multivariate analysis
L <- rotation(Loadings) or L <- rotation(Loadings, method:"varimax")
sets L to a matrix derived by varimax "rotation" from Loadings.  That
is, an orthogonal matrix R is found so that L = Loadings %*% R maximizes
a certain criterion.

Loadings must be a REAL matrix with no MISSING values and with
nrows(Loadings) >= ncols(Loadings).  The result L is a REAL matrix with
the same dimensions as Loadings.

rotation(Loadings, kaiser:T [,method:"varimax"]) does the same except
Kaiser normalization is used.  That is the rows of loadings are rescaled
to have norm 1 before rotation and then unscaled after rotation.

rotation(Loadings, method:"quartimax" [, kaiser:T]) does the same except
the quartimax criterion is maximized.

rotation(Loadings, method:"equimax" [, kaiser:T]) does the same except
the equimax criterion is maximized.

rotation(Loadings, method:"orthomax", lambda:lam [, kaiser:T]) where lam
>= is a REAL scalar does the same except the orthomax crition with
parameter lam is maximized.  lam = 1, lam = 0 and lam =
ncols(Loadings)/2 correspond to varimax, quartimax and equimax rotation,

rotation(Loadings, verbose:T [,method:Method ...]) prints the value of
the criterion before and after rotation.

rotation(Loadings, reorder:T [,method:Method ...]) does the same except
that after rotation each column is multiplied by +1 or -1 so that the
column sum is positive, and the columns are reordered in decreasing
order of the column sums of squares.

Function rotation() is designed to be used to rotate a factor analysis
matrix of loadings so as to achieve "simple structure."

It is usual to rotate not the loading matrix itself, but the loading
matrix scaled so that the row sums of squared loadings are constant.
The rotated matrix is then rescaled to restore the original row sums of
squares.  This is sometimes called Kaiser normalization and is
accomplished automaticall by using 'kaiser:T' as an argument.

The rotated matrix has the form rotated_L = L %*% A, where A is m by m.
A can be recovered as
      A <- solve(L' %*% L, L' %*% rotated_L)

The algorithm used is iterative, using a default convergence criterion
of epsilon = .00001, and performing a maximum of 100 iterations.  These
values can be modified by including keyword phrases 'epsilon:value'
and/or 'maxiter:n', where value is a small positive number and n is a
positive integer.

Caution: Do not confuse rotation() with rotate() which shifts the rows
of its first argument up or down, wrapping around the end.

Gary Oehlert 2003-01-15