1

I've done a PCA and varimax-rotated the EOF loadings (i.e. eigenvectors of the covariance matrix scaled by the square roots of the respective eigenvalues) and calculated the rotated PCs by multiplying the rotated EOFs with the original dataset. Now I'd like to estimate the variance explained by each rotated EOF, but I can't find any information on how to do this, despite many textbooks and papers showing explained variance of rotated EOFs.

Take for example this paper which is demonstrated in Statistical Methods in the Atmospheric Sciences by D. S. Wilks, but not fully explained.

How do I compute explained variances of varimax-rotated PCs?

amoeba
  • 93,463
  • 28
  • 275
  • 317
TLou
  • 11
  • 2
  • What exactly do you mean when you say "EOF loadings"? Is it unit-length eigenvectors of the covariance matrix? Is it eigenvectors scaled by the square roots of the respective eigenvalues? – amoeba Apr 01 '16 at 11:07
  • The eigenvectors scaled by the square roots of the respective eigenvalues. – TLou Apr 01 '16 at 11:41
  • That's good, but then you cannot compute the rotated PCs by multiplying $X$ with rotated loadings (unlike what you said in the first sentence). – amoeba Apr 01 '16 at 12:18
  • Oh, okay. So how do you do that? – TLou Apr 01 '16 at 12:21
  • 1
    I don't know what software you are using, but see http://stats.stackexchange.com/a/137003 and http://stats.stackexchange.com/questions/612. The explained variance is given the sum of the squared loadings in the corresponding column. – amoeba Apr 01 '16 at 12:50
  • 1
    `Now I'd like to estimate the variance explained by each rotated EOF` After varimax rotation of loadings, column sums of squares of the loadings are the variances explained by the rotated PCs. Like it was prior rotation. Check answers of the second amoeba's link above. Pay attention please to the flow-chart in my answer there - it is quite illustrative. – ttnphns Apr 01 '16 at 13:06
  • Thanks, the explained variance is all good then. I write in python but there is a lack of tools to do this in python so I'm doing it the hard way. The varimax rotation function I wrote is exactly the same as the varimax function in R. The simplest way to get the rotated PCs for me would be to use the rotation matrix. So given $X = (UR)(R^TSV^T)$, is the rotation matrix returned by R actually $R^T$? Therefore, do I need to transpose it before multiplying with U? – TLou Apr 02 '16 at 02:53
  • @TLou I don't know (but I would rather think it's $R$). But given that R can directly give you rotated scores, you can experiment a bit until you get the same thing in your own Python code. – amoeba Apr 02 '16 at 21:05

0 Answers0