Interpretation von Diskrepanzen zwischen R und SPSS mit explorativer Faktoranalyse

14

Ich bin ein Doktorand in Informatik. Ich habe eine explorative Faktorenanalyse für ein Forschungsprojekt durchgeführt. Meine Kollegen (die das Projekt leiten) verwenden SPSS, während ich R. bevorzuge. Dies spielte keine Rolle, bis wir eine große Diskrepanz zwischen den beiden statistischen Paketen entdeckten.

Wir verwenden das Prinzipalachsen-Factoring als Extraktionsmethode (bitte beachten Sie, dass mir der Unterschied zwischen PCA- und Faktoranalyse bekannt ist und dass wir PCA zumindest nicht absichtlich verwenden). Nach dem, was ich gelesen habe, sollte dies der "Hauptachsen" -Methode in R und entweder "Hauptachsenfaktor" oder "ungewichtete kleinste Quadrate" in SPSS entsprechen, gemäß der R-Dokumentation . Wir verwenden eine Methode der schrägen Rotation (speziell Promax ), da wir korrelierte Faktoren erwarten und die Mustermatrix interpretieren .

Wenn Sie die beiden Prozeduren in R und SPSS ausführen, gibt es große Unterschiede. Die Mustermatrix gibt verschiedene Ladungen an. Obwohl dies den variablen Beziehungen mehr oder weniger den gleichen Faktor verleiht, gibt es einen Unterschied von bis zu 0,15 zwischen den entsprechenden Ladungen, was mehr zu sein scheint, als bei einer anderen Implementierung der Extraktionsmethode und Promax-Rotationen zu erwarten wäre. Dies ist jedoch nicht der verblüffendste Unterschied.

Die kumulative Varianz, die durch die Faktoren erklärt wird, liegt bei den SPSS-Ergebnissen bei etwa 40% und bei den R-Ergebnissen bei 31%. Dies ist ein großer Unterschied und hat dazu geführt, dass meine Kollegen SPSS anstelle von R verwenden wollten. Ich habe kein Problem damit, aber ein so großer Unterschied lässt mich glauben, dass wir etwas falsch interpretieren, was ein Problem ist.

SPSS trübt das Wasser noch mehr und meldet verschiedene Arten der erklärten Varianz, wenn wir das ungewichtete Faktorisieren der kleinsten Quadrate ausführen. Der Anteil der erklärten Varianz nach Anfangseigenwerten beträgt 40%, während der Anteil der erklärten Varianz aus den Extraktionssummen der quadratischen Lasten (SSL) 33% beträgt. Dies lässt mich denken, dass die anfänglichen Eigenwerte nicht die richtige Zahl sind (ich vermute, dass dies die Varianz ist, die vor der Rotation erklärt wurde, obwohl ich nicht weiß, ob sie so groß ist). Noch verwirrender ist, dass SPSS auch Rotations-SSL anzeigt, aber den Prozentsatz der erklärten Varianz nicht berechnet (SPSS gibt an, dass ich aufgrund von Korrelationsfaktoren keine SSLs hinzufügen kann, um die Gesamtvarianz zu ermitteln, was mit den von mir beobachteten Berechnungen sinnvoll ist). Die gemeldeten SSLs von R stimmen nicht mit diesen überein, und R gibt an, dass sie 31% der Gesamtvarianz beschreiben. Die SSLs von R stimmen am besten mit den Rotations-SSLs überein. Die Eigenwerte von R aus der ursprünglichen Korrelationsmatrix stimmen mit den Anfangseigenwerten von SPSS überein.

Beachten Sie auch, dass ich mit verschiedenen Methoden herumgespielt habe und dass ULS und PAF von SPSS am ehesten mit der PA-Methode von R übereinstimmen.

Meine spezifischen Fragen:

  1. Welchen Unterschied sollte ich zwischen R und SPSS bei Implementierungen der Faktoranalyse erwarten?
  2. Welche der Quadratsummen von SPSS soll ich interpretieren, anfängliche Eigenwerte, Extraktion oder Rotation?
  3. Gibt es noch andere Probleme, die ich möglicherweise übersehen habe?

Meine Anrufe an SPSS und R lauten wie folgt:

SPSS:

FACTOR
/VARIABLES <variables>
/MISSING PAIRWISE
/ANALYSIS <variables>
/PRINT INITIAL KMO AIC EXTRACTION ROTATION
/FORMAT BLANK(.35)
/CRITERIA FACTORS(6) ITERATE(25)
/EXTRACTION ULS
/CRITERIA ITERATE(25)
/ROTATION PROMAX(4).

R:

library(psych)
fa.results <- fa(data, nfactors=6, rotate="promax",
scores=TRUE, fm="pa", oblique.scores=FALSE, max.iter=25)
Oliver
quelle
Ich kann es nicht überprüfen, da ich kein R verwende, aber ich vermute, dass die Dokumentation fehlerhaft ist. fm = "pa" sollte / EXTRACTION PAF entsprechen. Versuchen Sie auch, die Lösungen vor jeder Rotation zu vergleichen, da leichte Unterschiede in den Rotationsalgen mit den Unterschieden in der Extraktionsmethode verwechselt werden können.
TTNPHNS
1
Vielen Dank für Ihren Blick! Ich werde versuchen, die Lösungen vor der Rotation zu vergleichen. Ich sollte erwähnen, dass ich sowohl / EXTRACTION ULS als auch / EXTRACTION PAF ausprobiert habe und es nur sehr geringe Unterschiede in den Ladevorgängen gibt (aber keines kommt der R "pa" -Methode wirklich nahe). Der Grund, warum ich / EXTRACTION ULS oben zeige, ist, dass dies der Befehl ist, der die verschiedenen SSLs angibt.
Oliver
1
Die Hauptachsenmethode und die Methode der ungewichteten kleinsten Quadrate können manchmal ähnliche Ergebnisse liefern, sie unterscheiden sich jedoch algorithmisch grundlegend. Ich glaube, dass Äquivalenzen zwischen R und SPSS wie folgt sind: "pa" = PAF, "minres" = ULS, "gls" = GLS, "ml" = ML
ttnphns
1
Überprüfen Sie auch die Behandlung fehlender Werte. In Ihrem SPSS-Code löschen Sie sie paarweise. In dir R-Code - ...?
TTNPHNS
Ich habe die Vorrotations-SSLs von R verglichen und sie stimmen mit den Extraktions-SSLs in der ULS-Lösung von SPSS überein (leider hat mir die PAF-Lösung in SPSS diese Werte nicht gegeben). Ich denke, dass die Promax-Rotation der Schuldige zu sein scheint. Nun, entweder so oder so, wie SPSS Rotation-SSLs druckt. Vielleicht nimmt R eine Schätzung der Gesamtvarianz vor, die durch die endgültigen SSLs erklärt wird, während SPSS mir sagt, dass eine solche Schätzung nicht angemessen ist.
Oliver

Antworten:

21

Zuallererst empfehle ich, die Lösung vor der Rotation zu betrachten. Die in SPSS implementierte Faktoranalyse ist ein komplexes Verfahren mit mehreren Schritten. Ein Vergleich der Ergebnisse der einzelnen Schritte soll Ihnen dabei helfen, das Problem genau zu bestimmen.

Insbesondere können Sie ausführen

FACTOR
/VARIABLES <variables>
/MISSING PAIRWISE
/ANALYSIS <variables>
/PRINT CORRELATION
/CRITERIA FACTORS(6) ITERATE(25)
/EXTRACTION ULS
/CRITERIA ITERATE(25)
/ROTATION NOROTATE.

um die Korrelationsmatrix zu sehen, verwendet SPSS, um die Faktorenanalyse durchzuführen. Bereiten Sie dann in R die Korrelationsmatrix selbst vor, indem Sie ausführen

r <- cor(data)

Jegliche Diskrepanz in der Art und Weise, wie fehlende Werte behandelt werden, sollte zu diesem Zeitpunkt offensichtlich sein. Nachdem Sie überprüft haben, dass die Korrelationsmatrix identisch ist, können Sie sie an die Funktion fa weiterleiten und Ihre Analyse erneut ausführen:

fa.results <- fa(r, nfactors=6, rotate="promax",
scores=TRUE, fm="pa", oblique.scores=FALSE, max.iter=25)

Wenn Sie in SPSS und R immer noch unterschiedliche Ergebnisse erhalten, fehlt das Problem nicht wertebezogen.

Als nächstes können Sie die Ergebnisse der Faktoranalyse / Extraktionsmethode selbst vergleichen.

FACTOR
/VARIABLES <variables>
/MISSING PAIRWISE
/ANALYSIS <variables>
/PRINT EXTRACTION
/FORMAT BLANK(.35)
/CRITERIA FACTORS(6) ITERATE(25)
/EXTRACTION ULS
/CRITERIA ITERATE(25)
/ROTATION NOROTATE.

und

fa.results <- fa(r, nfactors=6, rotate="none", 
scores=TRUE, fm="pa", oblique.scores=FALSE, max.iter=25)

Vergleichen Sie erneut die Faktormatrizen / Gemeinsamkeiten / Summe der Quadratladungen. Hier können Sie einige winzige Unterschiede erwarten, aber sicherlich nicht in der Größenordnung, die Sie beschreiben. All dies würde Ihnen eine klarere Vorstellung davon geben, was los ist.

Um nun Ihre drei Fragen direkt zu beantworten:

  1. Nach meiner Erfahrung ist es möglich, sehr ähnliche Ergebnisse zu erzielen, manchmal nachdem ich einige Zeit damit verbracht habe, die verschiedenen Terminologien herauszufinden und mit den Parametern zu experimentieren. Ich hatte mehrere Male die Gelegenheit, sowohl in SPSS als auch in R Faktoranalysen durchzuführen (normalerweise in R und anschließend die Analyse in SPSS zu reproduzieren, um sie mit Kollegen zu teilen), und habe immer im Wesentlichen die gleichen Ergebnisse erzielt. Ich würde daher im Allgemeinen keine großen Unterschiede erwarten, was mich zu dem Verdacht veranlasst, dass das Problem spezifisch für Ihren Datensatz ist. Ich habe jedoch schnell die Befehle ausprobiert, die Sie für einen herumliegenden Datensatz bereitgestellt haben (es ist eine Likert-Skala), und die Unterschiede waren tatsächlich größer als ich es gewohnt bin, aber nicht so groß wie die von Ihnen beschriebenen. (Ich kann meine Antwort aktualisieren, wenn ich mehr Zeit habe, damit zu spielen.)
  2. Meistens interpretieren die Menschen die Summe der quadratischen Belastungen nach der Rotation als den „Anteil der Varianz, der durch jeden Faktor erklärt wird“, aber dies ist nach einer schrägen Rotation nicht sinnvoll (weshalb es in psych- und SPSS-Berichten überhaupt nicht berichtet wird) die Eigenwerte in diesem Fall - es gibt sogar eine kleine Fußnote dazu in der Ausgabe). Die Anfangseigenwerte werden vor einer Faktorextraktion berechnet. Offensichtlich sagen sie nichts über den durch Ihre Faktoren erklärten Varianzanteil aus und sind auch nicht wirklich die „Summe der quadratischen Ladungen“ (sie werden oft verwendet, um über die Anzahl der beizubehaltenden Faktoren zu entscheiden). SPSS „Extraction Sums von Squared Loadings“ sollte jedoch die „SS Belastungen“ , bereitgestellt durch übereinstimmen psych .
  3. Dies ist zu diesem Zeitpunkt eine wilde Vermutung, aber haben Sie überprüft, ob das Faktor-Extraktionsverfahren in 25 Iterationen konvergiert hat? Wenn die Rotation nicht konvergiert, gibt SPSS keine Muster- / Strukturmatrix aus und Sie können sie nicht übersehen. Wenn die Extraktion jedoch nicht konvergiert, wird die letzte Faktormatrix angezeigt und SPSS setzt die Rotation selig fort. Sie sehen jedoch eine Notiz „a. Es wurde versucht, 6 Faktoren zu extrahieren. Mehr als 25 Iterationen erforderlich. (Konvergenz = XXX). Die Extraktion wurde abgebrochen. “Wenn der Konvergenzwert klein ist (z. B. .005, wobei die Standardstoppbedingung„ kleiner als .0001 “ist), werden die von Ihnen gemeldeten Abweichungen immer noch nicht berücksichtigt über Ihre Daten.
Gala
quelle
2
Sehr nette Antwort. Ich wollte vorschlagen (wenn möglich), dass der Autor eine Stichproben-Korrelationsmatrix bereitstellt, um zu sehen, wo das Problem liegt. Sollte nicht zu schwierig sein, es zu fummeln / mehrdeutig genug zu machen, um die Daten zu teilen. Auch wenn man das Problem nicht reproduzieren kann, wenn man direkt mit derselben Korrelationsmatrix beginnt, die das Problem teilweise identifiziert.
Andy W
Danke, das ist eine fantastische Antwort. Ich werde diese Schritte ausführen, sobald ich wieder auf meinem SPSS-Computer bin. In Reaktion auf # 3 konvergiert die Lösung in 9 Iterationen, aber ich werde dies bei zukünftigen Analysen berücksichtigen. Es war sehr hilfreich zu wissen, dass die Unterschiede normalerweise nicht so groß sind, wie ich es beschrieben habe (ich arbeite auch mit Likert-Skalendaten, 5-Punkt).
Oliver
Falls sich jemand anders wundert, ist die faFunktion in R aus dem psychPaket. Die factanalFunktion aus dem Basispaket sollte ähnlich funktionieren, ist aber psychfür andere Zwecke durchaus empfehlenswert. In der Tat, da diese Likert Daten vorhanden ist, wäre es klug, das verwenden psychPaket fa.polystatt: siehe die Hilfe - Dokumentation .
Nick Stauner
6

Kürzlich habe ich festgestellt, dass die meisten Diskrepanzen bei der Faktoranalyse zwischen SPSS und R (mit Psych-Paket) behoben werden, wenn Daten in jedem Programm fehlend aufgelistet behandelt werden, die Korrelationsmatrix in jedem Programm genau gleich ist und keine schräge Rotation verwendet wird.

Eine verbleibende Diskrepanz besteht in der Reihe von Werten, die im Geröllplot angezeigt werden und Eigenwerte nach der Extraktion angeben. In Rs "Geröll (cor (mydata))" stimmen diese "Faktoren" nicht mit denen überein, die in der Tabelle "Variance Explained" von SPSS unter "Extraction Sums of Squared Loadings" aufgeführt sind. Beachten Sie, dass die "Komponenten" des R-Scree-Diagramms mit dem SPSS-Scree-Diagramm übereinstimmen, das auch mit den "Anfangseigenwerten" der Variance Explained-Tabelle übereinstimmt.

Ich habe auch herausgefunden, dass die "Proportion Var", die durch jeden Faktor erklärt wird, in R manchmal als (die Proportion für einen gegebenen Faktor) / (die Menge, die durch alle Faktoren erklärt wird) angegeben wird, während es zu anderen Zeiten (die Proportion) ist für einen bestimmten Faktor) (die Anzahl der Elemente in der Analyse). Wenn Sie also das erstere erhalten, ist es, obwohl es keine Übereinstimmung ist, zumindest proportional zu dem, was SPSS unter "Extraktionssummen der quadratischen Lasten ...% der Varianz" meldet, und davon ableitbar.

Das Einführen der Oblimin-Rotation in jedes Programm führt jedoch zu beträchtlichen Abweichungen beim Laden von Gegenständen oder zu Abweichungen der Faktoren, die ich nicht lösen konnte.

rolando2
quelle
1

Die Standardrotationsmethode in R ist oblimin, daher wird dies wahrscheinlich den Unterschied verursachen. Als Testlauf ein PAF / Oblimin in SPSS und R und Sie werden fast identische Ergebnisse finden.

Stefan Dombrowski
quelle
0

Ich weiß nicht, was die Unterschiede in den Musterladungen verursacht, aber ich gehe davon aus, dass der Unterschied in% der erklärten Varianz folgende Gründe hat: - Interpretieren Sie vielleicht den ersten Teil (von 2 oder 3) der erklärten Varianztabelle von SPSS, der tatsächlich anzeigt Ergebnisse der Hauptkomponentenanalyse. Der zweite Teil zeigt die Ergebnisse für die Analyse der nicht gedrehten Faktoren und die dritten Ergebnisse nach der Drehung (falls verwendet). - die Tatsache, dass die Funktion fa (oder genauer gesagt ihre Druckmethode) SSL für schräge Faktoren falsch berechnet. Um den Prozentsatz der Gesamtvarianz zu erhalten, der durch den Faktor erklärt wird, müssen Sie die Summe der quadratischen Strukturbelastungen durch den Faktor berechnen und diese durch die Anzahl der Variablen dividieren. Sie können diese jedoch nicht zusammenfassen (im Fall von Schrägrotationen), um den durch alle Faktoren erklärten Prozentsatz der Varianz zu erhalten. Um dies zu bekommen,

Aleš Žiberna
quelle
Willkommen auf der Site @AlesZiberna. Wir versuchen, ein permanentes Repository mit statistischen Informationen in Form von Fragen und Antworten aufzubauen. Eine Sache, über die wir uns Sorgen machen, ist Linkrot. Können Sie unter dem Link einen Überblick über die Informationen geben, falls sie nicht mehr funktionieren und die Leser entscheiden können, ob sie sie weiterverfolgen möchten?
gung - Wiedereinsetzung von Monica
0

Diese Antwort ist additiv zu den obigen. Wie von Gala in seiner Antwort vorgeschlagen, sollte man vor der Rotation zunächst feststellen, ob die von R (z. B. fa in psych) und SPSS bereitgestellten Lösungen unterschiedlich sind. Wenn sie identisch sind, überprüfen Sie die Rotationseinstellungen in jedem Programm. (Für SPSS finden Sie alle Einstellungen im Referenzhandbucheintrag für FACTOR).

Eine wichtige Einstellung, nach der gesucht werden muss, ist die Kaiser-Normalisierung . Standardmäßig führt SPSS die Kaiser-Normalisierung während der Drehung durch, während einige R-Funktionen wie 'fa' dies nicht tun. Sie können diese Einstellung in SPSS steuern, indem Sie / CRITERIA = NOKAISER / KAISER angeben, um zu überprüfen, ob Unstimmigkeiten zwischen den Ergebnissen für jedes Programm behoben werden.

AlexR
quelle