# [R] Factor Analysis Output from R and SAS

William Revelle lists at revelle.net
Tue Mar 31 18:04:03 CEST 2009

```At 8:17 AM -0400 3/31/09, John Fox wrote:
>Dear TY,
>
>Considering that you used different methods -- maximum-likelihood factor
>analysis in R and principal components analysis in SAS -- the results are
>quite similar (although the three rotated factors/components come out in
>different orders).
>
>I hope this helps,
>  John

As John pointed out, PCA is not the same as FA.  Unfortunately, SAS
labeled the PCA as a factor analysis, when it is not.
And, when one does a principal components and extracts just the first
three components (as you did), the unrotated solution is identical:

>  package(psych)
>  pc3 <- principal(x,3,rotate="none")
>  print(pc3,digits=5,cut=0)
V     PC1       PC2      PC3
V1 1 0.79880  0.549948 -0.17614
V2 2 0.77036  0.561712 -0.24862
V3 3 0.79475 -0.076853  0.54982
V4 4 0.75757 -0.087363  0.59785
V5 5 0.80878 -0.456096 -0.33437
V6 6 0.77771 -0.483310 -0.36933

PC1     PC2     PC3
Proportion Var 0.61601 0.17885 0.16680
Cumulative Var 0.61601 0.79486 0.96165

Test of the hypothesis that 3 factors are sufficient.

The degrees of freedom for the model is 0  and the fit was  1.57483
The number of observations was  18  with Chi Square =  19.16046  with
prob <  NA

When you then rotate these components using Varimax, the solutions
differ at the fourth decimal place

>  pc3 <- principal(x,3)
>  print(pc3,cut=0,digits=5)
V     PC1     PC2     PC3
V1 1 0.19991 0.93168 0.25210
V2 2 0.21193 0.94606 0.17562
V3 3 0.23805 0.23479 0.90997
V4 4 0.19920 0.19084 0.92891
V5 5 0.93057 0.22225 0.24208
V6 6 0.94738 0.19422 0.19896

PC1     PC2     PC3
Proportion Var 0.32412 0.32362 0.31392
Cumulative Var 0.32412 0.64774 0.96165

Bill

>
>>  -----Original Message-----
>>  From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
>On
>>  Behalf Of Tae-Young Heo
>>  Sent: March-31-09 7:07 AM
>>  To: r-help at r-project.org
>>  Subject: [R] Factor Analysis Output from R and SAS
>>
>>  Dear Users,
>>
>>  I ran factor analysis using R and SAS. However, I had different outputs
>from
>>  R and SAS.
>>  different.
>>  I did real dataset(n=264), however, I had an extremely different from R
>and
>>  SAS.
>>  Why this things happened? Which software is correct on?
>>
>>
>>  - TY
>>
>>  #R code with example data
>>
>>   # A little demonstration, v2 is just v1 with noise,
>>   # and same for v4 vs. v3 and v6 vs. v5
>>   # Last four cases are there to add noise
>>   # and introduce a positive manifold (g factor)
>>   v1 <- c(1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,4,5,6)
>>   v2 <- c(1,2,1,1,1,1,2,1,2,1,3,4,3,3,3,4,6,5)
>>   v3 <- c(3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,5,4,6)
>>   v4 <- c(3,3,4,3,3,1,1,2,1,1,1,1,2,1,1,5,6,4)
>>   v5 <- c(1,1,1,1,1,3,3,3,3,3,1,1,1,1,1,6,4,5)
>>   v6 <- c(1,1,1,2,1,3,3,3,4,3,1,1,1,2,1,6,5,4)
>>   m1 <- cbind(v1,v2,v3,v4,v5,v6)
>>   cor(m1)
>>  #          v1        v2        v3        v4        v5        v6
>>  #v1 1.0000000 0.9393083 0.5128866 0.4320310 0.4664948 0.4086076
>>  #v2 0.9393083 1.0000000 0.4124441 0.4084281 0.4363925 0.4326113
>>  #v3 0.5128866 0.4124441 1.0000000 0.8770750 0.5128866 0.4320310
>>  #v4 0.4320310 0.4084281 0.8770750 1.0000000 0.4320310 0.4323259
>>  #v5 0.4664948 0.4363925 0.5128866 0.4320310 1.0000000 0.9473451
>>  #v6 0.4086076 0.4326113 0.4320310 0.4323259 0.9473451 1.0000000
>>
>>  factanal(m1, factors=3) # varimax is the default
>>
>>
>>  # Output from R
>>
>>  #Call:
>>  #factanal(x = m1, factors = 3)
>>
>>  #Uniquenesses:
>>  #   v1    v2    v3    v4    v5    v6
>>  #0.005 0.101 0.005 0.224 0.084 0.005
>>
>>  #   Factor1 Factor2 Factor3
>>  #v1 0.944   0.182   0.267
>>  #v2 0.905   0.235   0.159
>>  #v3 0.236   0.210   0.946
>>  #v4 0.180   0.242   0.828
>>  #v5 0.242   0.881   0.286
>>  #v6 0.193   0.959   0.196
>>
>>  #               Factor1 Factor2 Factor3
>>  #Proportion Var   0.316   0.314   0.300
>>  #Cumulative Var   0.316   0.630   0.929
>>
>>  #The degrees of freedom for the model is 0 and the fit was 0.4755
>>
>>  /* SAS code with example data*/
>>
>>  data fact;
>>  input v1-v6;
>>  datalines;
>>  1  1  3  3  1  1
>>  1  2  3  3  1  1
>>  1  1  3  4  1  1
>>  1  1  3  3  1  2
>>  1  1  3  3  1  1
>>  1  1  1  1  3  3
>>  1  2  1  1  3  3
>>  1  1  1  2  3  3
>>  1  2  1  1  3  4
>>  1  1  1  1  3  3
>>  3  3  1  1  1  1
>>  3  4  1  1  1  1
>>  3  3  1  2  1  1
>>  3  3  1  1  1  2
>>  3  3  1  1  1  1
>>  4  4  5  5  6  6
>>  5  6  4  6  4  5
>>  6  5  6  4  5  4
>>  ;
>>  run;
>>
>>  proc factor data=fact rotate=varimax method=p nfactors=3;
>  > var v1-v6;
>>  run;
>>
>>  /* Output  from SAS*/
>>
>>                                                           The FACTOR
>>  Procedure
>>                                            Initial Factor Method: Principal
>>  Components
>>
>>                                               Prior Communality Estimates:
>>  ONE
>>
>>
>>
>>                                   Eigenvalues of the Correlation Matrix:
>>  Total = 6  Average = 1
>>
>>                                           Eigenvalue    Difference
>>  Proportion    Cumulative
>>
>>                                      1    3.69603077    2.62291629
>>  0.6160        0.6160
>>                                      2    1.07311448    0.07234039
>>  0.1789        0.7949
>>                                      3    1.00077409    0.83977061
>>  0.1668        0.9617
>>                                      4    0.16100348    0.12004232
>>  0.0268        0.9885
>>                                      5    0.04096116    0.01284515
>>  0.0068        0.9953
>>                                      6    0.02811601
>>  0.0047        1.0000
>>
>>                                       3 factors will be retained by the
>>  NFACTOR criterion.
>>
>>
>>
>>                                                          Factor Pattern
>>
>>                                                   Factor1
>>  Factor2         Factor3
>>
>>                                        v1         0.79880
>>  0.54995        -0.17614
>>                                        v2         0.77036
>>  0.56171        -0.24862
>>                                        v3         0.79475
>>  -0.07685         0.54982
>>                                        v4         0.75757
>>  -0.08736         0.59785
>>                                        v5         0.80878
>>  -0.45610        -0.33437
>>                                        v6         0.77771
>>  -0.48331        -0.36933
>>
>>
>>                                                 Variance Explained by Each
>>  Factor
>>
>>                                               Factor1         Factor2
>>  Factor3
>>
>>                                             3.6960308       1.0731145
>>  1.0007741
>>
>>
>>                                           Final Communality Estimates:
>Total
>>  = 5.769919
>>
>>                            v1              v2              v3
>>  v4              v5              v6
>>                    0.97154741      0.97078498      0.93983835
>>  0.93897798      0.97394719      0.97482345
>>
>>
>>
>>                                                     The FACTOR Procedure
>>                                                     Rotation Method:
>Varimax
>>
>>                                                 Orthogonal Transformation
>>  Matrix
>>
>>                                                            1
>>  2               3
>>
>>                                            1         0.58233
>>  0.57714         0.57254
>>                                            2        -0.64183
>>  0.75864        -0.11193
>>                                            3        -0.49895
>>  -0.30229         0.81220
>>
>>
>>                                                      Rotated Factor Pattern
>>
>>                                                   Factor1
>>  Factor2         Factor3
>>
>>                                        v1         0.20008
>>  0.93148         0.25272
>>                                        v2         0.21213
>>  0.94590         0.17626
>>                                        v3         0.23781
>>  0.23418         0.91019
>>                                        v4         0.19893
>  > 0.19023         0.92909
>>                                        v5         0.93054
>>  0.22185         0.24253
>>                                        v6         0.94736
>>  0.19384         0.19939
>>
>>
>>                                                 Variance Explained by Each
>>  Factor
>>
>>                                               Factor1         Factor2
>>  Factor3
>>
>>                                             1.9445607       1.9401828
>>  1.8851759
>>
>>
>>                                           Final Communality Estimates:
>Total
>>  = 5.769919
>>
>>                            v1              v2              v3
>  > v4              v5              v6
>>
>>                    0.97154741      0.97078498      0.93983835
>>  0.93897798      0.97394719      0.97482345
>>
>>	[[alternative HTML version deleted]]
>>
>>  ______________________________________________
>>  R-help at r-project.org mailing list
>>  https://stat.ethz.ch/mailman/listinfo/r-help
>http://www.R-project.org/posting-guide.html
>>  and provide commented, minimal, self-contained, reproducible code.
>
>______________________________________________
>R-help at r-project.org mailing list
>https://stat.ethz.ch/mailman/listinfo/r-help
>and provide commented, minimal, self-contained, reproducible code.

--
William Revelle		http://personality-project.org/revelle.html
Professor			http://personality-project.org/personality.html
Department of Psychology             http://www.wcas.northwestern.edu/psych/
Northwestern University	http://www.northwestern.edu/
Attend  ISSID/ARP:2009               http://issid.org/issid.2009/

```