Important issue about initial communalities in FACTOR

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Important issue about initial communalities in FACTOR

Kirill Orlov
This post was updated on .
When SPSS factor analysis (FACTOR) analyzes covariances by Principal
axis
 extraction method it by default uses initial communality estimates
based on squared multiple correlation RSQ.

Specifically, when covariances are analyzed the value being put by
FACTOR on the diagonal of the matrix is:

Raw initial communality = IMAGE*VAR,
where VAR is the variable's variance and IMAGE is the portion of
variance explained by all other variables, and equal to RSQ*VAR.
SPSS calles IMAGE "rescaled initial communality".
Thus, SPSS puts RSQ*VAR*VAR on the diagonal as the starting communality.

Statistical package SYSTAT (version 12), quite well known program, has
factor analytic facility quite similar to that of SPSS, so they are easy
to compare. Both can analyze covariances by Principal axis method.
However, SYSTAT initially puts on the diagonal of the covariance matrix
value IMAGE*VAR [my lapse: should read: RSQ*VAR (=IMAGE)], not value RSQ*VAR*VAR.
Thence the results (unless number of iterations are very much) are different in SPSS and in SYSTAT.

Who is correct and who is wrong? The question is practically and
theoretically important
.

If you want to reproduce principal axis factoring of covariances done by
SPSS and by SYSTAT, you may use the following MATRIX piece.

data list list /     V1       V2       V3       V4       V5 V6       V7  .
begin data
   -1.552   -2.077    -.184   -1.190    -.242     .200   -1.157
     .172    -.691   -2.023    -.083     .039   -1.448    2.641
     .951     .784   -1.604     .323    -.999    -.394    2.753
     .690    1.882     .333     .689    1.422   -2.222     .655
    1.743     .594     .459    -.215    -.183    1.096    1.155
     .389    2.487     .255   -3.051    1.927     .679    2.032
   -1.379    -.342   -3.733    2.051    1.046    -.998   -1.004
    1.723     .975    1.003   -3.106   -1.381    -.827     .127
     .764     .329    1.309   -1.530     .402     .239     .412
    2.630    1.039    1.297    1.140    -.227    -.497    1.488
   -1.356     .747   -1.402    -.697    1.860     .058   -1.778
    -.920    -.824   -2.332    1.540   -1.194    1.475    1.655
    -.864     .253    -.960     .294   -2.305    -.921    -.139
    -.453     .136    -.347    -.396    -.989   -1.099    2.647
     .052   -1.064    -.144    2.898    1.688    2.019   -1.705
   -2.305   -2.581    -.784     .405     .507    -.695   -1.585
    -.468    1.889   -1.494    -.711    1.819    2.062    -.392
     .151     .132    -.235    -.711    -.982   -2.347    1.225
    -.868   -1.876    1.065   -1.290    -.775    2.102   -2.037
   -1.154    -.483    1.261     .766    1.104     .837    -.602
     .381    -.543    1.611   -1.658    -.214    2.079     .791
   -2.742    1.062   -3.070   -1.049    2.334   -1.350   -2.074
   -2.679   -1.275    -.984   -2.214   -1.592   -1.254   -2.271
   -2.152   -1.987   -2.840    1.311    -.139    -.264   -1.331
    -.194    -.688    -.268    -.589    -.771    -.917   -1.075
   -1.614     .779    -.652    -.589    1.443    -.400   -2.486
   -3.513   -2.339   -1.287    2.185    3.199   -1.827     .693
     .117     .361    1.438    -.563    1.746     .145     .169
    -.859    -.955   -1.527     .335    -.534   -1.479   -1.077
    -.581    1.269   -3.154    -.005     .535     .647    -.869
    -.038    -.350     .855   -1.022   -1.956     .076    1.427
   -3.092     .345    -.832     .655    -.079   -1.001   -1.341
    -.697   -2.122     .668    1.655   -2.762     .036     .910
    -.122    -.434    1.106    -.775     .562   -2.699    -.966
    -.044     .607    -.087     .079     .011    1.647     .542
     .941   -1.087     .705   -1.221     .852     .334     .123
    1.481     .688    -.654   -1.725     .621   -1.390   -1.241
    -.752    -.255   -2.292    1.176    -.002    -.524    -.681
    1.237    -.385    2.452     .774    1.023   -1.154    -.204
   -1.525     .294    -.480    -.579    2.393   -1.866   -1.459
    -.322   -1.746     .810    -.023   -1.484    1.140     .940
    1.253    -.328    -.947    -.565    -.058    1.854    1.071
   -1.094   -2.015    -.655   -2.194     .857   -2.137    1.183
    1.395     .679    3.040   -1.886    2.557    -.601    1.468
   -1.189   -1.294    -.590    -.296    1.226    1.467    2.928
     .358    1.240     .725    2.464     .319     .115    -.428
    -.021     .615    2.078     .174    1.766    -.887     .107
     .074     .389     .086    4.168    -.901    -.977    -.311
    -.033    -.301    -.937    -.839     .547    -.416     .380
    -.283     .290     .658    -.756    2.134   -1.925     .590
end data.


*Some functions to use.
define !cov(!pos= !token(1) /!pos= !charend('%') /!pos= !charend(')'))
comp !3= !2.
comp @sum= csum(!3).
comp !3= (sscp(!3)-t(@sum)*@sum/nrow(!3))/(nrow(!3)-1).
release @sum.
!enddefine.

define !image(!pos= !token(1) /!pos= !charend('%') /!pos= !charend('%')
/!pos= !charend(')'))
comp @cov= !2.
comp @type= !3.
comp @icov= inv(@cov).
comp @diag= diag(@icov).
comp !4= @icov/(@diag*t(@diag)).
comp !4= (!4+t(!4))/2.
do if @type.
-call setdiag(!4,-diag(!4)).
-comp !4= !4+@cov.
end if.
release @cov,@type,@icov,@diag.
!enddefine.


*The factoring (SPSS or SYSTAT way - choose below).
matrix.
get vars.
comp m= 3.
print m /title 'Number of factors to extract'.
comp p= ncol(vars).
!cov(vars%cov).
!image(cov%1%image).
comp vrnc= diag(cov).
comp im= diag(image).
print cov /title 'Covariance matrix'.
print vrnc /title 'Variances (its diagonal)'.
print {im&*vrnc,im} /title 'Initial comminalities: Raw (RSQ*VAR*VAR),
Rescaled (RSQ*VAR)'.

*-----Put initial communalities on the diagonal.
call setdiag(cov,im&*vrnc). /*Put Raw communalities (SPSS way) OR
*call setdiag(cov,im). /*Put Rescaled communalities (SYSTAT 12 way)

loop it= 1 to 25. /*Do iterations, say, 25
-call eigen(cov,eivec,eival).
-comp load= (eivec(:,1:m)&*(make(p,1,1)*t(sqrt(eival(1:m))))). /*loadings
-call setdiag(cov,rssq(load)). /*reset diagonal
end loop.
print {load,load/sqrt(vrnc*make(1,m,1))} /title 'Loadings; then Rescaled
loadings'.
print {rssq(load),rssq(load/sqrt(vrnc*make(1,m,1)))} /title 'Extracted
communalities: Raw, Rescaled'.
end matrix.


*FACTOR command corresponding to the above.
FACTOR
   /VARIABLES V1 V2 V3 V4 V5 V6 V7
   /MISSING LISTWISE
   /ANALYSIS V1 V2 V3 V4 V5 V6 V7
   /PRINT INITIAL EXTRACTION
   /CRITERIA FACTORS(3) ITERATE(25)
   /EXTRACTION PAF
   /ROTATION NOROTATE
   /METHOD=COVARIANCE.


=====================
To manage your subscription to SPSSX-L, send a message to
LISTSERV@LISTSERV.UGA.EDU (not to SPSSX-L), with no body text except the
command. To leave the list, send the command
SIGNOFF SPSSX-L
For a list of commands to manage subscriptions, send the command
INFO REFCARD
Reply | Threaded
Open this post in threaded view
|

Re: Important issue about initial communalities in FACTOR

Kirill Orlov
Lapse in text of the question correction:
However, SYSTAT initially puts on the diagonal of the covariance matrix value IMAGE*VAR, not value RSQ*VAR*VAR.
Shold read:
However, SYSTAT initially puts on the diagonal of the covariance matrix value RSQ*VAR, not value RSQ*VAR*VAR.


===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD
Reply | Threaded
Open this post in threaded view
|

Re: Important issue about initial communalities in FACTOR

Kirill Orlov
This post was updated on .
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: Important issue about initial communalities in FACTOR

Kirill Orlov
Lapse 2 correction:
Thence the results (unless number of iterations are very much) are different in SPSS and in SYSTAT.
Should read:
Thence the results (even under many iterations) are usually different in SPSS and in SYSTAT.




===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD
Reply | Threaded
Open this post in threaded view
|

Re: Important issue about initial communalities in FACTOR

Kirill Orlov
This post was updated on .
In reply to this post by Kirill Orlov
More programs were compared with SPSS by now.
- R package psych (function fa), the most rich R facility for factor
analysis, output results as SYSTAT did.
- Statistical program Statgraphics Centurion 15.1, a general purpose
statistical package, output results as SYSTAT did.

So, three respectable statistical factor analysis programs, when
analyzing covariances by principal axis extraction, gave the same
result. SPSS Statistics gave different result. By using my syntax above
one can make sure that while SPSS uses IMAGE*VAR as initial communality
estimate, the three other use IMAGE as initial communality.

SPSS' way for me is incomprehensible. If variance VAR >1 then IMAGE*VAR
(=RSQ*VAR*VAR) can be greater than VAR. For example, VAR=2.1 and
RSQ=0.8. Then the initial communality is 2.1*0.8 * 2.1 = 3.528. What's
the reason to use initial communality estimate which is greater than the
real communality can ever be?

That seems to be the bug in SPSS Statistics. And isn't it this bug which
is responsible for the very frequent so called Heywood case error in the
context of analyzing covariances by SPSS FACTOR?


=====================
To manage your subscription to SPSSX-L, send a message to
LISTSERV@LISTSERV.UGA.EDU (not to SPSSX-L), with no body text except the
command. To leave the list, send the command
SIGNOFF SPSSX-L
For a list of commands to manage subscriptions, send the command
INFO REFCARD
Reply | Threaded
Open this post in threaded view
|

Re: Important issue about initial communalities in FACTOR

Kirill Orlov
In reply to this post by Kirill Orlov
The bug is recognized by SPSS
http://www-01.ibm.com/support/docview.wss?uid=swg21698265

===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD