@PRINFACTORS does a principal components-based factor analysis of an input covariance or correlation matrix. The related procedure @PRINCOMP can be used if you just need to extract the series of principal components.
@PRINFACTORS( options ) sigma
Parameters
sigma |
The input covariance or correlation matrix |
Options
NCOMPS=number of components desired [number of variables]
SIGMAHAT=(output) sigma matrix [not used]
LOADINGS=(output) RECTANGULAR of loadings of components onto variables [not used]
VECTORS=(output) RECTANGULAR of eigenvectors [not used]
VALUES=(output) VECTOR of eigenvalues [not used]
COMMUNALITIES=(output) VECTOR of communalities for variables [not used]
PRINT/[NOPRINT]
Controls whether the output will be displayed. @PRINFACTORS is mainly used for its outputs.
Example
*
* Tsay, Analysis of Financial Time Series, 3rd edition
* Example 9.1, pp 485-488
*
open data m-5clog-9008.txt
calendar(m) 1980:1
data(format=prn,org=columns) 1980:01 1998:12 ibm hpq intc jpm bac
*
* Compute the covariance matrix of the return series
*
vcv(center,matrix=r)
# ibm hpq intc jpm bac
*
* Do the principal components analysis on the correlation matrix.
*
@prinfactors(print,values=evalues) %cvtocorr(r)
*
* Pull out the eigenvalues and graph them
*
set eigen 1 5 = evalues(t)
graph(style=symbols,vlabel="Eigenvalue",hlabel="Component",nodates)
# eigen
Sample Output
Principal Components Analysis
Eigenvalue 2.607649 1.071584 0.568616 0.451315 0.300836
Proportion 0.521530 0.214317 0.113723 0.090263 0.060167
Cumulative 0.521530 0.735847 0.849570 0.939833 1.000000
Eigenvector -0.427633 -0.341113 0.837079 0.001756 0.008203
-0.459893 -0.356458 -0.380141 -0.704282 0.144622
-0.451115 -0.385464 -0.389227 0.704231 0.021777
-0.478567 0.469467 -0.045824 -0.052077 -0.738757
-0.416049 0.622573 0.034557 0.073012 0.657861