Skip to content

Factor rotation

Factor rotation changes loading patterns while preserving fitted covariance. Compare orthogonal varimax and oblique methods with a checked two-factor example.

Factor rotation changes the coordinate system used to describe the latent factors in a fitted factor analysis model. It seeks a loading pattern that is easier to interpret while preserving the model-implied covariance of the observed variables. For a quant analysing a panel of returns, the same fitted co-movement can therefore admit several different factor stories.

A rotation can help reveal which series share exposures. It cannot, by itself, establish that a factor is “growth”, “liquidity” or any other economic cause. Here, rotation means a statistical transformation of loadings, rather than changing portfolio allocations between investment factors.

Change both sides of the factor representation

Write a centred common-factor model as

x=Lf+ε,Cov(f)=Φ,Cov(ε)=Ψ,Cov(f,ε)=0.x=Lf+\varepsilon, \qquad \text{Cov}(f)=\Phi, \qquad \text{Cov}(\varepsilon)=\Psi, \qquad \text{Cov}(f,\varepsilon)=0.

There are pp observed variables, kk factors and a p×kp\times k loading matrix LL. Assume diagonal Ψ\Psi, so residual cross-covariances are zero. The implied covariance matrix is

Σ=LΦL⊤+Ψ.\Sigma=L\Phi L^\top+\Psi.
The first term is common-factor covariance; Ψ\Psi contains the residual uniquenesses. The familiar uncorrelated, unit-variance factor case has Φ=I\Phi=I; see the R factor-analysis model documentation.

For an orthogonal matrix QQ, satisfying Q⊤Q=QQ⊤=IQ^\top Q=QQ^\top=I, define

L∗=LQ,f∗=Q⊤f.L^*=LQ,\qquad f^*=Q^\top f.

Then L∗f∗=LQQ⊤f=LfL^*f^*=LQQ^\top f=Lf: every common-component realisation is unchanged. Starting from Φ=I\Phi=I, the transformed factors also have identity covariance, and

L∗(L∗)⊤=LQQ⊤L⊤=LL⊤.L^*(L^*)^\top=LQQ^\top L^\top=LL^\top.
With the same Ψ\Psi, the entire implied Σ\Sigma is unchanged. Covariance-based fit criteria therefore cannot prefer one of these equivalent orientations. “Orthogonal factors” here means uncorrelated, which alone does not imply independence.

Three return series, two descriptions

Consider an exact toy population model for three standardized return series, A, B and C. Loadings are dimensionless, and both factors have unit variance:
L=(0.8000.80.40.4),Q=(cos⁡45∘−sin⁡45∘sin⁡45∘cos⁡45∘).L=\begin{pmatrix} 0.8&0\\ 0&0.8\\ 0.4&0.4 \end{pmatrix}, \qquad Q=\begin{pmatrix} \cos45^\circ&-\sin45^\circ\\ \sin45^\circ&\cos45^\circ \end{pmatrix}.

Right multiplication gives

L∗=LQ≈(0.565685−0.5656850.5656850.5656850.5656850).L^*=LQ\approx\begin{pmatrix} 0.565685&-0.565685\\ 0.565685&0.565685\\ 0.565685&0 \end{pmatrix}.
In the original description, A and B each load on only one factor, while C loads equally on both. In the transformed description, C loads only on the first factor; A and B also depend on the second, with opposite signs. This chosen 45∘45^\circ transformation illustrates equivalence; it is not the output of a varimax optimisation.
Toy standardized return model: loadings A (0.8, 0), B (0, 0.8), C (0.4, 0.4) become A (0.566, -0.566), B (0.566, 0.566), C (0.566, 0). Communalities remain 0.64, 0.64 and 0.32, and common covariances A–B, A–C and B–C remain 0, 0.32 and 0.32.
Toy standardized return model: loadings A (0.8, 0), B (0, 0.8), C (0.4, 0.4) become A (0.566, -0.566), B (0.566, 0.566), C (0.566, 0). Communalities remain 0.64, 0.64 and 0.32, and common covariances A–B, A–C and B–C remain 0, 0.32 and 0.32.
Exact toy population. Right multiplication by this Q turns row-loading coordinates clockwise by 45 degrees; the two panels use equal scales. All common covariances and communalities are preserved.
A variable's communality is its common-factor variance. With orthogonal unit-variance factors, it is the sum of that row's squared loadings:
SeriesOriginal communalityAfter rotationUniqueness for unit total variance
A0.82=0.640.8^2=0.640.565685…2+(−0.565685…)2=0.640.565685\ldots^2+(-0.565685\ldots)^2=0.640.360.36
B0.82=0.640.8^2=0.640.565685…2+0.565685…2=0.640.565685\ldots^2+0.565685\ldots^2=0.640.360.36
C0.42+0.42=0.320.4^2+0.4^2=0.320.565685…2=0.320.565685\ldots^2=0.320.680.68

The complete common covariance is identical in both descriptions:

LL⊤=L∗(L∗)⊤=(0.6400.3200.640.320.320.320.32).LL^\top=L^*(L^*)^\top= \begin{pmatrix} 0.64&0&0.32\\ 0&0.64&0.32\\ 0.32&0.32&0.32 \end{pmatrix}.

Adding Ψ=diag(0.36,0.36,0.68)\Psi=\text{diag}(0.36,0.36,0.68) gives unit variances for all three series. As a realisation check, f=(1,−0.5)⊤f=(1,-0.5)^\top produces Lf=(0.8,−0.4,0.2)⊤Lf=(0.8,-0.4,0.2)^\top. Its transformed value is f∗≈(0.353553,−1.060660)⊤f^*\approx(0.353553,-1.060660)^\top, and L∗f∗L^*f^* gives exactly the same common component. Rotating the loadings while keeping the old factor values would break that equivalence.

What varimax and oblique rotation choose

Varimax is an orthogonal rotation criterion: it increases the dispersion of squared loadings within each factor column, seeking a contrast between large and small loadings. It does not guarantee that every variable loads on just one factor. See UCLA's rotation and simple-structure discussion.
Oblique methods, including promax and oblimin, allow correlated factors. R's rotation documentation distinguishes orthogonal varimax from the general linear transformation used by promax. It also documents Kaiser normalization: rescale loading rows to unit length before rotation, then restore their lengths. Report the rotation method and normalization convention when comparing results.

An arbitrary invertible transformation AA requires

L∗=LA,f∗=A−1f,Φ∗=A−1ΦA−⊤,L^*=LA,\qquad f^*=A^{-1}f,\qquad \Phi^*=A^{-1}\Phi A^{-\top},

where A−⊤=(A−1)⊤A^{-\top}=(A^{-1})^\top. This ensures

L∗Φ∗(L∗)⊤=LΦL⊤.L^*\Phi^*(L^*)^\top=L\Phi L^\top.

Keeping Φ∗=I\Phi^*=I after a general oblique transformation would usually change the model. Factor variances are commonly normalized back to one, leaving their correlations free.

For standardized observed variables and unit-variance factors, distinguish three outputs:

  • The pattern matrix L∗L^* contains the coefficients in the joint factor representation.
  • The structure matrix S=L∗Φ∗S=L^*\Phi^* contains variable–factor correlations, including association through other correlated factors.
  • Communalities are the diagonal entries of L∗Φ∗(L∗)⊤L^*\Phi^*(L^*)^\top.
UCLA's pattern–structure comparison explains this distinction. Neither table supplies additive independent variance shares when factors are correlated.

For a concrete extension of the same toy model, choose

A=(10−0.751.25),Φ∗=(10.60.61).A=\begin{pmatrix}1&0\\-0.75&1.25\end{pmatrix}, \qquad \Phi^*=\begin{pmatrix}1&0.6\\0.6&1\end{pmatrix}.

C's pattern row becomes (0.1,0.5)(0.1,0.5), and its structure row becomes (0.4,0.56)(0.4,0.56). Its communality is still

hC2=0.12+0.52+2(0.6)(0.1)(0.5)=0.32.h_C^2=0.1^2+0.5^2+2(0.6)(0.1)(0.5)=0.32.

Squaring and adding the pattern entries gives 0.260.26; doing the same with the structure entries gives 0.47360.4736. Both miss the communality. The factor-correlation matrix is essential.

Interpret the orientation without overclaiming

Rotation chooses a description within an equivalent factor representation. The number of retained factors and residual model remain separate decisions. Rotation also does not remove estimation uncertainty or make a factor label stable across samples. Economic interpretation needs additional evidence, and causal identification needs assumptions beyond a simple loading pattern.

For the background to the covariance calculation, read Expectation, Variance and Covariance — public preview; the full lesson requires a free signed-in account. For a comparison with variance-maximizing directions, Principal Component Analysis and the SVD View has a public preview and requires membership for the full lesson. PCA's original ordered variance directions and a subsequently rotated common-factor description answer different interpretation questions.

Sources

Last updated
  • factor analysis
  • factor rotation
  • varimax
  • oblique rotation
  • covariance
  • multivariate statistics
← Back to the glossaryBack to top ↑