Stata 11 help for rotatemat

help rotatemat dialog: rotatemat also see: rotate -------------------------------------------------------------------------------

Title

[MV] rotatemat -- Orthogonal and oblique rotations of a Stata matrix

Syntax

rotatemat matrix_L [, options]

options description ------------------------------------------------------------------------- Main orthogonal restrict to orthogonal rotations; the default, except with promax() oblique allow oblique rotations rotation_methods rotation criterion normalize rotate Kaiser normalized matrix

Reporting format(%fmt) display format for matrices; default is format(%9.5f) blanks(#) display numbers as blanks when |loadings| < #; default is blanks(0) nodisplay suppress all output except log and trace noloading suppress display of rotated loadings norotation suppress display of rotation matrix matname(str) descriptive label of the matrix to be rotated colnames(str) descriptive name for columns of the matrix to be rotated

Optimization optimize_options control the maximization process; seldom used -------------------------------------------------------------------------

rotation_methods description ------------------------------------------------------------------------- Main * varimax varimax (orthogonal only); the default vgpf varimax via the GPF algorithm (orthogonal only) quartimax quartimax (orthogonal only) equamax equamax (orthogonal only) parsimax parsimax (orthogonal only) entropy minimum entropy (orthogonal only) tandem1 Comrey's tandem 1 principle (orthogonal only) tandem2 Comrey's tandem 2 principle (orthogonal only)

* promax[(#)] promax power # (implies oblique); default is promax(3)

oblimin[(#)] oblimin with gamma=#; default is oblimin(0) cf(#) Crawford-Ferguson family with kappa=#, 0<=#<=1 bentler Bentler's invariant pattern simplicity oblimax oblimax quartimin quartimin target(Tg) rotate toward matrix Tg partial(Tg W) rotate toward matrix Tg, weighted by matrix W ------------------------------------------------------------------------- * varimax and promax ignore all optimize_options.

Menu

Statistics > Multivariate analysis > Orthogonal and oblique rotations of a matrix

Description

rotatemat applies a linear transformation T to the matrix matrix_L, which we will call A, so that the result c(A*inv(T')) minimizes some criterion function c() over all matrices T in a class of feasible transformations. Two classes are supported: orthogonal (orthonormal) and oblique. orthonormal rotations comprise all orthonormal matrices T, such that T'*T = T*T' = I; here A*inv(T') simplifies to A*T. Oblique rotations are characterized by diag(T'*T) = 1. A wide variety of criteria c() is available, representing different ways to measure the "simplicity" of a matrix. Most of these criteria can be applied with both orthogonal and oblique rotations.

If you are interested in rotation after factor, factormat, pca, or pcamat, see [MV] factor postestimation, [MV] pca postestimation, and the general description of rotate as a postestimation facility in [MV] rotate.

This entry describes the computation engine for orthogonal and oblique transformations of Stata matrices. This command may be used directly on any Stata matrix.

Options

+------+ ----+ Main +-------------------------------------------------------------

orthogonal specifies that an orthogonal rotation be applied. This is the default.

See Rotation criteria below for details on the rotation_methods available with orthogonal.

oblique specifies that an oblique rotation be applied. This often yields more interpretable factors with a simpler structure than obtained with an orthogonal rotation. In many applications (e.g., after factor and pca) the factors before rotation are orthogonal (uncorrelated), whereas the oblique rotated factors are correlated.

See Rotation criteria below for details on the rotation_methods available with oblique.

normalize requests that the rotation be applied to the Kaiser normalization of the matrix A, so that the rowwise sums of squares r equal 1.

+-----------+ ----+ Reporting +--------------------------------------------------------

format(%fmt) specifies the display format for matrices. The default is format(%9.5f).

blanks(#) specifies that small values of the rotated matrix -- i.e., those elements of A (T')^{-1} that are less than # in absolute value -- are displayed as spaces.

nodisplay suppresses all output except the log and trace.

noloading suppresses the display of the rotated matrix.

norotation suppresses the display of the optimal rotation matrix.

matname(str) is a rarely used output option; it specifies a descriptive label of the matrix to be rotated.

colnames(str) is a rarely used output option; it specifies a descriptive name to refer to the columns of the matrix to be rotated. For instance, colnames(components) specifies that the output labels the columns as "components". The default is "factors".

+--------------+ ----+ Optimization +-----------------------------------------------------

optimize_options control the iterative optimization process. These options are seldom used.

iterate(#) is a rarely used option; it specifies the maximum number of iterations. The default is iterate(1000).

log specifies that an iteration log be displayed.

trace is a rarely used option; it specifies that the rotation be displayed at each iteration.

tolerance(#) is one of three criteria for declaring convergence and is rarely used. The tolerance() convergence criterion is satisfied when the relative change in the rotation matrix T from one iteration to the next is less than or equal to #. The default is tolerance(1e-6).

ltolerance(#) is one of three criteria for declaring convergence and is rarely used. The ltolerance() convergence criterion is satisfied when the relative change in the minimization criterion c() from one iteration to the next is less than or equal to #. The default is ltolerance(1e-6).

protect(#) requests that # optimizations with random starting values be performed and that the best of the solutions be reported. The output also indicates whether all starting values converged to the same solution. When specified with a large number, such as protect(50), this provides reasonable assurance that the solution found is the global maximum and not just a local maximum. If trace is also specified, the rotation matrix and rotation criterion value of each optimization will be reported.

maxstep(#) is a rarely used option; it specifies the maximum number of step-size halvings. The default is maxstep(20).

init(matname) is a rarely used option; it specifies the initial rotation matrix. matname should be square and regular (nonsingular) and have the same number of columns as matrix matrix_L to be rotated. It should be orthogonal (T'*T = T*T' = I) or normal (diag(T'*T) = 1), depending on whether orthogonal or oblique rotations are performed. init() cannot be combined with random. If neither init() nor random is specified, the identity matrix is used as the initial rotation.

random is a rarely used option; it specifies that a random orthogonal or random normal matrix is to be used as the initial rotation matrix. random cannot be combined with init(). If neither init() nor random is specified, the identity matrix is used as the initial rotation.

Rotation criteria

In the descriptions below, the matrix to be rotated is denoted as A, p denotes the number of rows of A, and f denotes the number of columns of A (factors or components). If A is a loading matrix from factor or pca, p is the number of variables, and f the number of factors or components.

Criteria suitable only for orthogonal rotations

varimax and vgpf apply the orthogonal varimax rotation. varimax maximizes the variance of the squared loadings within factors (columns of A). It is equivalent to cf(1/p) and to oblimin(1). varimax, the most popular rotation, is implemented with a dedicated fast algorithm and ignores all optimize_options. Specify vgpf to switch to the general GPF algorithm used for the other criteria.

quartimax uses the quartimax criterion. quartimax maximizes the variance of the squared loadings within the variables (rows of A). For orthogonal rotations, quartimax is equivalent to cf(0) and to oblimax.

equamax specifies the orthogonal equamax rotation. equamax maximizes a weighted sum of the varimax and quartimax criteria, reflecting a concern for simple structure within variables (rows of A) as well as within factors (columns of A). equamax is equivalent to oblimin(p/2) and cf(f/(2p)).

parsimax specifies the orthogonal parsimax rotation. parsimax is equivalent to cf((f-1)/(p+f-2)).

entropy applies the minimum entropy rotation criterion.

tandem1 specifies that the first principle of Comrey's tandem be applied. According to Comrey (1967), this principle should be used to judge which "small" factors should be dropped.

tandem2 specifies that the second principle of Comrey's tandem be applied. According to Comrey (1967), tandem2 should be used for "polishing".

Criteria suitable only for oblique rotations

promax[(#)] specifies the oblique promax rotation. The optional argument specifies the promax power. Not specifying the argument is equivalent to specifying promax(3). Values less than 4 are recommended, but the choice is yours. Larger promax powers simplify the loadings (generate numbers closer to zero and one) but at the cost of additional correlation between factors. Choosing a value is a matter of trial and error, but most sources find values in excess of 4 undesirable in practice. The power must be greater than 1 but is not restricted to integers.

Promax rotation is an oblique rotation method that was developed before the "analytical methods" (based on criterion optimization) became computationally feasible. Promax rotation comprises an oblique Procrustean rotation of the original loadings A toward the elementwise #-power of the orthogonal varimax rotation of A.

Criteria suitable for orthogonal and oblique rotations

oblimin[(#)] specifies that the oblimin criterion with gamma = # be used. When restricted to orthogonal transformations, the oblimin() family is equivalent to the orthomax criterion function. Special cases of oblimin() include

+------------------------------------+ | gamma Special case | |------------------------------------| | 0 quartimax / quartimin | | 1/2 biquartimax / biquartimin | | 1 varimax / covarimin | | p/2 equamax | +------------------------------------+ p = number of rows of A.

gamma defaults to zero. gamma < 0 is recommended for oblique rotations. For gamma > 0 it is possible that optimal oblique rotations do not exist; the iterative procedure used to compute the solution will wander off to a degenerate solution.

cf(#) specifies that a criterion from the Crawford-Ferguson family be used with kappa = #. cf(kappa) can be seen as (1-kappa)cf_1(A) + kappa cf_2(A), where cf_1(A) is a measure of row parsimony and cf_2(A) is a measure of column parsimony. cf_1(A) attains its greatest lower bound when no row of A has more than one nonzero element, whereas cf_2(A) reaches zero if no column of A has more than one nonzero element.

For orthogonal rotations, the Crawford-Ferguson family is equivalent to the oblimin() family. For orthogonal rotations, special cases include the following:

+----------------------------------------+ | kappa Special case | |----------------------------------------| | 0 quartimax / quartimin | | 1/p varimax / covarimin | | f/(2p) equamax | | (f-1)/(p+f-2) parsimax | | 1 factor parsimony | +----------------------------------------+ p = number of rows of A. f = number of columns of A.

bentler specifies that Bentler's "invariant pattern simplicity" criterion be used.

oblimax specifies the oblimax criterion. oblimax maximizes the number of high and low loadings. oblimax is equivalent to quartimax for orthogonal rotations.

quartimin specifies that the quartimin criterion be used. For orthogonal rotations, quartimin is equivalent to quartimax.

target(Tg) specifies that A be rotated as near as possible to the conformable matrix Tg. Nearness is expressed by the Frobenius matrix norm.

partial(Tg W) specifies that A be rotated as near as possible to the conformable matrix Tg. Nearness is expressed by a weighted (by W) Frobenius matrix norm. W should be nonnegative, and usually is zero-one valued, with ones identifying the target values to be reproduced as closely as possible by the factor loadings, whereas zeros identify loadings to remain unrestricted.

Remark on identification

All supported criteria are invariant with respect to permutations of the columns and change of signs of the columns. rotatemat returns the solution with positive column sums and with columns sorted by the L2 norm; columns are ordered with respect to the L1 norm if the columns have the same L2 norm.

Examples

. rotatemat L . rotatemat X, oblique . rotatemat L, entropy protect(20)

Saved results

rotatemat saves the following in r():

Scalars r(f) criterion value r(iter) number of GPF iterations r(rc) return code r(nnconv) number of nonconvergent trials; protect() only

Macros r(cmd) rotatemat r(ctitle) descriptive label of rotation method r(ctitle12) version of r(ctitle) at most 12 characters long r(criterion) criterion name (e.g., oblimin) r(class) orthogonal or oblique r(normalization) kaiser or none r(carg) criterion argument

Matrices r(T) optimal transformation T r(AT) optimal AT = A(T')^-1 r(fmin) minimums found; protect() only

Also see

Manual: [MV] rotatemat

Help: [MV] rotate; [MV] procrustes


© Copyright 1996–2009 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index