Sehr unterschiedliche Ergebnisse der Hauptkomponentenanalyse in SPSS und Stata nach der Rotation

7

Für meine Doktorarbeit muss ich eine Hauptkomponentenanalyse (PCA) durchführen. Ich fand es in Stata nicht allzu schwierig und war glücklich, die Ergebnisse zu interpretieren (ich weiß, dass es einen Unterschied zwischen Faktor- und Hauptkomponentenanalyse gibt). Ich habe es jedoch mit einem Kollegen besprochen, der SPSS verwendet, also habe ich meine Daten (aus Excel) auch in SPSS importiert und dort auch eine PCA durchgeführt.

Erschreckenderweise unterscheiden sich die Ergebnisse enorm von meinen Stata-Ergebnissen (nach der Rotation). Nicht einmal in der Nähe.

Wie kann das sein? (Siehe Stata PCA- und SPSS PCA-Codes und Ergebnisse unten).

Noch seltsamer für mich: Als ich factor [varnames], pcfin Stata einen (Hauptkomponentenfaktor) durchführte, erhielt ich (fast) die gleichen Ergebnisse wie bei PCA in SPSS (siehe Stata-Hauptkomponentenfaktor unten).

Was sind Hauptkomponentenfaktoren? Eine Mischung aus PCA- und Faktoranalyse?

Ich bin verwirrt. Wenn Leute in Zeitschriften berichten, die eine PCA durchgeführt haben: Soll ich dann mit SPSS oder Stata fragen? Kann mir jemand das erklären?

Stata:

pca bewert_sfu_a bewert_sfu_b bewert_sfu_c bewert_sfu_d bewert_sfu_e bewert_sfu_f bewert_sfu_g bewert_sfu_h bewert_sfu_i bewert_sfu_j bewert_sfu_k bewert_sfu_l, mineigen(1)

Hauptkomponenten / Korrelation
Anzahl der Beobachtungen = 158 Anzahl der comp. = 3 Spur = 12 Drehung: (nicht gedreht = Haupt) Rho = 0,5382

--------------------------------------------------------------------------
   Component |   Eigenvalue   Difference         Proportion   Cumulative
-------------+------------------------------------------------------------
       Comp1 |       3.8723      2.46548             0.3227       0.3227
       Comp2 |      1.40682      .227718             0.1172       0.4399
       Comp3 |       1.1791      .206742             0.0983       0.5382
       Comp4 |      .972359      .169164             0.0810       0.6192
       Comp5 |      .803195      .050871             0.0669       0.6861
       Comp6 |      .752324     .0953662             0.0627       0.7488
       Comp7 |      .656957     .0137592             0.0547       0.8036
       Comp8 |      .643198      .135894             0.0536       0.8572
       Comp9 |      .507304     .0435925             0.0423       0.8995
      Comp10 |      .463711     .0749052             0.0386       0.9381
      Comp11 |      .388806     .0348752             0.0324       0.9705
      Comp12 |      .353931            .             0.0295       1.0000
--------------------------------------------------------------------------

Hauptkomponenten (Eigenvektoren)

----------------------------------------------------------
    Variable |    Comp1     Comp2     Comp3 | Unexplained 
-------------+------------------------------+-------------
bewert_sfu_a |   0.2700    0.3901   -0.1477 |       .4779 
bewert_sfu_b |   0.3298    0.2303   -0.4027 |       .3129 
bewert_sfu_c |  -0.3046    0.3149    0.1773 |       .4642 
bewert_sfu_d |   0.3489    0.1910    0.0700 |       .4715 
bewert_sfu_e |   0.3342    0.2067    0.2720 |       .4202 
bewert_sfu_f |  -0.2001    0.4561   -0.1587 |       .5227 
bewert_sfu_g |   0.3057    0.3128    0.1531 |       .4728 
bewert_sfu_h |  -0.3611    0.2180    0.2913 |        .328 
bewert_sfu_i |   0.2352   -0.2211    0.3662 |       .5588 
bewert_sfu_j |  -0.1556    0.3894    0.4578 |       .4457 
bewert_sfu_k |   0.3239    0.0525    0.0754 |       .5832 
bewert_sfu_l |   0.2091   -0.2445    0.4720 |       .4839 
----------------------------------------------------------

rotate, varimax kaiser

Hauptkomponenten / Korrelation Anzahl der Beobachtungen = 158 Anzahl der comp. = 3 Trace = 12 Rotation: orthogonaler Varimax (Kaiser on) Rho = 0,5382

--------------------------------------------------------------------------
   Component |     Variance   Difference         Proportion   Cumulative
-------------+------------------------------------------------------------
       Comp1 |      2.95242      .867357             0.2460       0.2460
       Comp2 |      2.08506       .66433             0.1738       0.4198
       Comp3 |      1.42073            .             0.1184       0.5382
--------------------------------------------------------------------------

Gedrehte Komponenten

----------------------------------------------------------
    Variable |    Comp1     Comp2     Comp3 | Unexplained 
-------------+------------------------------+-------------
bewert_sfu_a |   0.4076   -0.0266   -0.2829 |       .4779 
bewert_sfu_b |   0.3116   -0.3063   -0.3648 |       .3129 
bewert_sfu_c |  -0.0255    0.4536   -0.1302 |       .4642 
bewert_sfu_d |   0.4007   -0.0456    0.0218 |       .4715 
bewert_sfu_e |   0.4392    0.0965    0.1618 |       .4202 
bewert_sfu_f |   0.0698    0.2650   -0.4451 |       .5227 
bewert_sfu_g |   0.4531    0.0973    0.0005 |       .4728 
bewert_sfu_h |  -0.1026    0.5023    0.0011 |        .328 
bewert_sfu_i |   0.1350   -0.0261    0.4684 |       .5588 
bewert_sfu_j |   0.1927    0.5856    0.0731 |       .4457 
bewert_sfu_k |   0.3026   -0.1048    0.1037 |       .5832 
bewert_sfu_l |   0.1224    0.0410    0.5564 |       .4839 
----------------------------------------------------------

Komponentenrotationsmatrix

--------------------------------------------
             |    Comp1     Comp2     Comp3 
-------------+------------------------------
       Comp1 |   0.7942   -0.5573    0.2422 
       Comp2 |   0.5724    0.5523   -0.6061 
       Comp3 |   0.2040    0.6200    0.7576 
--------------------------------------------

SPSS-Code:

FACTOR
/VARIABLES bewert_sfu_a bewert_sfu_b bewert_sfu_c bewert_sfu_d  bewert_sfu_e bewert_sfu_f bewert_sfu_g bewert_sfu_h bewert_sfu_i bewert_sfu_j bewert_sfu_k bewert_sfu_l
/MISSING LISTWISE
/ANALYSIS bewert_sfu_a bewert_sfu_b bewert_sfu_c bewert_sfu_d bewert_sfu_e bewert_sfu_f bewert_sfu_g bewert_sfu_h bewert_sfu_i bewert_sfu_j bewert_sfu_k bewert_sfu_l
/PRINT EXTRACTION ROTATION
/FORMAT BLANK(.40)
/CRITERIA MINEIGEN(1) ITERATE(50)
/EXTRACTION PC
/CRITERIA ITERATE(50)
/ROTATION VARIMAX
/METHOD=CORRELATION.

Beschreibende Statistik

                Mean    Std. Deviation  Analysis N
bewert_sfu_a    3.79              .452  158
bewert_sfu_b    3.68              .506  158
bewert_sfu_c    1.61              .827  158
bewert_sfu_d    3.32              .619  158
bewert_sfu_e    3.03              .643  158
bewert_sfu_f    2.61              .812  158
bewert_sfu_g    3.32              .621  158
bewert_sfu_h    1.53              .796  158
bewert_sfu_i    2.10              .838  158
bewert_sfu_j    2.53              .819  158
bewert_sfu_k    3.29              .784  158
bewert_sfu_l    2.78              .842  158`

Komponentenmatrix a

                       Component        
                   1       2       3
bewert_sfu_a    .531    .463    
bewert_sfu_b    .649           -.437
bewert_sfu_c   -.599        
bewert_sfu_d    .687        
bewert_sfu_e    .658        
bewert_sfu_f            .541    
bewert_sfu_g    .602        
bewert_sfu_h   -.711        
bewert_sfu_i    .463        
bewert_sfu_j            .462    .497
bewert_sfu_k    .637        
bewert_sfu_l    .412            .513

Extraktionsmethode: Hauptkomponentenanalyse.
a 3 Komponenten extrahiert.

Kommunalitäten

                Extraction
bewert_sfu_a    .522
bewert_sfu_b    .687
bewert_sfu_c    .536
bewert_sfu_d    .529
bewert_sfu_e    .580
bewert_sfu_f    .477
bewert_sfu_g    .527
bewert_sfu_h    .672
bewert_sfu_i    .441
bewert_sfu_j    .554
bewert_sfu_k    .417
bewert_sfu_l    .516
Extraction Method: Principal Component Analysis.    

Gedrehte Komponentenmatrix a

                      Component     
                   1      2      3
bewert_sfu_a    .705        
bewert_sfu_b    .673  -.448 
bewert_sfu_c           .627 
bewert_sfu_d    .671        
bewert_sfu_e    .661        
bewert_sfu_f                 -.576
bewert_sfu_g    .699        
bewert_sfu_h           .698 
bewert_sfu_i                  .630
bewert_sfu_j           .742 
bewert_sfu_k    .528        
bewert_sfu_l                  .707

Extraction Method: Principal Component Analysis. 
Rotation Method: Varimax with Kaiser Normalization.         
a Rotation converged in 5 iterations.           

Komponententransformationsmatrix

Component      1        2      3
1           .765    -.476   .434
2           .644     .567  -.513
3          -.001     .672   .741
Extraction Method: Principal Component Analysis.
Rotation Method: Varimax with Kaiser Normalization.         

Stata-Faktor-Analyse / Korrelation
Anzahl der Beobachtungen = 158 Methode: Hauptkomponentenfaktoren
Zurückbehaltene Faktoren = 3 Rotation: (nicht gedreht)
Anzahl der Parameter = 33

--------------------------------------------------------------------------
     Factor  |   Eigenvalue   Difference        Proportion   Cumulative
-------------+------------------------------------------------------------
    Factor1  |      3.87230      2.46548            0.3227       0.3227
    Factor2  |      1.40682      0.22772            0.1172       0.4399
    Factor3  |      1.17910      0.20674            0.0983       0.5382
    Factor4  |      0.97236      0.16916            0.0810       0.6192
    Factor5  |      0.80319      0.05087            0.0669       0.6861
    Factor6  |      0.75232      0.09537            0.0627       0.7488
    Factor7  |      0.65696      0.01376            0.0547       0.8036
    Factor8  |      0.64320      0.13589            0.0536       0.8572
    Factor9  |      0.50730      0.04359            0.0423       0.8995
   Factor10  |      0.46371      0.07491            0.0386       0.9381
   Factor11  |      0.38881      0.03488            0.0324       0.9705
   Factor12  |      0.35393            .            0.0295       1.0000
--------------------------------------------------------------------------
LR test: independent vs. saturated:  chi2(66) =  453.95 Prob>chi2 = 0.0

Faktorladungen (Mustermatrix) und eindeutige Varianzen

-----------------------------------------------------------
    Variable |  Factor1   Factor2   Factor3 |   Uniqueness 
-------------+------------------------------+--------------
bewert_sfu_a |   0.5314    0.4627   -0.1603 |      0.4779  
bewert_sfu_b |   0.6490    0.2732   -0.4373 |      0.3129  
bewert_sfu_c |  -0.5994    0.3735    0.1926 |      0.4642  
bewert_sfu_d |   0.6866    0.2265    0.0760 |      0.4715  
bewert_sfu_e |   0.6576    0.2451    0.2954 |      0.4202  
bewert_sfu_f |  -0.3938    0.5409   -0.1723 |      0.5227  
bewert_sfu_g |   0.6015    0.3710    0.1663 |      0.4728  
bewert_sfu_h |  -0.7107    0.2586    0.3163 |      0.3280  
bewert_sfu_i |   0.4629   -0.2622    0.3977 |      0.5588  
bewert_sfu_j |  -0.3062    0.4619    0.4971 |      0.4457  
bewert_sfu_k |   0.6373    0.0623    0.0818 |      0.5832  
bewert_sfu_l |   0.4116   -0.2900    0.5125 |      0.4839  

rotate, varimax kaiser blanks(.4)

Faktoranalyse / Korrelation
Anzahl der Beobachtungen = 158 Methode: Hauptkomponentenfaktoren
Zurückbehaltene Faktoren = 3 Rotation: orthogonaler Varimax (Kaiser on)
Anzahl der Parameter = 33

--------------------------------------------------------------------------
     Factor  |     Variance   Difference        Proportion   Cumulative
-------------+------------------------------------------------------------
    Factor1  |      2.84986      0.98705            0.2375       0.2375
    Factor2  |      1.86281      0.11727            0.1552       0.3927
    Factor3  |      1.74554            .            0.1455       0.5382
--------------------------------------------------------------------------
LR test: independent vs. saturated:  chi2(66) =  453.95 Prob>chi2 = 0.0000

Gedrehte Faktorladungen (Mustermatrix) und eindeutige Varianzen

-----------------------------------------------------------
    Variable |  Factor1   Factor2   Factor3 |   Uniqueness 
-------------+------------------------------+--------------
bewert_sfu_a |   0.7047   -0.0983   -0.1258 |      0.4779  
bewert_sfu_b |   0.6732   -0.4479   -0.1827 |      0.3129  
bewert_sfu_c |  -0.2184    0.6266   -0.3090 |      0.4642  
bewert_sfu_d |   0.6710   -0.1473    0.2377 |      0.4715  
bewert_sfu_e |   0.6605    0.0245    0.3781 |      0.4202  
bewert_sfu_f |   0.0474    0.3785   -0.5761 |      0.5227  
bewert_sfu_g |   0.6989    0.0358    0.1935 |      0.4728  
bewert_sfu_h |  -0.3776    0.6976   -0.2067 |      0.3280  
bewert_sfu_i |   0.1847   -0.1019    0.6298 |      0.5588  
bewert_sfu_j |   0.0624    0.7419   -0.0018 |      0.4457  
bewert_sfu_k |   0.5276   -0.2131    0.3050 |      0.5832  
bewert_sfu_l |   0.1273   -0.0160    0.7069 |      0.4839  
-----------------------------------------------------------

Faktor-Rotationsmatrix

-----------------------------------------
             | Factor1  Factor2  Factor3 
-------------+---------------------------
     Factor1 |  0.7650  -0.4761   0.4336 
     Factor2 |  0.6440   0.5672  -0.5134 
     Factor3 | -0.0016   0.6720   0.7406 
-----------------------------------------
hanne
quelle
3
Können Sie Code und Ausgabe anzeigen. Es ist schwer zu erraten, ohne genau zu wissen, was Sie getan haben.
Jeremy Miles
Rechtschreibung ist Stata nicht STATA. Das Unternehmen verwendete die Schreibweise STATA 1985 kurz, jedoch nicht seitdem. Durchgehend korrigiert. ( factorist ein Befehl in Stata, keine Funktion, obwohl das für die Frage nicht wesentlich ist.)
Nick Cox
Cross- Posting hier statalist.org/forums/forum/general-stata-discussion/general/… Es ist in jedem Forum hilfreich, uns über Cross-Posting zu informieren .
Nick Cox
2
Ich sehe keine nennenswerten Unterschiede zwischen den PCA-Ergebnissen. Zum Beispiel sind die ersten drei Eigenwerte für SPSS 3,782, 1,407, 1,179 im Vergleich zu den Stata-Berechnungen von 3,8723, 1,40682, 1,1791: in perfekter Übereinstimmung. Ich bin zuversichtlich, dass sie in beiden Fällen denselben Eigenvektoren entsprechen. Bitte teilen Sie uns Ihre Grundlage mit, um zu dem Schluss zu kommen, dass die beiden Programme unterschiedliche Ergebnisse für PCA liefern. (Ich stelle fest, dass Sie zusätzliche Folgeberechnungen in Form einer Faktoranalyse
angefordert haben,
2
Lieber Whuber, danke, dass du dich damit befasst hast. Die Ergebnisse nach der Drehung sind sehr unterschiedlich, dh nicht die gleiche Anzahl von Variablen, die auf die Komponenten geladen werden, und auch die Faktorladungen sind unterschiedlich. (Wie Sie sehen können, habe ich die gleiche Rotationsmethode verwendet). Verstehe ich etwas völlig falsch?
Hanne

Antworten:

6

Du hast Recht. Stata ist komisch darüber. Stata liefert unterschiedliche Ergebnisse von SAS, R und SPSS, und es ist (meiner Meinung nach) schwierig zu verstehen, warum, ohne tief in die Welt der Faktoranalyse und PCA einzutauchen.

Hier erfahren Sie, dass etwas Seltsames passiert. Die Summe der quadratischen Belastungen für eine Komponente entspricht dem Eigenwert für diese Komponente.

Vor und nach der Rotation ändern sich die Eigenwerte, aber die Gesamteigenwerte ändern sich nicht. Addieren Sie die Summe der quadratischen Ladungen aus Ihrer Ausgabe (aus diesem Grund habe ich Sie gebeten, die Leerzeichen in meinem Kommentar zu entfernen). Mit der Standardeinstellung von Stata summiert sich die Summe der quadratischen Ladungen auf 1,00 (innerhalb des Rundungsfehlers). Mit SPSS (und R und SAS und jedem anderen Faktoranalyseprogramm, das ich mir angesehen habe) summieren sie sich zum Eigenwert für diesen Faktor. (Eigenwerte nach der Rotation ändern sich, aber die Summe der Eigenwerte bleibt gleich). Die Summe der quadratischen Belastungen in SPSS entspricht der Summe der Eigenwerte (dh 3,8723 + 1,40682) sowohl vor als auch nach der Rotation.

In Stata ist die Summe der quadratischen Ladungen für jeden Faktor gleich 1,00, und daher hat Stata die Ladungen neu skaliert.

Die einzige Erwähnung davon (die ich gefunden habe) in der Stata-Dokumentation ist im Abschnitt estat loadings der Hilfe, wo es heißt:

cnorm (unit | eigen | inveigen), eine Option, die bei estat-Ladungen verwendet wird, wählt die Normalisierung der Eigenvektoren, der Spalten der Hauptkomponenten-Ladematrix, aus. Die folgenden Normalisierungen sind verfügbar

Dies scheint jedoch nur für die nicht gedrehte Komponentenmatrix zu gelten, nicht für die rotierte Komponentenmatrix. Ich kann die nicht normalisierte gedrehte Matrix nach PCA nicht bekommen.

Die Leute bei Stata scheinen zu wissen, was sie tun, und haben normalerweise einen guten Grund, die Dinge so zu tun, wie sie es tun. Dieser ist mir allerdings ein Rätsel.

(Zum späteren Nachschlagen hätte es mir das Leben leichter gemacht, wenn Sie einen Datensatz verwendet hätten, auf den ich zugreifen könnte, und wenn Sie alle Ausgaben ohne Leerzeichen aufgenommen hätten.)

Bearbeiten: Meine übliche Website für Informationen darüber, wie Sie für verschiedene Programme die gleichen Ergebnisse erzielen, ist die UCLA IDRE. Sie behandeln PCA in Stata nicht: http://www.ats.ucla.edu/stat/AnnotatedOutput/ Ich muss mich fragen, ob das daran liegt, dass sie nicht das gleiche Ergebnis erzielen konnten. :) :)

Jeremy Miles
quelle
2
Kann diese Stata-Verrücktheit von der gleichen Art sein, wie sie in einer anderen aktuellen Frage aufgeworfen wurde ? Dort drehte Stata eindeutig die Eigenvektormatrix (dh die normalisierten Ladungen mit SS = 1), während die meisten Programme die Ladematrix drehen.
ttnphns
Ja, ich denke es ist, danke. Es ist fast eine doppelte Frage, und die Antwort darauf erklärt besser, was passiert.
Jeremy Miles
1
In der Dokumentation heißt es: Remark: Literature and software that treat principal components in combination with factor analysis tend to isplay principal components normed to the associated eigenvalues rather than to 1. This normalization is available in the postestimation command estat loadings; see [MV] pca postestimation.Also ja, sowohl Sie als auch ich hatten Recht mit unserem Verdacht.
ttnphns
1
Ja, ich glaube, dass du es hast.
Jeremy Miles
1
William Lisowski von Statalist bringt es professioneller auf den Punkt als ich: statalist.org/forums/forum/general-stata-discussion/general/… aber am Ende zu dem gleichen Schluss kommen :)
hanne
3

Die Unterschiede zwischen den Stata PCA-Methoden und den herkömmlichen Methoden, die in R oder SPSS verwendet werden, sind:

1. Skalieren von Eigenvektoren / Komponenten

Stata dreht Eigenvektoren. Während R- oder SPSS-PCA-Rotationsverfahren normalerweise rotieren, nachdem Eigenvektoren um das Quadrat der Eigenwerte skaliert wurden, um die für die Faktoranalyse typischeren Komponentenladungen zu erzeugen.

2. Konvergenzstoppkriterien (Toleranz)

Der andere Unterschied besteht darin, dass Stata, Rotationskonvergenz-Stoppkriterien (Toleranz) 1e-6 für Varimax-Rotation (gemäß Stat's rotatematFunktionshandbuch) ist, während in R die Standardeinstellung 1e-5und in SPSS die Standardeinstellung ist 1e-14, wenn ich mich nicht irre. Nachdem ich diese Unterschiede angesprochen hatte, konnte ich identische Ladungen und eine identische Rotationsmatrix in R erhalten.

Die R- und SPSS-Varimax-Rotationsfunktion führt standardmäßig eine Kaiser-Normalisierung durch.

Varimax-Rotationen an Eigenvektoren scheinen jedoch direkt unkonventionell zu sein. Siehe die Diskussion mit dem Titel Ist PCA gefolgt von einer Rotation (wie Varimax) noch PCA? .

Nachtrag

Jeder PC ist orthogonal (nicht korreliert). Rotierende PCs weisen jedoch nach Abschluss der Rotation weder orthogonale Belastungen noch unkorrelierte Komponenten auf. Dies ist in den Stata-Codes geschehen. Um unkorrelierte Komponenten zu erhalten, ist eine spezielle Skalierung erforderlich, z. B. das Teilen der Komponenten durch die Quadratwurzel des entsprechenden Eigenwerts (Eigenwerte sind die Varianzen der entsprechenden PCs). Dies ist die Standardskalierungsmethode in R und SPSS.

Verweise:

am313
quelle
Vielen Dank für diese ausführliche Antwort. Eine Bemerkung: Man sollte Eigenvektoren besser nicht als "einheitsskalierte Hauptkomponenten" bezeichnen, da es sich tatsächlich um einheitsskalierte Ladungen handelt. Sie sind keine "Hauptkomponenten" (die PC-Bewertungen), sondern Hauptrichtungen (der Achsen der Komponenten).
ttnphns
Guter Fang. Vielen Dank für den Hinweis. Zur Vereinfachung habe ich die Definition von Eigenvektoren entfernt.
am313
0

Bemerkung: Dies ist eher ein Kommentar als eine Antwort.

Hier ist ein Skript, das versucht zu reproduzieren, wie die StataLösung berechnet wird.
Tatsächlich scheint es - anders als die Lösung durch SPSS - eine Transformation der Eigenvektoren (und insbesondere ihrer Kaiser-Normalisierung über die ersten drei Eigenvektoren) und nicht der PCA-Komponenten wie bei SPSS zu sein.

Hier ist meine Berechnung mit meiner Matrix-Rechner-Software MatMate

;******  MatMate Version 0.1410 Beta *****************************
//  first part of posted data (via clipboard) Eigenvectors (your first protocol)
 // of Stata- computations
clp = csvdatei("clip")
eig_lad = clp[*,1..3]   // the first 3 columns: these are obviously eigenvector-values

        |   0,2700    0,3901     -0,1477 |
        |   0,3298    0,2303     -0,4027 |
        |  -0,3046    0,3149      0,1773 |
        |   0,3489    0,1910      0,0700 |
        |   0,3342    0,2067      0,2720 |
        |  -0,2001    0,4561     -0,1587 |
        |   0,3057    0,3128      0,1531 |
        |  -0,3611    0,2180      0,2913 |
        |   0,2352   -0,2211      0,3662 |
        |  -0,1556    0,3894      0,4578 |
        |   0,3239    0,0525      0,0754 |
        |   0,2091   -0,2445      0,4720 |

uniq = clp[*,4]  // "not-explained" = unique (unexplained by 3 eigenvectors) variances
                 //  (= squared values, not loadings)

        |   0,4779 |
        |   0,3129 |
        |   0,4642 |
        |   0,4715 |
        |   0,4202 |
        |   0,5227 |
        |   0,4728 |
        |   0,3280 |
        |   0,5588 |
        |   0,4457 |
        |   0,5832 |
        |   0,4839 |

//  second part of posted data (via clipboard) : first three eigenvalues
pca_ssl = csvdatei("clip")  // "ssl" means "sum of sqauares of loadings"

        |   3,8723    1,4068      1,1791 |


   // check whether the "unique" variance is really the non-explained
   // variance by the first 3 eigenvectors/PCA-components:
chk = sumzl(    eig_lad ^# 2 *#  pca_ssl   ) + uniq 
   // the squared pca-loadings (eigenvectors^2 scaled by eigenvalues)
   //  plus the unique variance should sum up to 1-variance for each row (=item)

        |   1,0000 |
        |   0,9999 |
        |   1,0000 |
        |   1,0000 |
        |   1,0000 |
        |   1,0001 |
        |   1,0000 |
        |   0,9998 |
        |   0,9999 |
        |   0,9999 |
        |   1,0000 |
        |   1,0000 |




 // get the rotationmatrix to bring the "Kaiser"-normalized loadings to Varimax 
 // note that SPSS computes this based on the PCA-loadings, not on Eigenvector-values 
t = gettrans(normzl(eig_lad ),"varimax") // "normzl(<loadings>)"
                                         // provides Kaiser-normalization per row 
  //       (of course here in Stata based on eigenvectors)

 // rotation-/transformation-matrix "t" from pca to varimax coordinates

        |   0,7942   -0,5573      0,2421 |
        |   0,5724    0,5523     -0,6062 |
        |   0,2041    0,6200      0,7576 |

vmx_lad = eig_lad * t        // this computes the Stata - varimax-coordinates

        |   0,4580   -0,0065     -0,1926 |
        |   0,4012   -0,2970     -0,2735 |
        |  -0,0305    0,4428     -0,1625 |
        |   0,3898   -0,0107      0,1051 |
        |   0,3884    0,1409      0,2402 |
        |   0,1409    0,2473     -0,4385 |
        |   0,4351    0,1348      0,0853 |
        |  -0,1363    0,4913     -0,0528 |
        |   0,0370    0,0087      0,4867 |
        |   0,1310    0,6026      0,0716 |
        |   0,2815   -0,0738      0,1693 |
        |   0,0018    0,0790      0,5657 |

vmx_ssl = sqsumsp((pca_ssl *# sqrt(pca_ssl#)) *t) 
          // sums of squares of the varimax-rotated princ. components (not eigenvectors!)

        |   2,9522    2,0849      1,4207 |


// =============== The SPSS-solution          =========================
eig_lad = clp[*,1..3]   // the first 3 columns: these are obviously eigenvector-values
spss_pca_lad = eig_lad *# sqrt(pca_ssl#) // compute pca-loadings from eigenvectors
spss_t = gettrans(normzl(spss_pca_lad ),"varimax") // "normzl(<pca loadings>)"
spss_vmx_lad = spss_pca_lad * spss_t        // this computes the SPSS - varimax-coordinates

    |   0,7047   -0,0983     -0,1260 |
    |   0,6731   -0,4479     -0,1827 |
    |  -0,2184    0,6266     -0,3091 |
    |   0,6710   -0,1473      0,2377 |
    |   0,6606    0,0244      0,3780 |
    |   0,0474    0,3785     -0,5761 |
    |   0,6989    0,0358      0,1935 |
    |  -0,3776    0,6975     -0,2066 |
    |   0,1846   -0,1019      0,6298 |
    |   0,0624    0,7418     -0,0018 |
    |   0,5276   -0,2131      0,3050 |
    |   0,1273   -0,0160      0,7068 |

   spss_vmx_ssl = sqsumsp(spss_vmx_lad)  // the SPSS-"variances" of the vmx-factors

    |   2,8498    1,8626      1,7455 |

Da alle Koordinaten und auch die Transformations- / Rotationsmatrix korrekt wiedergegeben zu sein scheinen, scheint dies tatsächlich die interne Berechnung von Stata und auch von SPSS zu sein

Der auf die Syntax / das Konzept reduzierte Unterschied wäre

// Stata
eig_lad = clp[*,1..3]   // the first 3 columns: these are obviously eigenvector-values
t = gettrans(normzl(eig_lad ),"varimax") // "normzl(<on eigenvectors>)"
vmx_lad = eig_lad * t        // this computes the Stata - varimax-coordinates

// SPSS
eig_lad = clp[*,1..3]   // the first 3 columns: these are obviously eigenvector-values
spss_pca_lad = eig_lad *# sqrt(pca_ssl#) // compute pca-loadings from eigenvectors
spss_t = gettrans(normzl(spss_pca_lad ),"varimax") // "normzl(<on pca loadings>)"
spss_vmx_lad = spss_pca_lad * spss_t        // this computes the SPSS - varimax-coordinates

Das Rotationskriterium für das VARIMAX-Konzept scheint in beiden Softwarepaketen unterschiedlich zu sein. Während Stata die Rotationswinkel auf der Basis der Einheit-Varianz-normalisiert ( „Kaiser-normalisiert“) Reihen des berechnet Eigenvektoren , tut SPSS berechnen , die Rotationswinkel auf den einheits Varianz-normalisierte basieren ( „Kaiser-normalisierte“) Reihen von PCA-Komponenten , die Skalierungen der Eigenvektoren durch die Quadratwurzeln der zugehörigen Eigenwerte sind. Dies sollte in den meisten Fällen zu unterschiedlichen Lösungen führen.

Gottfried Helms
quelle
0

Hier ist ein Abschnitt aus meinen Notizen, der helfen könnte. Alle Normalisierungen der Eigenvektoren (oder Belastungen) sind korrekt! Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Teresa
quelle