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

### Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

# 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.

## Products

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)'
```

## 0 Comments

Answer by caterina on 10 Mar 2013

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

Contact us