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], pcf
in 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
-----------------------------------------
factor
ist ein Befehl in Stata, keine Funktion, obwohl das für die Frage nicht wesentlich ist.)Antworten:
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:
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. :) :)
quelle
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.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
rotatemat
Funktionshandbuch) ist, während in R die Standardeinstellung1e-5
und in SPSS die Standardeinstellung ist1e-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:
quelle
Bemerkung: Dies ist eher ein Kommentar als eine Antwort.
Hier ist ein Skript, das versucht zu reproduzieren, wie die
Stata
Lö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
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
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.
quelle
Hier ist ein Abschnitt aus meinen Notizen, der helfen könnte. Alle Normalisierungen der Eigenvektoren (oder Belastungen) sind korrekt!
quelle