Thanks as usual to Kit Baum, a new package pcacoefsave may be downloaded from SSC using
The aim is simple: to allow saving certain key results from PCA as obtained with the pca command to a new dataset, thereby making much easier various kinds of tabulation and graphing.
Stata 9 is required.
As commented in the help, the command does not extend to factor analysis. Users interested in factor analysis are likely to be using SEM any way and what they need or want may well be quite different and in any case beyond my experience.
Here is a simple example. We first throw various variables related to size in some sense from the auto data into a pca:
One thing I like to do, which doesn't seem common in texts or papers, is to look at the correlations between the original variables and the components. I don't need the correlations between the PCs because these are 1 or 0 by definition. After this new command, it's a straightforward tabulation:
Another thing I often do is plot loadings in a particular way, as already documented in eofplot (SSC). Another way of getting that easily is to present the data as panel data:
Code:
ssc inst pcacoefsave
Stata 9 is required.
As commented in the help, the command does not extend to factor analysis. Users interested in factor analysis are likely to be using SEM any way and what they need or want may well be quite different and in any case beyond my experience.
Here is a simple example. We first throw various variables related to size in some sense from the auto data into a pca:
Code:
. sysuse auto, clear
(1978 Automobile Data)
. pca headroom trunk weight length displacement
Principal components/correlation Number of obs = 74
Number of comp. = 5
Trace = 5
Rotation: (unrotated = principal) Rho = 1.0000
--------------------------------------------------------------------------
Component | Eigenvalue Difference Proportion Cumulative
-------------+------------------------------------------------------------
Comp1 | 3.76201 3.026 0.7524 0.7524
Comp2 | .736006 .427915 0.1472 0.8996
Comp3 | .308091 .155465 0.0616 0.9612
Comp4 | .152627 .111357 0.0305 0.9917
Comp5 | .0412693 . 0.0083 1.0000
--------------------------------------------------------------------------
Principal components (eigenvectors)
------------------------------------------------------------------------------
Variable | Comp1 Comp2 Comp3 Comp4 Comp5 | Unexplained
-------------+--------------------------------------------------+-------------
headroom | 0.3587 0.7640 0.5224 -0.1209 0.0130 | 0
trunk | 0.4334 0.3665 -0.7676 0.2914 0.0612 | 0
weight | 0.4842 -0.3329 0.0737 -0.2669 0.7603 | 0
length | 0.4863 -0.2372 -0.1050 -0.5745 -0.6051 | 0
displacement | 0.4610 -0.3390 0.3484 0.7065 -0.2279 | 0
------------------------------------------------------------------------------
. pcacoefsave using pca_results
file pca_results.dta saved
. use pca_results
. describe
Contains data from pca_results.dta
obs: 25
vars: 8 1 Jun 2015 11:21
size: 575
---------------------------------------------------------------------------------------
storage display value
variable name type format label variable label
---------------------------------------------------------------------------------------
varname byte %12.0g names variable
varlabel byte %22.0g labels variable
PC byte %8.0g
corr float %9.0g correlation
loading float %9.0g coefficient
eigenvalue float %9.0g
mean float %9.0g
SD float %9.0g standard deviation
---------------------------------------------------------------------------------------
Sorted by:
Code:
. l PC varname corr
+-------------------------------+
| PC varname corr |
|-------------------------------|
1. | 1 headroom .6957921 |
2. | 2 headroom .6554101 |
3. | 3 headroom .2899519 |
4. | 4 headroom -.0472426 |
5. | 5 headroom .0026352 |
|-------------------------------|
6. | 1 trunk .8405304 |
7. | 2 trunk .3144061 |
8. | 3 trunk -.4260833 |
9. | 4 trunk .1138242 |
10. | 5 trunk .0124329 |
|-------------------------------|
11. | 1 weight .939158 |
12. | 2 weight -.2856239 |
13. | 3 weight .0409204 |
14. | 4 weight -.1042662 |
15. | 5 weight .1544515 |
|-------------------------------|
16. | 1 length .9432383 |
17. | 2 length -.2035082 |
18. | 3 length -.0582883 |
19. | 4 length -.2244516 |
20. | 5 length -.1229222 |
|-------------------------------|
21. | 1 displacement .8942441 |
22. | 2 displacement -.2908539 |
23. | 3 displacement .193391 |
24. | 4 displacement .2760232 |
25. | 5 displacement -.0462885 |
+-------------------------------+
. tabdisp varname PC, cell(corr) format(%4.3f)
-----------------------------------------------------
| PC
variable | 1 2 3 4 5
-------------+---------------------------------------
headroom | 0.696 0.655 0.290 -0.047 0.003
trunk | 0.841 0.314 -0.426 0.114 0.012
weight | 0.939 -0.286 0.041 -0.104 0.154
length | 0.943 -0.204 -0.058 -0.224 -0.123
displacement | 0.894 -0.291 0.193 0.276 -0.046
-----------------------------------------------------
Code:
. xtset PC varname
panel variable: PC (strongly balanced)
time variable: varname, 1 to 5
delta: 1 unit
. xtline loading, overlay xla(, valuelabel) recast(connected) legend(pos(3) col(1)) yla(, ang(h))

Comment