factor analysis: rotated axes angle

  • Follow


Hi,
I have used the following code to plot unrotated variables with oblique axes superimposed (see matlab example#3 in 'factoran' help):
---
Use promax rotation:

[Lambda,Psi,T,stats,F] = factoran(X,2,'rotate','promax',...
                                      'powerpm',4);
inv(T'*T)                            % Est'd corr of F, 
                                     % no longer eye(2)
Lambda*inv(T'*T)*Lambda'+diag(Psi)   % Est'd corr of X

Plot the unrotated variables with oblique axes superimposed.

invT = inv(T)
Lambda0 = Lambda*invT

line([-invT(1,1) invT(1,1) NaN -invT(2,1) invT(2,1)], ...
     [-invT(1,2) invT(1,2) NaN -invT(2,2) invT(2,2)], ...
     'Color','r','linewidth',2)
hold on
biplot(Lambda0,...
       'LineWidth',2,...
       'MarkerSize',20)
xlabel('Loadings for unrotated Factor 1')
ylabel('Loadings for unrotated Factor 2')
---
I'd like to know:
1) how to calculate the angle between the oblique axes?
2) is there a way to link this angle to the correlation between factors?
3) (more general question) as regards the factor scores, how can they be interpreted? In my geophysical data study, I have scores larger and smaller than zero vs. depth. Can they be interpreted in terms of amplitude?

Thanks,
dd
0
Reply dd 12/15/2009 3:52:01 PM

dd wrote:

> I'd like to know:
> 1) how to calculate the angle between the oblique axes?

Using the dot product of the axis coords and an inverse cosine, I would think.


> 2) is there a way to link this angle to the correlation between factors?

There may be some way to express that, since both depend on the rotation matrix, but you're on your own.


> 3) (more general question) as regards the factor scores, how can they be interpreted? In my geophysical data study, I have scores larger and smaller than zero vs. depth. Can they be interpreted in terms of amplitude?

Scores simply indicate where along each factor axis a particular observation is estimated to lie.  Positive and negative has no intrinsic meaning.  The interpretation of those factors is entirely application specific, and usually comes about by looking at the loadings and figuring out what they mean in terms of the original variables.

Hope this helps.
0
Reply Peter 12/16/2009 6:55:37 PM


Peter Perkins <Peter.Perkins@MathRemoveThisWorks.com> wrote in message <hgbaf9$esp$1@fred.mathworks.com>...

** Thanks Peter! I get some comments here under.

> dd wrote:
> 
> > I'd like to know:
> > 1) how to calculate the angle between the oblique axes?
> 
> Using the dot product of the axis coords and an inverse cosine, I would think.
> 
** I don't get this I'm afraid. Do the 'axis coords' correspond to Lambda0 in the intial code example above? Could you express this 'dot product of the axis coords and an inverse cosine' in a code line?
> 
> > 2) is there a way to link this angle to the correlation between factors?
> 
> There may be some way to express that, since both depend on the rotation matrix, but you're on your own.
> 
> 
> > 3) (more general question) as regards the factor scores, how can they be interpreted? In my geophysical data study, I have scores larger and smaller than zero vs. depth. Can they be interpreted in terms of amplitude?
> 
> Scores simply indicate where along each factor axis a particular observation is estimated to lie.  Positive and negative has no intrinsic meaning.  The interpretation of those factors is entirely application specific, and usually comes about by looking at the loadings and figuring out what they mean in terms of the original variables.
> 
** I've seen papers where they redo some factor analysis with the factor scores vs. physical parameters to test the validity of the model. How could those factors be considered then physically?
Also, in the 'Feature Transformation' help from Matlab, an example is given about Factor Scores and stock price changes. It is then said 'Sometimes it is useful to classify an observation based on its factor scores. For example, [...] you might want to categorize each week in terms of how favorable it was for each of the three stock sectors, based on the data from the 10 observed stocks'. See partial code below:
[LoadingsPM,specVarPM,TPM,stats,F] = ...
  factoran(stocks, 3,'rotate','promax');

plot3(F(:,1),F(:,2),F(:,3),'b.')
line([-4 4 NaN 0 0 NaN 0 0], [0 0 NaN -4 4 NaN 0 0],...
     [0 0 NaN 0 0 NaN -4 4], 'Color','black')
xlabel('Financial Sector')
ylabel('Retail Sector')
zlabel('Technology Sector')
grid on
axis square
view(-22.5, 8)

Coming back to your comment: 'Positive and negative has no intrinsic meaning', I'm puzzled now. What's the point of calculating those factor scores if they can't tell anything about the factors when compared across my data set?

Cheers,
dd

> Hope this helps.
0
Reply dd 12/17/2009 1:14:06 PM

dd wrote:

> ** I don't get this I'm afraid. Do the 'axis coords' correspond to 
> Lambda0 in the intial code example above? Could you express this 'dot 
> product of the axis coords and an inverse cosine' in a code line?

You have plotted the axes.  Thus, you have teir enpoints, and can think of them as vectors.  The dot product of two vectors is equal to the lengths times the cos of the included angle.


> Coming back to your comment: 'Positive and negative has no intrinsic 
> meaning', I'm puzzled now. What's the point of calculating those factor 
> scores if they can't tell anything about the factors when compared 
> across my data set?

What's the difference between positive portfolio growth and negative portfolio loss?  An arbitrary sign convention.  What interpretation and what sign you choose put on the factors is entirely your decision.  Factor analysis is in that sense an unsupervised method, because you have no way of knowing what the true factors are or even how many there are.
0
Reply Peter 12/18/2009 4:18:31 AM

3 Replies
330 Views

(page loaded in 0.053 seconds)

Similiar Articles:













7/23/2012 5:27:36 PM


Reply: