Example 9.4 Alpha Factor Analysis
This example shows how an algorithm for computing alpha factor patterns (Kaiser and Caffrey, 1965) is implemented in the SAS/IML language.
You can store the following ALPHA subroutine in a catalog and load it when needed.
/* Alpha Factor Analysis */
/* Ref: Kaiser et al., 1965 Psychometrika, pp. 12-13 */
/* r correlation matrix (n.s.) already set up */
/* p number of variables */
/* q number of factors */
/* h communalities */
/* m eigenvalues */
/* e eigenvectors */
/* f factor pattern */
/* (IQ,H2,HI,G,MM) temporary use. freed up */
/* */
proc iml;
start alpha;
p = ncol(r);
q = 0;
h = 0; /* initialize */
h2 = i(p)-diag(1/vecdiag(inv(r))); /* smcs */
do while(max(abs(h-h2))>.001); /* iterate until converges */
h = h2;
hi = diag(sqrt(1/vecdiag(h)));
g = hi*(r-i(p))*hi+i(p);
call eigen(m,e,g); /* get eigenvalues and vecs */
if q=0 then do;
q = sum(m>1); /* number of factors */
iq = 1:q;
end; /* index vector */
mm = diag(sqrt(m[iq,])); /* collapse eigvals */
e = e[,iq] ; /* collapse eigvecs */
h2 = h*diag((e*mm) [,##]); /* new communalities */
end;
hi = sqrt(h);
h = vecdiag(h2);
f = hi*e*mm; /* resulting pattern */
free iq h2 hi g mm; /* free temporaries */
finish;
/* Correlation Matrix from Harmon, Modern Factor Analysis, */
/* Second edition, page 124, "Eight Physical Variables" */
r={1.000 .846 .805 .859 .473 .398 .301 .382 ,
.846 1.000 .881 .826 .376 .326 .277 .415 ,
.805 .881 1.000 .801 .380 .319 .237 .345 ,
.859 .826 .801 1.000 .436 .329 .327 .365 ,
.473 .376 .380 .436 1.000 .762 .730 .629 ,
.398 .326 .319 .329 .762 1.000 .583 .577 ,
.301 .277 .237 .327 .730 .583 1.000 .539 ,
.382 .415 .345 .365 .629 .577 .539 1.000};
nm = {Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8};
run alpha;
print ,"EIGENVALUES" , m;
print ,"COMMUNALITIES" , h[rowname=nm];
print ,"FACTOR PATTERN", f[rowname=nm];
The results are shown in Output 9.4.1.
Output 9.4.1: Alpha Factor Analysis: Results
5.937855 |
2.0621956 |
0.1390178 |
0.0821054 |
0.018097 |
-0.047487 |
-0.09148 |
-0.100304 |
0.8381205 |
0.8905717 |
0.81893 |
0.8067292 |
0.8802149 |
0.6391977 |
0.5821583 |
0.4998126 |
0.813386 |
-0.420147 |
0.8028363 |
-0.49601 |
0.7579087 |
-0.494474 |
0.7874461 |
-0.432039 |
0.8051439 |
0.4816205 |
0.6804127 |
0.4198051 |
0.620623 |
0.4438303 |
0.6449419 |
0.2895902 |
Copyright © SAS Institute Inc. All Rights Reserved.