MATLAB Answers


varimax rotation of PCs

Asked by caterina
on 2 Mar 2013

Hi I need to rotate a PCs coming from a Principal Component Analysis. I know I shouldn't but the analysis I'm doing requests this step. I used function rotatefactors() but it does not produce the eingenvalues of the rotated PCs. At the same time I can't use factorian() routine because my covariance matrix is not positive definite. Does anyone have an idea? Thanks!

  1 Comment

Tom Lane
on 7 Mar 2013

I would have thought that if you rotate the coordinate system away from the eigenvectors, then it is no longer meaningful to compute eigenvalues.


No products are associated with this question.

2 Answers

Answer by Tom Lane
on 8 Mar 2013
 Accepted answer

On reflection, if you are thinking of the eigenvalues as the variances of the scores, perhaps this is what you want after rotation:

% Eigenvalues are the variances of the scores
load hald
[C,S,latent] = pca(ingredients);
V = cov(ingredients);
var(S)           % variance of scores
latent'          % latent values
Sigma = eig(V)'  % eigenvalues
% Rotate away from the principal components
[L,T] = rotatefactors(C(:,1:2));
% Variances of the rotated scores, if we have S
var1 = diag(cov(S(:,1:2)*T))'
% Variances computed without using the scores
var2 = diag(L'*V*L)'


Answer by caterina
on 10 Mar 2013

Thank you very much! You helped me a lot. c.


Join the 15-year community celebration.

Play games and win prizes!

Learn more
Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!