Path: news.mathworks.com!not-for-mail
From: <HIDDEN>
Newsgroups: comp.soft-sys.matlab
Subject: Re: strange: correlated principal components after orthogonal rotation
Date: Thu, 23 Oct 2008 17:20:03 +0000 (UTC)
Organization: The MathWorks, Inc.
Lines: 34
Message-ID: <gdqbo3$g5k$1@fred.mathworks.com>
References: <gdq7qd$p1g$1@fred.mathworks.com>
Reply-To: <HIDDEN>
NNTP-Posting-Host: webapp-03-blr.mathworks.com
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Trace: fred.mathworks.com 1224782403 16564 172.30.248.38 (23 Oct 2008 17:20:03 GMT)
X-Complaints-To: news@mathworks.com
NNTP-Posting-Date: Thu, 23 Oct 2008 17:20:03 +0000 (UTC)
X-Newsreader: MATLAB Central Newsreader 1187260
Xref: news.mathworks.com comp.soft-sys.matlab:496932


"Roland Neumann" <software-pca@o2online.de> wrote in message <gdq7qd$p1g$1@fred.mathworks.com>...
> I came across a strange behaviour while computing principal components with the Statistics Toolbox (either princomp or pcacov, doesn't matter). 
> 
> Background is calculating independent software metrics using PCA. This works quite well, when I'm doing  like: 
> 
> EV Lambda =pcacov(corr(M))
> ...(compute FL out of EV and Lambda)
> C= zscore(M)*EV 
> 
> leads to nicely uncorrelated C (my independent software metrics). Now the strange thing... I want the principal components better suiting the metrics and use orthogonal rotation like varimax or quartimax with:
> 
> RotFL = rotatefactors(FL, 'method', 'varimax', 'normalization', 'off')
> 
> This is supposed to be (according to help) an orthogonal operation. 
> But after another:
> CRot= zscore(M)*EVRot
> I get correlated C. 
> 
> It's already visible in RotFL: Computing the angles between each 2 column-vektors (A*B/(|A|*|B|) shows no 90? anymore (as for EV and FL).
> 
> I'm lost with this supposingly orthogonal rotation and will appreciate any hints. Thank you.
-------
  Roland, just because a pair of random variables, x and y, are uncorrelated doesn't mean that a rotation of them will yield uncorrelated variables.  Let E{x} = E{y} = E(x*y) = 0 so that x and y are uncorrelated.  Then rotate them to u = a*x+b*y and v = -b*x+a*y where a^2+b^2 = 1.  Then their (cross) covariance will be:

 E{u*v} =
 E{(a*x+b*y)*(-b*x+a*y)} =
 (a^2-b^2)*E{x*y) + a*b*(E{x^2}-E{y^2}) =
 a*b*(E{x^2}-E{y^2})

which will not be zero unless x and y have equal variances.  Thus the two quantities u and v are not necessarily uncorrelated.

Roger Stafford