Example 26.2: Principal Factor Analysis
The following example uses the data presented in
Example 26.1, and performs
a principal factor analysis with squared multiple
correlations for the prior communality estimates (PRIORS=SMC).
To help determine if the common factor model is appropriate, Kaiser's
measure of sampling adequacy (MSA) is requested, and the residual
correlations and partial correlations are computed (RESIDUAL). To
help determine the number of factors, a scree plot (SCREE)
of the eigenvalues
is displayed, and the PREPLOT option plots the unrotated factor
pattern.
The ROTATE= and REORDER options are specified to enhance factor
interpretability. The ROTATE=PROMAX option produces an orthogonal
varimax prerotation followed by an oblique rotation, and the REORDER
option reorders the variables according to their largest factor
loadings. The PLOT procedure is used to produce a plot of the
reference structure.
An OUTSTAT= data set is created by PROC FACTOR and displayed
in Output 26.2.15.
This example also demonstrates how to define a picture format with the
FORMAT procedure and use the PRINT procedure to produce customized
factor pattern output. Small elements of the Rotated Factor Pattern
matrix are displayed as `.'. Large values are multiplied by 100,
truncated at the decimal, and flagged with an asterisk `*'.
Intermediate values are scaled by 100 and truncated. For more
information on picture formats, refer to "Formats" in SAS
Language Reference: Dictionary.
ods output ObliqueRotFactPat = rotfacpat;
proc factor data=SocioEconomics priors=smc msa scree residual preplot
rotate=promax reorder plot
outstat=fact_all;
title3 'Principal Factor Analysis with Promax Rotation';
proc print;
title3 'Factor Output Data Set';
run;
proc format;
picture FuzzFlag
low  0.1 = ' . '
0.10  0.90 = '009 ' (mult = 100)
0.90  high = '009 *' (mult = 100);
run;
proc print data = rotfacpat;
format factor1factor2 FuzzFlag.;
run;
Output 26.2.1: Principal Factor Analysis
Principal Factor Analysis with Promax Rotation 
The FACTOR Procedure 
Initial Factor Method: Principal Factors 
Partial Correlations Controlling all other Variables 

Population 
School 
Employment 
Services 
HouseValue 
Population 
1.00000 
0.54465 
0.97083 
0.09612 
0.15871 
School 
0.54465 
1.00000 
0.54373 
0.04996 
0.64717 
Employment 
0.97083 
0.54373 
1.00000 
0.06689 
0.25572 
Services 
0.09612 
0.04996 
0.06689 
1.00000 
0.59415 
HouseValue 
0.15871 
0.64717 
0.25572 
0.59415 
1.00000 
Kaiser's Measure of Sampling Adequacy: Overall MSA = 0.57536759 
Population 
School 
Employment 
Services 
HouseValue 
0.47207897 
0.55158839 
0.48851137 
0.80664365 
0.61281377 
2 factors will be retained by the PROPORTION criterion. 

Principal Factor Analysis with Promax Rotation 
The FACTOR Procedure 
Initial Factor Method: Principal Factors 
Prior Communality Estimates: SMC 
Population 
School 
Employment 
Services 
HouseValue 
0.96859160 
0.82228514 
0.96918082 
0.78572440 
0.84701921 
Eigenvalues of the Reduced Correlation Matrix: Total = 4.39280116 Average = 0.87856023 

Eigenvalue 
Difference 
Proportion 
Cumulative 
1 
2.73430084 
1.01823217 
0.6225 
0.6225 
2 
1.71606867 
1.67650586 
0.3907 
1.0131 
3 
0.03956281 
0.06408626 
0.0090 
1.0221 
4 
.02452345 
0.04808427 
0.0056 
1.0165 
5 
.07260772 

0.0165 
1.0000 
2 factors will be retained by the PROPORTION criterion. 

Output 26.2.1 displays the results of the principal factor
extraction.
If the data are appropriate for the common factor model, the partial
correlations controlling the other variables should be small compared
to the original correlations. The partial correlation between the
variables School and HouseValue, for example, is 0.65,
slightly less than the original correlation of 0.86. The partial
correlation between Population and School is 0.54,
which is much larger in absolute value than the original correlation;
this is an indication of trouble. Kaiser's MSA is a summary, for each
variable and for all variables together, of how much smaller the
partial correlations are than the original correlations. Values of
0.8 or 0.9 are considered good, while MSAs below 0.5 are
unacceptable. The variables Population, School, and
Employment have very poor MSAs. Only the Services variable has
a good MSA. The overall MSA of 0.58 is sufficiently poor that
additional variables should be included in the analysis to better define the
common factors. A commonly used rule is that there should be
at least three variables per factor. In the following analysis,
there seems to be two common factors in these data, so more variables are
needed for a reliable analysis.
The SMCs are all fairly large; hence, the factor loadings do not
differ greatly from the principal component analysis.
The eigenvalues show clearly that two common factors are present.
There are two large positive eigenvalues that together account for
101.31% of the common variance, which is as close to 100% as you are
ever likely to get without iterating. The scree plot displays a sharp
bend at the third eigenvalue, reinforcing the preceding conclusion.
Principal Factor Analysis with Promax Rotation 
The FACTOR Procedure 
Initial Factor Method: Principal Factors 
Scree Plot of Eigenvalues

3 +

 1



2 +
E 
i  2
g 
e 
n 
v 1 +
a 
l 
u 
e 
s 
0 + 3 4 5





1 +

++++++
0 1 2 3 4 5
Number


Output 26.2.2: Factor Pattern Matrix and Communalities
Principal Factor Analysis with Promax Rotation 
The FACTOR Procedure 
Initial Factor Method: Principal Factors 
Factor Pattern 

Factor1 
Factor2 
Services 
0.87899 
0.15847 
HouseValue 
0.74215 
0.57806 
Employment 
0.71447 
0.67936 
School 
0.71370 
0.55515 
Population 
0.62533 
0.76621 
Variance Explained by Each Factor 
Factor1 
Factor2 
2.7343008 
1.7160687 
Final Communality Estimates: Total = 4.450370 
Population 
School 
Employment 
Services 
HouseValue 
0.97811334 
0.81756387 
0.97199928 
0.79774304 
0.88494998 

As displayed in Output 26.2.2, the principal factor pattern is similar
to the principal component pattern seen in Example 26.1.
For example,
the variable Services has the largest loading on the first
factor, and the Population variable has the smallest. The
variables Population and Employment have large positive
loadings on the second factor, and the HouseValue and
School variables have large negative loadings.
The final communality estimates are all fairly close to the priors.
Only the communality for the variable HouseValue
increased appreciably, from 0.847019 to 0.884950. Nearly 100% of the
common variance is accounted for. The residual correlations
(offdiagonal elements) are low,
the largest being 0.03 (Output 26.2.3).
The partial correlations are not quite as
impressive, since the uniqueness values are also rather small. These
results indicate that the SMCs are good but not quite optimal
communality estimates.
Output 26.2.3: Residual and Partial Correlations
Principal Factor Analysis with Promax Rotation 
The FACTOR Procedure 
Initial Factor Method: Principal Factors 
Residual Correlations With Uniqueness on the Diagonal 

Population 
School 
Employment 
Services 
HouseValue 
Population 
0.02189 
0.01118 
0.00514 
0.01063 
0.00124 
School 
0.01118 
0.18244 
0.02151 
0.02390 
0.01248 
Employment 
0.00514 
0.02151 
0.02800 
0.00565 
0.01561 
Services 
0.01063 
0.02390 
0.00565 
0.20226 
0.03370 
HouseValue 
0.00124 
0.01248 
0.01561 
0.03370 
0.11505 
Root Mean Square OffDiagonal Residuals: Overall = 0.01693282 
Population 
School 
Employment 
Services 
HouseValue 
0.00815307 
0.01813027 
0.01382764 
0.02151737 
0.01960158 
Partial Correlations Controlling Factors 

Population 
School 
Employment 
Services 
HouseValue 
Population 
1.00000 
0.17693 
0.20752 
0.15975 
0.02471 
School 
0.17693 
1.00000 
0.30097 
0.12443 
0.08614 
Employment 
0.20752 
0.30097 
1.00000 
0.07504 
0.27509 
Services 
0.15975 
0.12443 
0.07504 
1.00000 
0.22093 
HouseValue 
0.02471 
0.08614 
0.27509 
0.22093 
1.00000 

Output 26.2.4: Root Mean Square OffDiagonal Partials
Principal Factor Analysis with Promax Rotation 
The FACTOR Procedure 
Initial Factor Method: Principal Factors 
Root Mean Square OffDiagonal Partials: Overall = 0.18550132 
Population 
School 
Employment 
Services 
HouseValue 
0.15850824 
0.19025867 
0.23181838 
0.15447043 
0.18201538 

Output 26.2.5: Unrotated Factor Pattern Plot
Principal Factor Analysis with Promax Rotation 
The FACTOR Procedure 
Initial Factor Method: Principal Factors 
Plot of Factor Pattern for Factor1 and Factor2
Factor1
1
D .9
.8
E
B .7 C
A
.6
.5
.4
.3
.2
F
.1 a
c
1 .9.8.7.6.5.4.3.2.1 0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1.0t
o
.1 r
2
.2
.3
.4
.5
.6
.7
.8
.9
1
Population=A School=B Employment=C Services=D HouseValue=E


As displayed in Output 26.2.5, the unrotated factor pattern
reveals two tight clusters of variables, with the variables
HouseValue and School at the negative
end of Factor2 axis and the variables
Employment and Population at the positive end.
The Services variable
is in between but closer to the HouseValue and School variables.
A good rotation would put the reference axes through the two clusters.
Output 26.2.6: Varimax Rotation: Transform Matrix and Rotated Pattern
Principal Factor Analysis with Promax Rotation 
The FACTOR Procedure 
Prerotation Method: Varimax 
Orthogonal Transformation Matrix 

1 
2 
1 
0.78895 
0.61446 
2 
0.61446 
0.78895 
Rotated Factor Pattern 

Factor1 
Factor2 
HouseValue 
0.94072 
0.00004 
School 
0.90419 
0.00055 
Services 
0.79085 
0.41509 
Population 
0.02255 
0.98874 
Employment 
0.14625 
0.97499 

Output 26.2.7: Varimax Rotation: Variance Explained and Communalities
Principal Factor Analysis with Promax Rotation 
The FACTOR Procedure 
Prerotation Method: Varimax 
Variance Explained by Each Factor 
Factor1 
Factor2 
2.3498567 
2.1005128 
Final Communality Estimates: Total = 4.450370 
Population 
School 
Employment 
Services 
HouseValue 
0.97811334 
0.81756387 
0.97199928 
0.79774304 
0.88494998 

Output 26.2.8: Varimax Rotated Factor Pattern Plot
Principal Factor Analysis with Promax Rotation 
The FACTOR Procedure 
Prerotation Method: Varimax 
Plot of Factor Pattern for Factor1 and Factor2
Factor1
1
E
.B
.8 D
.7
.6
.5
.4
.3
.2
C F
.1 a
c
1 .9.8.7.6.5.4.3.2.1 0 .1 .2 .3 .4 .5 .6 .7 .8 .9 A.0t
o
.1 r
2
.2
.3
.4
.5
.6
.7
.8
.9
1
Population=A School=B Employment=C Services=D HouseValue=E


Output 26.2.6, Output 26.2.7 and Output 26.2.8 display the results of the varimax rotation.
This rotation puts one axis through the variables HouseValue
and School but misses the Population and Employment
variables slightly.
Output 26.2.9: Promax Rotation: Procrustean Target and Transform Matrix
Principal Factor Analysis with Promax Rotation 
The FACTOR Procedure 
Rotation Method: Promax 
Target Matrix for Procrustean Transformation 

Factor1 
Factor2 
HouseValue 
1.00000 
0.00000 
School 
1.00000 
0.00000 
Services 
0.69421 
0.10045 
Population 
0.00001 
1.00000 
Employment 
0.00326 
0.96793 
Procrustean Transformation Matrix 

1 
2 
1 
1.04116598 
0.0986534 
2 
0.1057226 
0.96303019 

Output 26.2.10: Promax Rotation: Oblique Transform Matrix and Correlation
Principal Factor Analysis with Promax Rotation 
The FACTOR Procedure 
Rotation Method: Promax 
Normalized Oblique Transformation Matrix 

1 
2 
1 
0.73803 
0.54202 
2 
0.70555 
0.86528 
InterFactor Correlations 

Factor1 
Factor2 
Factor1 
1.00000 
0.20188 
Factor2 
0.20188 
1.00000 

Output 26.2.11: Promax Rotation: Rotated Factor Pattern and Correlations
Principal Factor Analysis with Promax Rotation 
The FACTOR Procedure 
Rotation Method: Promax 
Rotated Factor Pattern (Standardized Regression Coefficients) 

Factor1 
Factor2 
HouseValue 
0.95558485 
0.0979201 
School 
0.91842142 
0.0935214 
Services 
0.76053238 
0.33931804 
Population 
0.0790832 
1.00192402 
Employment 
0.04799 
0.97509085 
Reference Axis Correlations 

Factor1 
Factor2 
Factor1 
1.00000 
0.20188 
Factor2 
0.20188 
1.00000 

Output 26.2.12: Promax Rotation: Variance Explained and Factor Structure
Principal Factor Analysis with Promax Rotation 
The FACTOR Procedure 
Rotation Method: Promax 
Reference Structure (Semipartial Correlations) 

Factor1 
Factor2 
HouseValue 
0.93591 
0.09590 
School 
0.89951 
0.09160 
Services 
0.74487 
0.33233 
Population 
0.07745 
0.98129 
Employment 
0.04700 
0.95501 
Variance Explained by Each Factor Eliminating Other Factors 
Factor1 
Factor2 
2.2480892 
2.0030200 
Factor Structure (Correlations) 

Factor1 
Factor2 
HouseValue 
0.93582 
0.09500 
School 
0.89954 
0.09189 
Services 
0.82903 
0.49286 
Population 
0.12319 
0.98596 
Employment 
0.24484 
0.98478 

Output 26.2.13: Promax Rotation: Variance Explained and Final Communalities
Principal Factor Analysis with Promax Rotation 
The FACTOR Procedure 
Rotation Method: Promax 
Variance Explained by Each Factor Ignoring Other Factors 
Factor1 
Factor2 
2.4473495 
2.2022803 
Final Communality Estimates: Total = 4.450370 
Population 
School 
Employment 
Services 
HouseValue 
0.97811334 
0.81756387 
0.97199928 
0.79774304 
0.88494998 

Output 26.2.14: Promax Rotated Factor Pattern Plot
Principal Factor Analysis with Promax Rotation 
The FACTOR Procedure 
Rotation Method: Promax 
Plot of Reference Structure for Factor1 and Factor2
Reference Axis Correlation = 0.2019 Angle = 101.6471
Factor1
1
E
B .9
.8
D
.7
.6
.5
.4
.3
.2
F
.1 a
C c
1 .9.8.7.6.5.4.3.2.1 0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1.0t
o
.1 A r
2
.2
.3
.4
.5
.6
.7
.8
.9
1
Population=A School=B Employment=C Services=D HouseValue=E


The oblique promax rotation (Output 26.2.9 through Output 26.2.14)
places an axis through the variables Population and Employment but misses the
HouseValue and School variables.
Since an independentcluster solution would be possible
if it were not for the variable Services, a HarrisKaiser rotation
weighted by the CuretonMulaik technique should be used.
Output 26.2.15: Output Data Set
Obs 
_TYPE_ 
_NAME_ 
Population 
School 
Employment 
Services 
HouseValue 
1 
MEAN 

6241.67 
11.4417 
2333.33 
120.833 
17000.00 
2 
STD 

3439.99 
1.7865 
1241.21 
114.928 
6367.53 
3 
N 

12.00 
12.0000 
12.00 
12.000 
12.00 
4 
CORR 
Population 
1.00 
0.0098 
0.97 
0.439 
0.02 
5 
CORR 
School 
0.01 
1.0000 
0.15 
0.691 
0.86 
6 
CORR 
Employment 
0.97 
0.1543 
1.00 
0.515 
0.12 
7 
CORR 
Services 
0.44 
0.6914 
0.51 
1.000 
0.78 
8 
CORR 
HouseValue 
0.02 
0.8631 
0.12 
0.778 
1.00 
9 
COMMUNAL 

0.98 
0.8176 
0.97 
0.798 
0.88 
10 
PRIORS 

0.97 
0.8223 
0.97 
0.786 
0.85 
11 
EIGENVAL 

2.73 
1.7161 
0.04 
0.025 
0.07 
12 
UNROTATE 
Factor1 
0.63 
0.7137 
0.71 
0.879 
0.74 
13 
UNROTATE 
Factor2 
0.77 
0.5552 
0.68 
0.158 
0.58 
14 
RESIDUAL 
Population 
0.02 
0.0112 
0.01 
0.011 
0.00 
15 
RESIDUAL 
School 
0.01 
0.1824 
0.02 
0.024 
0.01 
16 
RESIDUAL 
Employment 
0.01 
0.0215 
0.03 
0.006 
0.02 
17 
RESIDUAL 
Services 
0.01 
0.0239 
0.01 
0.202 
0.03 
18 
RESIDUAL 
HouseValue 
0.00 
0.0125 
0.02 
0.034 
0.12 
19 
PRETRANS 
Factor1 
0.79 
0.6145 
. 
. 
. 
20 
PRETRANS 
Factor2 
0.61 
0.7889 
. 
. 
. 
21 
PREROTAT 
Factor1 
0.02 
0.9042 
0.15 
0.791 
0.94 
22 
PREROTAT 
Factor2 
0.99 
0.0006 
0.97 
0.415 
0.00 
23 
TRANSFOR 
Factor1 
0.74 
0.7055 
. 
. 
. 
24 
TRANSFOR 
Factor2 
0.54 
0.8653 
. 
. 
. 
25 
FCORR 
Factor1 
1.00 
0.2019 
. 
. 
. 
26 
FCORR 
Factor2 
0.20 
1.0000 
. 
. 
. 
27 
PATTERN 
Factor1 
0.08 
0.9184 
0.05 
0.761 
0.96 
28 
PATTERN 
Factor2 
1.00 
0.0935 
0.98 
0.339 
0.10 
29 
RCORR 
Factor1 
1.00 
0.2019 
. 
. 
. 
30 
RCORR 
Factor2 
0.20 
1.0000 
. 
. 
. 
31 
REFERENC 
Factor1 
0.08 
0.8995 
0.05 
0.745 
0.94 
32 
REFERENC 
Factor2 
0.98 
0.0916 
0.96 
0.332 
0.10 
33 
STRUCTUR 
Factor1 
0.12 
0.8995 
0.24 
0.829 
0.94 
34 
STRUCTUR 
Factor2 
0.99 
0.0919 
0.98 
0.493 
0.09 

The output data set displayed in Output 26.2.15
can be used for HarrisKaiser rotation by deleting
observations with _TYPE_='PATTERN' and
_TYPE_='FCORR',
which are for the promaxrotated factors, and changing
_TYPE_='UNROTATE' to _TYPE_='PATTERN'.
Output 26.2.16 displays the rotated factor pattern output
formatted with the picture format `FuzzFlag'.
Output 26.2.16: Picture Format Output
Obs 
RowName 
Factor1 
Factor2 
1 
HouseValue 
95 * 
. 
2 
School 
91 * 
. 
3 
Services 
76 
33 
4 
Population 
. 
100 * 
5 
Employment 
. 
97 * 

The following statements produce Output 26.2.17:
data fact2(type=factor);
set fact_all;
if _TYPE_ in('PATTERN' 'FCORR') then delete;
if _TYPE_='UNROTATE' then _TYPE_='PATTERN';
proc factor rotate=hk norm=weight reorder plot;
title3 'HarrisKaiser Rotation with CuretonMulaik Weights';
run;
The results of the HarrisKaiser rotation are displayed in Output 26.2.17:
Output 26.2.17: HarrisKaiser Rotation
HarrisKaiser Rotation with CuretonMulaik Weights 
The FACTOR Procedure 
Rotation Method: HarrisKaiser 
Variable Weights for Rotation 
Population 
School 
Employment 
Services 
HouseValue 
0.95982747 
0.93945424 
0.99746396 
0.12194766 
0.94007263 
Oblique Transformation Matrix 

1 
2 
1 
0.73537 
0.61899 
2 
0.68283 
0.78987 
InterFactor Correlations 

Factor1 
Factor2 
Factor1 
1.00000 
0.08358 
Factor2 
0.08358 
1.00000 

HarrisKaiser Rotation with CuretonMulaik Weights 
The FACTOR Procedure 
Rotation Method: HarrisKaiser 
Rotated Factor Pattern (Standardized Regression Coefficients) 

Factor1 
Factor2 
HouseValue 
0.94048 
0.00279 
School 
0.90391 
0.00327 
Services 
0.75459 
0.41892 
Population 
0.06335 
0.99227 
Employment 
0.06152 
0.97885 
Reference Axis Correlations 

Factor1 
Factor2 
Factor1 
1.00000 
0.08358 
Factor2 
0.08358 
1.00000 
Reference Structure (Semipartial Correlations) 

Factor1 
Factor2 
HouseValue 
0.93719 
0.00278 
School 
0.90075 
0.00326 
Services 
0.75195 
0.41745 
Population 
0.06312 
0.98880 
Employment 
0.06130 
0.97543 
Variance Explained by Each Factor Eliminating Other Factors 
Factor1 
Factor2 
2.2628537 
2.1034731 

HarrisKaiser Rotation with CuretonMulaik Weights 
The FACTOR Procedure 
Rotation Method: HarrisKaiser 
Factor Structure (Correlations) 

Factor1 
Factor2 
HouseValue 
0.94071 
0.08139 
School 
0.90419 
0.07882 
Services 
0.78960 
0.48198 
Population 
0.01958 
0.98698 
Employment 
0.14332 
0.98399 
Variance Explained by Each Factor Ignoring Other Factors 
Factor1 
Factor2 
2.3468965 
2.1875158 
Final Communality Estimates: Total = 4.450370 
Population 
School 
Employment 
Services 
HouseValue 
0.97811334 
0.81756387 
0.97199928 
0.79774304 
0.88494998 

HarrisKaiser Rotation with CuretonMulaik Weights 
The FACTOR Procedure 
Rotation Method: HarrisKaiser 
Plot of Reference Structure for Factor1 and Factor2
Reference Axis Correlation = 0.0836 Angle = 94.7941
Factor1
1
E
.B
.8
D
.7
.6
.5
.4
.3
.2
F
.1 a
C c
1 .9.8.7.6.5.4.3.2.1 0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1.0t
A o
.1 r
2
.2
.3
.4
.5
.6
.7
.8
.9
1
Population=A School=B Employment=C Services=D HouseValue=E


In the results of the HarrisKaiser rotation,
the variable Services receives a small weight,
and the axes are placed as desired.
Copyright © 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.