**[MV] rotate** -- Orthogonal and oblique rotations after factor and pca

__Syntax__

__rot__**ate** [**,** *options*]

__rot__**ate,** **clear**

*options* Description
-------------------------------------------------------------------------
Main
__ortho__**gonal** restrict to orthogonal rotations; the default,
except with **promax()**
__obliq__**ue** allow oblique rotations
*rotation_methods* rotation criterion
__norm__**alize** rotate Kaiser normalized matrix
__f__**actors(***#***)** rotate *#* factors or components; default is to
rotate all
__comp__**onents(***#***)** synonym for **factors()**

Reporting
__bl__**anks(***#***)** display loadings as blank when |loading| < *#*;
default is **blanks(0)**
__det__**ail** show **rotatemat** output; seldom used
__for__**mat(***%fmt***)** display format for matrices; default is
**format(%9.5f)**
__noload__**ing** suppress display of rotated loadings
__norota__**tion** suppress display of rotation matrix

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

*rotation_methods* Description
-------------------------------------------------------------------------
* __v__**arimax** varimax (**orthogonal** only); the default
**vgpf** varimax via the GPF algorithm (**orthogonal** only)
__quartima__**x** quartimax (**orthogonal** only)
__equa__**max** equamax (**orthogonal** only)
__parsi__**max** parsimax (**orthogonal** only)
__entr__**opy** minimum entropy (**orthogonal** only)
**tandem1** Comrey's tandem 1 principle (**orthogonal** only)
**tandem2** Comrey's tandem 2 principle (**orthogonal** only)

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

__oblimi__**n**[**(***#***)**] oblimin with gamma=*#*; default is **oblimin(0)**
**cf(***#***)** Crawford-Ferguson family with kappa=*#*, 0<=*#*<=1
__ben__**tler** Bentler's invariant pattern simplicity
__oblima__**x** oblimax
__quartimi__**n** quartimin
__tar__**get(***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 >** **Factor and principal component**
**analysis > Postestimation >** **Rotate loadings**

__Description__

**rotate** performs a rotation of the loading matrix after **factor**, **factormat**,
**pca**, and **pcamat**; see **[MV] factor** and **[MV] pca**. Many rotation criteria
(such as varimax and oblimin) are available that can be applied with
respect to the orthogonal and oblique class of rotations.

**rotate, clear** removes the rotation results from the estimation results.

If you want to rotate a given matrix, see **[MV] rotatemat**.

If you want a Procrustes rotation, which rotates variables optimally
toward other variables, see **[MV] procrustes**.

__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 that
obtained with an orthogonal rotation. In many applications (for
example, 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**.

**clear** specifies that rotation results be cleared (removed) from the last
estimation command. **clear** may not be combined with any other option.

**rotate** stores its results within the **e()** results of **pca** and **factor**,
overwriting any previous rotation results. Postestimation commands
such as **predict** operate on the last rotated results, if any, instead
of the unrotated results, and allow you to specify **norotated** to use
the unrotated results. The **clear** option of **rotate** allows you to
remove the rotation results from **e()**, thus freeing you from having to
specify **norotated** for the postestimation commands.

**normalize** requests that the rotation be applied to the Kaiser
normalization (Horst 1965) of the matrix *A*, so that the rowwise sums
of squares equal 1. Kaiser normalization applies to the rotated
columns only (see the **factors()** option below).

**factors(***#***)**, and synonym **components(***#***)**, specifies the number of factors or
components (columns of the loading matrix) to be rotated, counted
"from the left", that is, with the lowest column index. The other
columns are left unrotated. All columns are rotated by default.

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

**blanks(***#***)** shows blanks for loadings with absolute values smaller than *#*.

**detail** displays the **rotatemat** output; seldom used.

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

**noloading** suppresses the display of the rotated loadings.

**norotation** suppresses the display of the optimal rotation matrix.

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

*optimize_options* are seldom used; see **[MV] rotatemat**.

__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 (Kaiser 1958).
**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 (Harman 1976). **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***/(2***p***))**.

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

**entropy** applies the minimum entropy rotation criterion (Jennrich
2004).

**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. Jennrich (1979) recommends 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 (1970)
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*/(2*p*) 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 (Bentler 1977) 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.

__Examples__

Setup
**. webuse bg2**
**. factor bg2cost1-bg2cost6, factors(2)**

Perform varimax rotation, the default
**. rotate**

Perform oblique promax rotation with promax power equal to 2
**. rotate, oblique promax(2)**

__Stored results__

**rotate** adds stored results named **e(r_***name***)** to the stored results that
were already defined by **factor** or **pca**.

**rotate** adds to the following results:

Scalars
**e(r_f)** number of factors/components in rotated
solution
**e(r_fmin)** rotation criterion value

Macros
**e(r_class)** **orthogonal** or **oblique**
**e(r_criterion)** rotation criterion
**e(r_ctitle)** title for rotation
**e(r_normalization)** **kaiser** or **none**

Matrices
**e(r_L)** rotated loadings
**e(r_T)** rotation
**e(r_Phi)** correlations between common factors (after
**factor** only)
**e(r_Ev)** explained variance by common factors (**factor**)
or rotated components (**pca**)

The factors/components in the rotated solution are in decreasing order of
**e(r_Ev)**.

__References__

Bentler, P. M. 1977. Factor simplicity index and transformations.
*Psychometrika* 42: 277-295.

Comrey, A. L. 1967. Tandem criteria for analytic rotation in factor
analysis. *Psychometrika* 32: 277-295.

Crawford, C. B., and G. A. Ferguson. 1970. A general rotation criterion
and its use in orthogonal rotation. *Psychometrika* 35: 321-332.

Harman, H. H. 1976. *Modern Factor Analysis*. 3rd ed. Chicago: University
of Chicago Press.

Horst, P. 1965. *Factor Analysis of Data Matrices*. New York: Holt,
Rinehart & Winston.

Jennrich, R. I. 1979. Admissible values of gamma in direct oblimin
rotation. *Psychometrika* 44: 173-177.

------. 2004. Rotation to simple loadings using component loss functions:
The orthogonal case. *Psychometrika* 69: 257-273.

Kaiser, H. F. 1958. The varimax criterion for analytic rotation in factor
analysis. *Psychometrika* 23: 187-200.