Willkommen bei Stats by Randolph. Hier geht es zur Hauptseite mit weiteren Informationen und Inhalten.

Autor:innen dieser Seite: An den Inhalten dieser Seite haben mitgearbeitet: Valentin Koob und Markus Janczyk. Der Inhalt dieser Seite wird in der Lehre in den Studiengängen Psychologie von der AG Psychologische Forschungsmethoden und Kognitive Psychologie an der Universität Bremen verwendet, steht aber allen Interessierten zur Verfügung. Rückmeldungen/Fehler/Vorschläge können gesendet werden an .

Versionshistory:

  • v1.0: erste online-gestellte Version (6.6.2024)

13 Hauptkomponentenanalyse und (explorative) Faktorenanalyse

13.1 Grundlagen

In diesem Teil führen wir weitergehende multivariate Verfahren ein, die auf den Grundlagen aus den Teilen 10-11 aufbauen. Dies sind die sog. Hauptkomponentenanalyse und die (explorative) Faktorenanalyse. Insbesondere das letzte Verfahren ist in der Psychologie (z.B. in der Diagnostik) stark verbreitet und dient dazu “psychologische Konstrukte” zu untersuchen.

# Pakete die in diesem Teil benutzt werden:
library(psych)
library(lavaan)

13.1.1 Ziele und Verwendung von Hauptkomponenten- und Faktorenanalyse

Grundlegend werden die Hauptkomponentenanalyse (engl. Principal Components Analysis; im Folgenden: PCA) und die Faktorenanalyse (im Folgenden: FA) als “datenreduzierende Verfahren” bezeichnet. Dies rührt daher, dass beide genutzt werden können, eine Vielzahl beobachteter Variablen durch eine kleinere Anzahl neuer Variablen zu beschreiben. Im Zuge der PCA werden diese neuen Variablen Hauptkomponenten genannt; bei einer FA spricht man dann von Faktoren. Ihre Schätzung bezeichnet man manchmal als “Extraktion”, d.h. wir extrahieren Hauptkomponenten bzw. Faktoren. Insofern kann das Hauptziel der FA auch charakterisiert werden als die “Ableitung hypothetischer Größen aus einer Menge beobachteter Variablen” (Überla, 1971, S. 3).

Wichtig ist hierbei allerdings zu betonen, dass–auch wenn beide Verfahren sich in vielen Bereichen ähneln und teilweise auf gleiche Ansätze zurückgreifen–es wichtige Unterschiede zwischen PCA und FA gibt. Dies trifft v.a. für die Interpretation der extrahierten Variablen zu. Wir werden aber dennoch mit den grundlegenden Gemeinsamkeiten und Schritten der Durchführung einer PCA bzw. einer FA beginnen, bevor wir dann im Anschluss beide Verfahren separat betrachten.

Beiden Verfahren gemeinsam ist, dass sie versuchen einen Satz beobachtbarer Variablen und ihrer Zusammenhänge durch einen neuen Satz an Variablen zu beschreiben. Ausgangspunkt dazu sind die bivariaten Kovarianzen bzw. Korrelationen der beobachtbaren Variablen. Dabei sind beide Verfahren grundsätzlich immer sowohl auf Kovarianzen als auch ihre standardisierten Gegenpartner, den Korrelationen, anwendbar. Häufig werden allerdings PCA und FA auf Korrelationen angewendet, da diese, und somit die extrahierten Variablen, nicht vom Skalenniveau der beobachteten Variablen abhängen. Als Beispiel betrachten wir folgendes Szenario: In einem Ski-Geschäft werden Kunden nach der Wichtigkeit von vier Aspekten für die Wahl ihres bevorzugten Skigebietes gefragt: (1) Kosten eines Skipasses (KOSTEN), (2) Geschwindigkeit der Lifte (LIFT), (3) Tiefe des Schnees (TIEFE) und (4) Feuchte des Schnees (FEUCHTE). Aus Statistik I sowie aus Teil 11 von Statistik II kennen wir bereits Korrelations- bzw. Kovarianzmatrizen, also Zusammenfassungen aller bivariaten Korrelationen bzw. Kovarianzen. In der fiktiven Beispieluntersuchung hat sich folgende Korrelationsmatrix ergeben:

In diesem einfachen Beispiel sind zwei Muster zu erkennen:

  • Die Variablen KOSTEN und LIFT korrelieren ihrerseits sehr hoch, sind aber mit den zwei anderen Variablen TIEFE und FEUCHTE eher wenig korreliert.
  • Die Variablen TIEFE und FEUCHTE korrelieren ihrerseits auch sehr hoch, sind aber mit den zwei anderen Variablen KOSTEN und LIFT eher wenig korreliert.

Intuitiv könnte man hier vermuten, dass sich die Daten auch ohne großen Verlust an Informationen sparsamer durch zwei neue Variablen beschreiben lassen:

  • Variable 1: Infrastruktur zur Beschreibung von KOSTEN und LIFT
  • Variable 2: Schneebedingung zur Beschreibung von TIEFE und FEUCHTE

Eine solche “qualitative Analyse” wird bei einer größeren Anzahl der beobachteten Variablen zunehmend schwerer und es ist nicht möglich die Cluster miteinander korrelierter Variablen “per visueller Inspektion” zu ermitteln. Dafür kann dann aber eine FA oder eine PCA herangezogen werden, deren Ziel es ist, einem größeren Satz an Variablen eine neue Ordnung durch eine kleinere Anzahl extrahierter Variablen zu geben. Die drei wichtigsten Verwendungen von FA oder PCA sind:

  1. Verstehen der Struktur von Datensätzen (bspw. welche Variablen sich ähnlich sind oder zur Untersuchung des Konstrukts “Intelligenz”)
  2. Entwicklung eines geeigneten Fragebogens zur Erfassung mehrerer psychologischer Dimensionen
  3. Reduktion der Informationsmenge zur Weiterverarbeitung mit anderen Verfahren (z.B. um Problemen der Multikollinearität im Rahmen einer multiplen Regression vorzubeugen, indem korrelierte Variablen zu einer neuen Variable zusammengefasst werden)

13.1.2 Unterschiede zwischen PCA und FA

Nun kommen wir zu den inhaltlichen Unterschieden, welche später auch nochmal klarer werden, wenn wir uns die zugrunde liegende Mathematik ansehen.

Eine Hauptkomponentenanlyse wird primär zur “reinen” Datentransformation bzw. Datenreduktion genutzt. Ziel ist es, einen Satz beobachtbarer Variablen in einen Satz neuer Variablen zu überführen, allerdings derart, dass die neuen Variablen paarweise unkorreliert sind und die Varianzen pro Variable der Reihe nach abnehmen. Dabei ist sie meist “nur” Mittel zum Zweck für weitere Verfahren (bspw. wie erwähnt zum Umgang mit Multikollinearität oder für ein weiteres “Clustern” der Daten)

Die (explorative) Faktorenanalyse hat eine historisch gesehen kontroverse Entwicklung hinter sich und wurde Anfang des 20. Jahrhunderts u.a. von Karl Pearson und Charles Spearman beschrieben und insbesondere zur Beschreibung und Erforschung des Konstrukts Intelligenz eingesetzt. Durch ihren breiteren Einzug in die Psychologie und Sozialwissenschaften sowie der Weiterentwicklung ihrer Methoden und Anwendung durch computergestützte Software wurden viele der damaligen Kontroversen aufgearbeitet. Die grundsätzliche Annahme der FA ist, dass Korrelationen von zwei (oder mehr) messbaren, beobachtbaren Variablen durch Drittvariablen erzeugt werden, die nicht direkt messbar sind, aber auf deren Existenz und Beschaffenheit geschlossen werden kann. Wäre bspw. “Sprachfähigkeit” ein solches Konstrukt, dann wäre naheliegend, dass Personen mit hoher Sprachfähigkeit (d.h. einem hohen Wert auf diesem Konstrukt) auch eher hohe Werte in einem Lese- und einem Grammatiktest erzielen, als solche mit eher geringer Sprachfähigkeit. “Sprachfähigkeit” wäre dann das Konstrukt, der latente Faktor, der für die Ausprägungen auf den beobachtbaren Variablen Lese- und Grammatiktest verantwortlich ist.

Natürlich können Korrelationsmuster auch komplizierter sein und es können mehrere Faktoren nötig sein, um dieses Muster zu strukturieren. Dies ist in der folgenden Abbildung dargestellt, derzufolge die Variablen 1 und 5 korrelieren und im Faktor A zusammengefasst werden könnten, während der Faktor B für die Korrelationen der Variablen 2, 3, 4 und 6 veranwortlich wäre.

Das Ziel ist also die Beschreibung der Kovarianzstruktur bzw. Korrelationsstruktur beobachtbarer Variablen durch latente, nicht per se beobachtbare Variablen, eben den sog. Faktoren. In der Psychologie nehmen wir diese Faktoren häufig als Indikator für “Konstrukte”. Ein Konstrukt ist also eine nicht beobachtbare Idee, welche verwandte beobachtbare Phänomene unter einen gemeinsamen Namen stellt. Wir wissen beispielsweise, dass diverse kognitive Leistungstests miteinander korrelieren und schließen auf Basis dessen auf die Existenz des Konstrukts/Faktors Intelligenz. Ein Konstrukt dient also als “Erklärung” für den beobachtbaren Zusammenhang von Variablen.

13.1.3 Datenbeispiel

Wir werden im Folgenden einen (selbst generierten) Datensatz zur Illustration und Durchführung der PCA und FA nutzen. Der Datensatz enthält die erreichten Punkte von 300 Schüler:innen in einem standardisierten Test zu Mathematik- und Sprachfähigkeiten. Insgesamt besteht der Test aus 6 Untertests, die spezielle Bereiche erfassen sollen: Algebra, Geometrie, Analysis, Buchstabieren, Lesen und Schreiben.

daten <- read.table("./Daten/daten_PCA_FA.dat", 
                    header = TRUE)
head(daten)

Da uns die erste Spalte VPim Folgenden nicht interessiert, entfernen wir diese und sparen uns so später etwas Schreibarbeit:

daten <- subset(daten,
                select = c(-1))
# oder auch: daten <- daten[, -1]

13.1.4 Grundlegende Voraussetzungen und Berechnung/Evaluation der Korrelationsmatrix

In der Regel (aber nicht zwingend) wird bei einer PCA oder einer FA von den verwendeten Daten Normalverteiltheit erwartet. Dies liegt daran, dass die (asymptotischen) Verteilungen von Statistiken im Zuge der PCA und FA auf dieser Annahme aufbauen. Je nach tatsächlich durchgeführtem Verfahren und Ziel der Analyse, muss diese Annahme aber nicht zwangsläufig gegeben sein (bspw. wenn eine PCA nur deskriptiv zur Datenreduktion genutzt wird). Natürlich sollten als Ausgangsvariablen dann auch solche verwendet werden, die (1) inhaltlich zum Untersuchungsgegenstand passen und die (2) lineare Zusammenhänge zumindest zu einem Teil der anderen Variablen aufweisen.

Zudem sollte der Zusammenhang zwischen den Variablen, in standardisierter Form ausgedrückt durch die Korrelationsmatrix, für eine PCA bzw. FA geeignet sein. Problematisch sind vor allem zwei Arten von Korrelationen:

  1. Bei vielen zu kleinen Korrelationen (manchmal wird gesagt: \(|r|\leq .30\)) läuft man Gefahr, keine klaren Gruppen korrelierender Variablen zu finden bzw. die Interpretation der finalen Lösung zu erschweren. Daher findet sich manchmal die Empfehlung, Variablen, die mit vielen anderen Variablen nur kleine Korrelationen aufweisen, direkt von einer Faktorenanalyse auszuschließen. Der Bartlett-Test testet die Nullhypothese, dass alle Korrelationen eigentlich Null sind, d.h., dass die Korrelationsmatrix \(\mathbf{R}\) eigentlich die Einheitsmatrix \(\mathbf{I}\) ist (dazu müssen die Variablen normalverteilt sein).
  2. Bei (vielen) hohen Korrelationen tritt das Problem der Multikollinearität auf. Im extremen Fall perfekter Korrelationen spricht man von Singularitäten. Ähnlich wie bei einer multiplen Regression ist das Problem, dass im Falle von Multikollinearität der einzigartige Beitrag der Variablen zu den Faktoren nicht bestimmt werden kann. Hier gibt es (unseres Wissens nach) keine klaren Empfehlungen, ab welcher Größe der Korrelationen Probleme auftreten; als eine einfache Daumenregel wurde vorgeschlagen, dass die Determinante von \(\mathbf{R}\) größer als \(0.00001\) sein sollte (vgl. Field et al., 2012).

Ein weiterer wichtiger Aspekt ist die Stichprobengröße. Wie wir aus Statistik I wissen, fluktuieren Korrelationskoeffizienten sehr stark mit der Stichprobengröße. Verlässliche Korrelationsmuster sind aber essentiell für eine PCA bzw. FA. Die Empfehlungen hierzu reichen hierbei von “10-15 Versuchspersonen pro gemessener Variable” bis zu “ab 300 Personen ist man eigentlich recht sicher”. Spezifischere Empfehlungen in Abhängigkeit von Anzahl der (vermuteten) Faktoren und den sog. Kommunalitäten (die wir später einführen werden) gibt es z.B. bei Field et al. (2012).

Eine Möglichkeit abzuschätzen, ob die Stichprobe und das Korrelationsmuster geeignet für eine PCA bzw. FA sind, stellen das Kaiser-Meyer-Olkin-(KMO)-Kriterium bzw. das Measure of Sampling Adequacy (MSA) dar. Die Maße werden sowohl für einzelne Variablen als auch insgesamt berechnet und variieren zwischen 0 und 1. Generell gilt, dass keiner der Werte \(<0.5\) sein sollte; je größer die Werte sind, desto besser ist die Ausgangslage für die PCA und FA. Hierzu gibt es von manchen Autor:innen verbale Labels wie \(0.5-0.7\) sei “mittelmäßig”, \(0.7-0.8\) sei “gut”, \(0.8-0.9\) sei “sehr gut” und höhere Werte seien “super”.

Mit R können wir die wünschenswerten Voraussetzungen leicht prüfen. Dazu berechnen wir zunächst die Korrelationsmatrix aus den gegebenen Daten:

# Korrelationsmatrix aller Variablen (Spalte VP wurde bereits gelöscht)
R <- cor(daten) 
round(R, 2)
##               Algebra Geometrie Analysis Buchstabieren Lesen Schreiben
## Algebra          1.00      0.70     0.73          0.04  0.02     -0.01
## Geometrie        0.70      1.00     0.72          0.00 -0.06     -0.05
## Analysis         0.73      0.72     1.00         -0.01  0.00     -0.07
## Buchstabieren    0.04      0.00    -0.01          1.00  0.72      0.74
## Lesen            0.02     -0.06     0.00          0.72  1.00      0.71
## Schreiben       -0.01     -0.05    -0.07          0.74  0.71      1.00

Diese Korrelationsmatrix ist noch klein genug für eine “visuelle Inspektion”. Wir erkennen, dass die Variablen Algebra, Geometrie und Analysis untereinander korrelieren, aber kaum mit den Variablen Buchstabieren, Lesen und Schreiben korrelieren. Die Variablen Buchstabieren, Lesen und Schreiben korrelieren auch wieder untereinander. Man erkennt also schon eine Art Struktur bzw. Gruppen von Variablen, die zusammenhängen. Wir können auch sehr einfach die Zusammenhänge gemeinsam visualisieren und uns einen Überblick verschaffen. Dies geht z.B. mit der Funktion pairs.panels() aus dem Paket psych:

pairs.panels(daten, 
             lm = TRUE) # lm = TRUE: Regressionsgeraden einzeichnen

Nun führen wir den Bartlett-Test durch und testen, ob sich \(\mathbf{R}\) von einer Einheitsmatrix unterscheidet (\(H_0: \mathbf{R} = \mathbf{I}\)), also generell Korrelationen enthält, die von Null verschieden sind:

cortest.bartlett(R,
                 n = 300)  # Größe der Stichprobe, auf der R basiert
## $chisq
## [1] 992.2292
## 
## $p.value
## [1] 6.23776e-202
## 
## $df
## [1] 15

Hier sehen wir einen \(\chi^2\)-Wert, die Freiheitsgrade des Tests und einen \(p\)-Wert. Da der \(p\)-Wert kleiner als \(\alpha=0.05\) ist, ist der Bartlett-Test signifikant ausgefallen und wir gehen davon aus, dass \(\mathbf{R}\) nicht einer Einheitsmatrix entspricht. Als nächstes berechnen wir das KMO-Kriterium bzw. das MSA:

KMO(daten) 
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = daten)
## Overall MSA =  0.74
## MSA for each item = 
##       Algebra     Geometrie      Analysis Buchstabieren         Lesen 
##          0.76          0.74          0.71          0.74          0.74 
##     Schreiben 
##          0.73

Die Ausgabe enthält das MSA für den gesamten Datensatz (Overall MSA) sowie für die einzelnen Variablen (MSA for each item). Die Werte liegen zwischen 0.7 und 0.8 und zeigen an, dass die Korrelationsmatrix basierend auf \(n=300\) Beobachtungen gut geeignet für eine FA bzw. PCA ist. Zum Schluss betrachten wir noch die Determinante der Korrelationsmatrix und stellen fest, dass diese ausreichend groß ist, um gegen Multikollinearität zu sprechen:

det(R) # > 0.00001 
## [1] 0.03507596

Im Folgenden gehen wir nun getrennt zunächst auf die PCA und im Anschluss auf die FA ein, wobei wir auf die hier gerade eingeführten Daten jeweils zurückkommen werden, wenn es um die praktische Durchführung geht.

13.2 Hauptkomponentenanalyse

In Statistik II können wir die zugrunde liegende Mathematik der PCA nicht vollständig behandeln, da dies einen größeren Ausflug in die lineare Algebra bedeuten würden. Dennoch ist es illustrativ, einige fundamentale Gleichungen zu erklären, um später leichter das Vorgehen sowie die Ergebnisse der entsprechenden R-Funktionen besser verstehen zu können.

13.2.1 Idee und geometrische Interpretation der Hauptkomponentenanalyse

In diesem Abschnitt beschreiben wir zunächst geometrisch, was eine PCA bewirkt (siehe zu den folgenden Ausführungen auch Wickens, 2014). Allgemein variieren \(p\)-viele linear unabhängige Variablen in einem \(p\)-dimensionalen Raum, den wir \(\mathcal{V}_X\) nennen. Insofern diese aber nicht unkorreliert sind, sind die Ausrichtungen der entsprechenden zentrierten Vektoren mehr in manche als in andere Richtungen konzentriert. Auch in unserem Datenbeispiel ist es so, dass wegen des bestehenden Korrelationsmusters die Variabilität auf weniger Dimensionen (eher 2 statt 6 im Beispiel) konzentriert ist.

Die PCA nutzt bestehende Korrelationen, um die Variablen durch neue Variablen zu beschreiben, die Hauptkomponenten genannt werden. Diese Hauptkomponenten sind dabei Linearkombinationen der Ausgangsvariablen, erfüllen aber mehrere Eigenschaften. Unter anderem sind die Hauptkomponenten unkorreliert und so gewählt, dass die Gesamtvariabilität sich in möglichst wenige Dimensionen erstreckt.

In der folgenden Abbildung sind die zentrierten Vektoren \(\bf x_1\) und \(\bf x_2\) (positiv) korreliert, was daraus deutlich wird, dass der Winkel zwischen ihnen kleiner als 90 Grad ist. Die erste Hauptkomponente \(\bf y_1\) wird dann so gebildet, dass sie in Richtung beider Vektoren liegt und damit die Hauptdimension der Variabilität bereits abdeckt. Die zweite Hauptkomponente \(\bf y_2\) liegt dann orthogonal zu \(\bf y_1\) und erfasst deutlich weniger Variabilität (sie ist entsprechend deutlich kürzer). Beide Hauptkomponenten können aber als Linearkombinationen aus \(\bf x_1\) und \(\bf x_2\) gebildet werden.

Wir beschreiben nun einige Grundlagen dessen, wie diese Hauptkomponenten mathematisch bestimmt werden.

13.2.2 Grundlagen auf Populationsebene

Beginnen wir mit dem zugrunde liegenden statistischen Modell. Im allgemeinen seien \(p\)-viele Variablen gegeben (bspw. \(p = 6\) beim oben eingeführten Beispiel). Diese \(p\) Variablen sind auf einer gemeinsamen Population \(\Omega\) definiert, sodass wir sie als Zufallsvektor \(\bf X\) auffassen können:

\[\bf X = \begin{pmatrix} {\bf X_1} \\ \vdots \\ {\bf X_p} \end{pmatrix}\]

Der Zufallsvektor \(\bf X\) modelliert also die gemeinsame Wahrscheinlichkeitsverteilung bzw. Dichte der beobachtbaren Werte. Die konkrete Verteilung ist hierbei erstmal egal, denn die folgenden Ausführungen beziehen sich nur auf die Kovarianzmatrix \(V(\bf X) = \Sigma_X\) (bzw. Korrelationsmatrix) von \(\bf X\). Realisiert man den Zufallsvektor \(n\)-mal, dann ergibt sich eine \(n\times p\) Matrix, wobei jede (zentrierte) Spalte einem Vektor \(\bf x_j\) der oberen Anschauung entspricht.

Ziel der PCA ist es, einen neuen Satz von Variablen \(\bf Y_k\), zusammengefasst durch den Zufallsvektor \(\bf Y\) zu finden, welcher sich aus den den Variablen in \(\bf X\) (also aus den Variablen \(\bf X_j\)) als Linearkombination ergeben. Die neuen Variablen werden “Achsen” oder Hauptkomponenten genannt und ausgeschrieben ergeben sich die Variablen wie folgt: \[\begin{align*} {\bf Y_1} &= a_{11}{\bf X_1} + a_{12}{\bf X_2} + \dots + a_{1p}{\bf X_p}\\ \vdots & \phantom{a_{11}{\bf X_1} + a_{12}{\bf X_2}} \vdots \\ {\bf Y_p} &= a_{p1}{\bf X_1} + a_{p2}{\bf X_2} + \dots + a_{pp}{\bf X_p} \\ \end{align*}\] Handlicher, und im folgenden einfacher im Umgang, ist eine Schreibweise als Matrixgleichung der Form \[\begin{align*} {\bf Y} = {\bf A} \cdot {\bf X} , \end{align*}\] wobei \(\bf A\) eine (nicht stochastische) Matrix mit Koeffizienten der Dimension \(p \times p\) ist. Ausformuliert sieht diese letzte Gleichung wie folgt aus: \[\begin{align*} \begin{pmatrix} \bf Y_1 \\ \vdots \\ \bf Y_p \end{pmatrix} = \begin{pmatrix} a_{11} & \dots & a_{1p} \\ \vdots & & \vdots \\ a_{p1} & \dots & a_{pp} \end{pmatrix} \cdot \begin{pmatrix} \bf X_1 \\ \vdots \\ \bf X_p \end{pmatrix} \end{align*}\]

Wichtig ist nun, dass die Koeffizienten, die in \(\bf A\) zusammengefasst werden, nicht beliebig ausfallen, sondern so bestimmt werden, dass sie vier Anforderungen genügen (Johnson & Wichern, 2007, Wollschläger, 2017):

  1. Die Transformation von \(\bf X\) zu \(\bf Y\) mittels \(\bf A\) soll die Gesamtvarianz der ursprünglichen Variablen erhalten.

  2. Die erste Variable \(\bf Y_1\) soll die meiste Varianz repräsentieren, die zweite Variable \(\bf Y_2\) die zweitmeiste und so weiter.

  3. Alle neuen Variablen \(\bf Y_k\) sollen paarweise unkorreliert sein.

  4. Jeder Zeilenvektor der Matrix \(\bf A\), (\(a_{k1} \dots a_{kp}\)), muss die Länge Eins besitzen (ansonsten kann Anforderung 2 nicht eindeutig erfüllt werden).

Eine Lösung, die all diese Anforderungen erfüllt, stützt sich auf die Zerlegung der Kovarianzmatrix \(\Sigma_{\bf X}\) in Form von \(p\)-vielen Eigenwert-Eigenvektor-Paaren, \((\lambda_1, e_1)\), \((\lambda_2, e_2)\), …, \((\lambda_p, e_p)\). Hierbei ist \(\lambda_k\) ein Eigenwert und \(e_k\) der dazugehörige (normierte) Eigenvektor. \(\bf A\) wird nun so konstruiert, dass seine \(k\)-te Zeile dem \(k\)-ten Eigenvektor entspricht. Dies bedeutet also bspw. für die Variable \(\bf Y_k\):

\[ \begin{align} {\bf Y_k} &= a_{k1} \cdot {\bf X_1} + \dots + a_{kp} \cdot {\bf X_p} \\ &= e_{k1} \cdot {\bf X_1} + \dots + e_{kp} \cdot {\bf X_p} \\ &= {\bf e_k'} \cdot {\bf X} \end{align} \]

Ohne größeren Beweis an dieser Stelle, gilt nun folgendes: Die Kovarianzmatrix von \(\bf Y\), \(\Sigma_{\bf Y}\), ist eine Diagonalmatrix. Auf ihrer Diagonalen sind die Eigenwerte und alle Werte außerhalb der Diagonalen sind 0: \[ \Sigma_{\bf Y} = \begin{pmatrix} \lambda_1 & \dots & 0 \\ \vdots & & \vdots \\ 0 & \dots & \lambda_p \end{pmatrix} \] Aufgrund dieser Eigenschaft und der Konstruktionsweise von \(\bf A\), sind bereits drei der vier Anforderungen erfüllt. Anforderung (3) ist direkt erkennbar, denn alle Variablen in \(\bf Y\) sind paarweise unkorreliert (vgl. auch das Ergebnis aus Teil 10, dass alle Eigenvektoren einer Kovarianzmatrix orthogonal sind!). Auch Anforderung (4) ist direkt erfüllt, da die normierten Eigenvektoren der Länge 1 in \(\bf A\) zeilenweise eingehen. Ebenso ist Anforderung (2) erfüllt, wenngleich dies nicht unmittelbar erkennbar ist. Dennoch gilt stets, dass die Eigenwerte, welche auf Basis einer Kovarianzmatrix erhalten werden, der Größe nach geordnet sind. Das heißt es gilt \(\lambda_1 \geq \lambda_2 \geq \dots \geq \lambda_p\). Aufgrund dieser Eigenschaft sind auch die Varianzen der Variablen \(\bf Y_k\) absteigend sortiert.

Zuletzt gilt (hier ohne Beweis), dass die Summe der Diagonalelemente von \(\Sigma_{\bf Y}\) der Summe der Diagonalelemente von \(\Sigma_{\bf X}\) entspricht (die Spur beider Matrizen ist somit gleich). Wenn wir uns an Teil 11 erinnern, können wir festhalten, dass die Gesamtvarianz eines Zufallsvektors durch die Spur der zugehörigen Kovarianzmatrix repräsentiert wird. Wenn nun die Spur von \(\Sigma_{\bf Y}\) und \(\Sigma_{\bf X}\) gleich sind, ist auch die Gesamtvarianz von \(\bf X\) und \(\bf Y\) gleich: \[ \text{Gesamtvarianz von }{\bf X} = \sum_{j=1}^p V({\bf X_j}) = \sum_{j=1}^p V({\bf Y_j}) = \sum_{j=1}^p \lambda_j \] Auch Anforderung (1) ist somit auch gegeben.

Fassen wir zusammen: Bei der PCA wird ein Satz gegebener Variablen \(\bf X\) durch eine Lineartransformation in einen neuen Satz unkorrelierter Variablen \(\bf Y\) überführt. Die Varianz der neuen Variablen ist dabei absteigend sortiert. In der oben dargestellten, geometrischen Darstellung entsprechen die Vektoren \(\bf y\) auf Stichprobenebene den zentrierten Realisierungen von \(\bf Y\). Man erkennt hier auch, dass diese Vektoren \(\bf y\) orthogonal sind (= unkorreliert sind) und die Länge der Vektoren (= ihre Varianz) zunehmend kleiner wird.

Aufgrund der Gleichheit der Gesamtvarianz von \(\bf Y\) und \(\bf X\) können wir nun noch zwei Dinge festhalten:

  • Der Anteil an der Gesamtvarianz von \(\bf X\), welcher durch die Variable bzw. Achse \(\bf Y_k\) reflektiert wird, ist das Verhältnis von \(V({\bf Y_k})\) zur Gesamtvarianz von \(\bf X\), wobei wir diese Beziehung auch komplett in Form von Eigenwerten ausdrücken können:

\[\text{Anteil der $k$-ten Achse an der Varianz in }{\bf X} = \frac{V({\bf Y_k})}{V({\bf X_1})+ \dots + V({\bf X_p})} = \frac{\lambda_k}{\lambda_1+ \dots + \lambda_p}\]

  • Da die Eigenwerte absteigend sortiert sind, tragen die Variablen bzw. Achsen \(\bf Y_k\) zunehmend weniger zur Gesamtvarianz bei. Wenn wir also bspw. wissen, dass die ersten \(q\) vielen Variablen bzw. Achsen bereits “das meiste” der Gesamtvarianz beschreiben können, kann man die übrigen \(p-q\) Variablen bzw. Achsen auch ohne großen Informationsverlust ignorieren. Aus diesem Grund wird eine PCA auch häufig zur Datenreduktion genutzt: Man beschreibt also die ursprünglichen Variablen durch einen kleineren Satz \(q\)-vieler neuer und unkorrelierter Variablen/Achsen, die allerdings den Großteil der Ausgangsinformation dennoch in sich tragen.

Der nachfolgende Teil beschäftigt sich nun mit der Verknüpfung der eher mathematisch-gehaltenen Grundlagen auf Populationsebene und der konkreten Umsetzung auf Stichprobenebene.

13.2.3 Durchführung einer Hauptkomponentenanalyse auf Stichprobenebene

Auf Stichprobenebene erhalten wir die Koeffizientenmatrix \(\bf \hat A\), welche uns die Beziehung zwischen den ursprünglichen Variablen und den neuen Achsen angibt, indem wir die Eigenwert-Eigenvektor-Paare der empirischen Kovarianzmatrix berechnen. Hierbei ist es allerdings so, dass die einzelnen Einträge der Kovarianzmatrix von der Skalierung der Ursprungsvariablen abhängen (siehe dazu auch die Abhängigkeit der Kovarianz gegenüber Skalentransformationen aus Statistik 1, Teil 5). Es ist daher typisch, nicht die Kovarianzmatrix der Originalvariablen, sondern die Korrelationsmatrix bzw. die standardisierten Variablen zu betrachten. Je nach Datenlage und Skalierung der Ursprungsvariablen kann man also eine PCA entweder mit einer Kovarianzmatrix (unstandardisierte Daten) oder einer Korrelationsmatrix (standardisierte Daten) durchführen. Letzterer Fall ist, aufgrund der dann irrelevanten Variablenskalierung, allerdings häufiger anzutreffen.

Es gibt eine ganze Reihe von Funktionen, die uns die Umsetzung einer PCA in R ermöglichen. Wir verwenden hier die von R direkt gelieferte Funktion princomp():

princomp(x = Datensatz)

Der Funktion muss lediglich ein DataFrame übergeben werden. Im Prinzip besitzt die Funktion auch eine ganze Reihe weiterer Argumente, welche unter anderem angeben, ob eine PCA mit der Kovarianzmatrix oder mit der Korrelationsmatrix gerechnet werden soll. Es gibt auch Argumente, mit denen wir auch nur die Kovarianz- bzw. Korrelationsmatrix direkt übergeben können. Da wir in unserem Fall aber nun einen passenden Datensatz eingeführt haben, übergeben wir diesen an die Funktion und geben darüberhinaus an, dass wir die PCA auf Basis einer Korrelationsmatrix durchführen möchten:

pca1 <- princomp(x = daten, 
                 cor = TRUE)
pca1 # ausgeben
## Call:
## princomp(x = daten, cor = TRUE)
## 
## Standard deviations:
##    Comp.1    Comp.2    Comp.3    Comp.4    Comp.5    Comp.6 
## 1.5773509 1.5478210 0.5731005 0.5376848 0.5131197 0.4851527 
## 
##  6  variables and  300 observations.

Die Ausgabe beginnt (nach der Zusammenfassung des Aufrufs) mit der Tabelle der Standardabweichungen der neuen Variablen. Diese entsprechen der Wurzel der Eigenwerte der Korrelationsmatrix (siehe oben, wo wir festgehalten haben, dass \(V({\bf Y_k}) = \lambda_k\) gilt). Möchte man die Koeffizienten der PCA, also die Eigenvektoren, ausgeben, kann dafür die Funktion loadings() genutzt werden:

A <- loadings(pca1)
A
## 
## Loadings:
##               Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6
## Algebra        0.357  0.452  0.213  0.769         0.178
## Geometrie      0.387  0.424 -0.576 -0.372  0.108  0.435
## Analysis       0.388  0.434  0.348 -0.387        -0.622
## Buchstabieren -0.425  0.395 -0.184        -0.792       
## Lesen         -0.434  0.376  0.561 -0.284  0.264  0.453
## Schreiben     -0.452  0.361 -0.393  0.199  0.534 -0.432
## 
##                Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6
## SS loadings     1.000  1.000  1.000  1.000  1.000  1.000
## Proportion Var  0.167  0.167  0.167  0.167  0.167  0.167
## Cumulative Var  0.167  0.333  0.500  0.667  0.833  1.000

Für uns ist nur der erste Eintrag relevant, denn dieser fasst alle Eigenvektoren zusammen, wobei sehr kleine Werte (< .1) nicht gezeigt werden. Der zweite Eintrag ist für uns irrelevant. Er gibt die quadrierten Elemente pro Vektor an, welche in einer klassischen PCA irrelevant sind (wohl aber für eine FA, wofür die Funktion ursprünglich geschrieben wurde). Möchte man wirklich alle Vektoren direkt haben, so kann man die Variable, welche loadings() zurück gibt, von sonstigen Informationen und Formatierungen mit Hilfe von unclass() befreien:

A <- unclass(A)
A
##                   Comp.1    Comp.2     Comp.3      Comp.4      Comp.5
## Algebra        0.3571829 0.4519376  0.2131709  0.76867701  0.01144235
## Geometrie      0.3872994 0.4238622 -0.5755914 -0.37191504  0.10821571
## Analysis       0.3875058 0.4340199  0.3476250 -0.38654810 -0.06891052
## Buchstabieren -0.4247276 0.3952695 -0.1835769  0.03330293 -0.79244437
## Lesen         -0.4335976 0.3760763  0.5608338 -0.28414834  0.26421381
## Schreiben     -0.4515069 0.3606224 -0.3926507  0.19886189  0.53444621
##                    Comp.6
## Algebra        0.17814505
## Geometrie      0.43474493
## Analysis      -0.62165489
## Buchstabieren -0.02430756
## Lesen          0.45329454
## Schreiben     -0.43213377

Neben den rudimentären Informationen über Eigenwerte und Eigenvektoren (welche wir ja auch mit eigen() erhalten können) möchte man mit Hilfe einer PCA die ursprünglichen Variablen durch einen neuen Satz an Variablen beschreiben. Um die Werte für jede Person auf diesen neuen Variablen anzufordern, bspw. um dann mit den transformierten Daten weiter zu rechnen, können wir auf die sog. scores zugreifen. Diese sind konzeptuell identisch zu den Vektoren \(\bf y\) in der anfänglichen Skizze:

head(pca1$scores,
     n = 3)       # nur für die ersten 3 (von 300) Personen ausgeben... 
##       Comp.1     Comp.2     Comp.3     Comp.4     Comp.5     Comp.6
## 1  1.3454086  0.3566927 -0.3763134 -0.3649773 -0.7443141  0.7225780
## 2 -0.4205461  1.0805191 -0.2801159  1.2125948 -0.1543127 -0.2703838
## 3  1.2959086 -1.3033245  0.9791182  0.7222673 -0.6965574 -1.2832041

Diese geben an, wie die Werte einer Person auf den neuen Variablen lauten, nachdem man die Werte auf den alten (standardisierten) Daten anhand der Eigenvektoren transformiert hat. Hierzu wird intern die (standardisierte) Matrix aller ursprünglichen Werte \(\bf X\) mit der Matrix der Eigenvektoren \(\bf \hat A\) multipliziert. Wichtig ist dabei, dass zur Standardisierung die unkorrigierte Stichprobenstandardabweichung verwendet wird:

# quasi wie scale nur wird hier die Stichprobenstandardabweichung genutzt
my_stand_fun <- function(x){
  n <- length(x)
  x_zent <- x - mean(x)
  x_stand <- x_zent / (sd(x) * sqrt((n - 1)/n))
  return(x_stand)
}
stand_daten <- apply(X = daten,
                     MAR = 2,              # spaltenweise...
                     FUN = my_stand_fun)   # ...die Funktion anwenden
head(stand_daten %*% A,
     n = 3)
##       Comp.1     Comp.2     Comp.3     Comp.4     Comp.5     Comp.6
## 1  1.3454086  0.3566927 -0.3763134 -0.3649773 -0.7443141  0.7225780
## 2 -0.4205461  1.0805191 -0.2801159  1.2125948 -0.1543127 -0.2703838
## 3  1.2959086 -1.3033245  0.9791182  0.7222673 -0.6965574 -1.2832041

Anmerkung: Berechnet man eine PCA mit unstandardisierten Ursprungsvariablen bzw. auf Basis der Kovarianzmatrix, so ignorieren die berechneten “scores” das Zentroid der Ursprungsvariablen (= der Mittelwertsvektor der Scores ist \({\bf 0}\)). Gegebenenfalls muss man also das Zentroid der Ursprungsvariablen auf die scores addieren, damit die Lage der ursprünglichen und transformierten Daten gleich ist. Häufig ist die absolute Lage der Daten aber nicht von Bedeutung, sodass im Anschluss an eine PCA mit den zentrierten Variablen weiter gerechnet wird.

13.2.4 Datenreduktion im Zuge einer Hauptkomponentenanalyse

Die bisherigen Ausführungen bezogen sich darauf, dass genauso viele Hauptkomponenten extrahiert werden, wie es Ursprungsvariablen gab. Wir haben aber oben bereits gesehen, dass das Ausmaß des Varianzbeitrags pro Hauptkomponente abnimmt (zur Erinnerung: \(V({\bf Y_k}) = \lambda_k\), mit \(\lambda_1 \geq ... \geq \lambda_p\)). Man kann also durchaus einen Teil der letzteren Hauptkomponenten weglassen, ohne viel Informationen zu verlieren.

Daraus ergibt sich aber zwangsläufig die Frage: Wie viele Hauptkomponenten sind nötig, um “möglichst wenig Information zu verlieren”. Oder andersherum: Wie viele Hauptkomponenten möchte man extrahieren, um die Daten durch einen kleineren Satz an Hauptkomponenten zu beschreiben, welche aber gleichzeitig möglichst viel Varianz erhalten. Hierauf gibt es keine allgemein-gültige Antwort, es gibt aber eine Reihe von vorgeschlagenen Kriterien (die alle auf Eigenwerten basieren), die eine Entscheidung erleichtern können. Letztlich bleibt aber, dass die Entscheidung mehr oder minder subjektiv ist und auch nicht losgelöst von inhaltlichen Aspekten getroffen werden sollte.

  • Eigenwertverlauf: Oft sind die ersten Eigenwerte verhältnismäßig groß und daher tragen die zugehörigen Hauptkomponenten bereits viel Varianz in sich, während die folgenden Eigenwerte allesamt klein und wenig voneinander verschieden sind. In diesem Fall würde man nur so viele Faktoren extrahieren, wie es große Eigenwerte gibt.
  • Kaiser-Kriterium: Gemäß diesem Kriterium sollen nur diejenigen Hauptkomponenten extrahiert werden, die einen Eigenwert größer als 1 besitzen (nachdem man die Daten standardisiert hat). In der Praxis scheint dieses Kriterium aber häufig zu einer Extraktion von zu vielen Hauptkomponenten zu führen.
  • Scree-Test: Dieser Test benutzt eine Visualisierung des Eigenwertverlaufs. Legt man zwei Linien in den Verlauf, ergibt sich häufig zwischen zwei Eigenwerten ein qualitativer Knick und es werden dann soviele Hauptkomponenten extrahiert wie Eigenwerte links von diesem Knick liegen. (Der Name rührt daher, dass die beiden Linien einem Berghang ähneln und die kleinen Eigenwerte wie Geröll [“Scree”] am Boden liegen.)
  • Parallelanalyse: Hier werden die Eigenwerte einer empirischen Korrelationsmatrix mit denen einer Korrelationsmatrix verglichen, der eine zufällig gezogene Stichprobe gleicher Größe aus einer Population mit unkorrelierten Variablen zugrunde liegt. In letzterer Stichprobe sind alle beobachteten Zusammenhänge dann natürlich zufällig entstanden. Die so resultierenden Eigenwerte der (zufälligen) Korrelationsmatrix sind sich typischerweise sehr ähnlich und liegen auf einer Linie. Es werden dann diejenigen Hauptkomponenten als wichtig erachtet, deren Eigenwert über dem entsprechenden Eigenwert der Zufallsdaten liegen.

Die ersten drei Kriterien können wir durch eine Visualisierung der Eigenwerte besser betrachten In R können wir hierfür die Funktion screeplot() nutzen (oder wir nutzen die Funktion eigen() und visualiseren die Eigenwerte selbst):

screeplot(pca1, 
          type = "lines")
abline(h = 1,
       lty = 2)

Zu erkennen ist, dass es vor allem zwei große Eigenwerte gibt. Nach dem Eigenwertverlauf, würden wir also die ursprünglichen Werte nur mit Hilfe der ersten beiden Hauptkomponenten beschreiben. Zur gleichen Entscheidung kommen wir auch mit dem Kaiser Kriterium sowie dem Scree-Test. Mit Bezug auf das Kaiser-Kriterium sehen wir, dass zwei Eigenwerte größer als 1 sind und entsprechend zwei Hauptkomponenten extrahiert werden sollten. Auch erkennen wir, dass die letzten vier Eigenwerte eher klein und sehr ähnlich sind, sodass diese eher an des Berges Geröllhalde liegen und somit legt der Scree-Test die gleiche Schlussfolgerung nahe.

Schließlich können wir noch eine Parallelanalyse mit der Funktion fa.parallel() aus dem psych Paket durchführen. Diese bietet uns dann auch eine Visualisierung der Eigenwerte in Kombination mit zwei Linien als Referenz. Der Parameter fa = "pc" zeigt an, dass die principal components (also die Hauptkomponenten) dargestellt werden sollen:

fa.parallel(stand_daten, 
            fa = "pc")

## Parallel analysis suggests that the number of factors =  NA  and the number of components =  2

Zu erkennen ist, dass die ersten beiden Eigenwerte, welche die Varianz der ersten beiden Hauptkomponenten widerspiegeln, oberhalb der Referenzlinie liegen. Wir würden also auch anhand der Parallelanalyse die Daten durch 2 Hauptkomponenten beschreiben und die übrigen 4 Hauptkomponenten weglassen.

Damit verlassen wir nun den Bereich der PCA zunächst und wenden uns der FA zu.

13.3 Faktorenanalyse

Wie bereits eingangs erwähnt, ist das Ziel der FA die Beschreibung der Korrelations- bzw. Kovarianzstruktur beobachtbarer Variablen durch latente, nicht per se beobachtbare Variablen, den sog. Faktoren. In der Psychologie ist sie von zentraler Bedeutung, da sie erlaubt, abstrakte Konstrukte und ihre Beziehung(en) zueinander anhand der empirischen Korrelationsmuster zwischen den beobachtbaren Werten zu analysieren und zu testen.

13.3.1 Idee und geometrische Interpretation der Faktorenanalyse

Ähnlich wie die PCA, versucht auch die FA, \(p\)-viele gegebene Variablen durch eine Struktur geringerer Dimensionalität zu beschreiben. Die Idee dabei illustrieren wir zunächst wieder geometrisch (orientiert an den Ausführungen bei Wickens, 2014).

Während die PCA den durch die \(p\)-vielen Variablen aufgespannten Raum \(\mathcal{V}_X\) durch einen neuen Satz anderer Variablen beschreibt, liefert die FA ein Modell gemeinsamer (“common”) und einzigartiger (“unique”) Teile zur Beschreibung der Variablen. Hierdurch wird auch bereits ein wichtiger Unterschied betont. Während die PCA primär daran interessiert ist, die Ursprungsvariablen in einen neuen Satz an Variablen zu überführen, möchte man bei der FA latente Faktoren identifizieren und beschreiben. Diese Faktoren sollen einen Teil der Daten erklären bzw. beschreiben (common-Teil). Allerdings beschreiben beobachtbare Variablen nie perfekt die dahinter liegenden Faktoren, sodass es (in der Theorie) immer einen Messfehler gibt (unique-Teil); selbst wenn man genauso viele Faktoren wie beobachtbare Variablen hätte.

Die Grundidee ist in der folgenden Abbildung dargestellt (vgl. Abb. 9.4 in Wickens, 2014). (Empirischer) Ausgangspunkt sind die beiden Variablen/Vektoren \(\bf x_1\) und \(\bf x_2\), die wir der einfacheren Darstellung halber als standardisiert annehmen, wodurch sie gleich lang werden (da sie dann die gleiche Varianz haben). Die Idee ist nun, dass die Korrelation beider Variablen auf eine nicht-beobachtbare, latente Variable zurückgeht, die ihrerseits die Werte beider Variablen beeinflusst. Dies ist in der Abbildung der Faktor \(\bf f\). Die beiden Vektoren \(\bf u_1\) und \(\bf u_2\) sind sowohl untereinander unkorreliert und ebenso unkorreliert mit \(\bf f\). Sie beschreiben die einzigartigen Anteile an den Variablen \(\bf x_1\) und \(\bf x_2\), die vorhanden sein müssen, wenn deren Korrelation nicht perfekt ist. Variable \(\bf x_1\) liegt im (Unter-)Raum \(\mathcal{V}_{\bf fu_1}\), der von \(\bf f\) und \(\bf u_1\) aufgespannt wird und kann durch deren Linearkombination dargestellt werden. Analoges gilt für die Variable \(\bf x_2\). In diesem speziellen Fall können wir \(\bf x_1\) und \(\bf x_2\) als Linearkombination von \(\bf u_1\), \(\bf u_2\) und \(\bf f\) ausdrücken:

\[ {\bf x_1}=a\cdot {\bf f}+b_1\cdot {\bf u_1}\quad\text{und}\quad {\bf x_2}=a\cdot {\bf f}+b_2\cdot {\bf u_2} \] \(a\) skaliert hierbei den Teil, welcher auf den gemeinsamen Faktor zurückgeht (common Teil). \(b_1\) und \(b_2\) skalieren die Teile, die nicht auf den Faktor zurückgehen und orthogonal zu diesem stehen (unique Teil). Da die Länge von \(\bf x_1\) und \(\bf x_2\) gleich 1 ist, gilt für \(b_1\) und \(b_2\) aufgrund des Satzes von Pythagoras: \(b_1 = b_2 = \sqrt{1-a^2}\). Eingesetzt in die obere Gleichung erhalten wir: \[ {\bf x_1}=a\cdot {\bf f}+\sqrt{1-a^2}\cdot {\bf u_1}\quad\text{und}\quad {\bf x_2}=a\cdot {\bf f}+\sqrt{1-a^2}\cdot {\bf u_2} \]

Ohne hier zu sehr auszuarten, kann man anhand des Skalarprodukts \(\bf x_1 \cdot x_2\) sowie dessen Beziehung bei zentrierten Variablen zur Korrelation zeigen, dass \(a\) identisch ist zur Korrelation.

Werden mehr als zwei Ausgangsvariablen/-vektoren betrachtet, kann es sein, dass mehrere Faktoren \(\bf f_m\) postuliert werden müssen, die ihrerseits paarweise unkorreliert sind und einen Faktorenraum \(\mathcal{V}_{\bf f}\) aufspannen. Darüber hinaus hat jede Ausgangsvariable wieder einen einzigartigen Anteil der durch eine Skalierung von \(\bf u_j\) repräsentiert wird, wobei auch diese unkorreliert untereinander und mit den Faktoren \(\bf f_m\) sind. So kann dann wieder jeder Ausgangsvektor als Linearkombination \[ {\bf x_j} = a_{j1}{\bf f_1}+a_{j2}{\bf f_2}+\ldots+a_{jm}{\bf f_m}+d_j{\bf u_j} \] beschrieben werden. Das Ziel ist es nun, einen Kompromiss zu finden, aus der Verwendung möglichst weniger notwendiger Faktoren \(\bf f_m\) bei gleichzeitig guter Reproduzierbarkeit der beobachteten Korrelationen der Ausgangsvariablen untereinander. (Wir werden aber auch gleich feststellen, dass diese Repräsentation nicht eindeutig ist.)

13.3.2 Eine erste algebraische Betrachtung

Bevor wir zu den formalen Details kommen, veranschaulichen wir das grundsätzliche Prinzip noch einmal anhand wir zweier Beispiele (die dem Buch von Überla, 1971, entnommen sind), wobei wir hier auf die Faktoren fokussieren und den unique-Teil für den Moment ignorieren. Im Zuge dessen können wir aber eine ganze Reihen wichtiger Begriffe im Kontext einer FA bereits konzeptuell einführen.

Angenommen die Beobachtung von 4 Variablen an einer Reihe von Versuchspersonen hat die Korrelationsmatrix \[ \bf R = \begin{pmatrix} 1.000 & .720 & .450 & .045 \\ .720 & 1.000 & .400 & .040 \\ .450 & .400 & 1.000 & .025 \\ .045 & .040 & .025 & 1.000 \end{pmatrix} \] ergeben. Die Variablen \(\bf X_1\) und \(\bf X_2\) korrelieren hier recht hoch miteinander, ihre Korrelation mit \(\bf X_3\) sind weniger stark und \(\bf X_4\) korreliert quasi gar nicht mit den anderen drei Variablen. Die FA fragt nun, ob hinter diesem Korrelationsmuster möglicherweise eine latente Variable, ein Faktor, steht, auf den die gesamte Information zurückgeführt werden kann. Betrachten wir eine \(4\times 1\)-Matrix, die wir bereits \(\bf L\) nennen wollen, und deren konkrete Werte \[ \bf L= \begin{pmatrix} .90 \\ .80 \\ .50 \\ .05 \end{pmatrix} \] seien, dann ergibt sich als \[ {\bf L}\cdot {\bf L'}= \begin{pmatrix} (0.810) & .720 & .450 & .045 \\ .720 & (.640) & .400 & .040 \\ .450 & .400 & (.250) & .025 \\ .045 & .040 & .025 & (.003) \end{pmatrix} = \bf R_{imp} \] die sog. implizierte Korrelationsmatrix \(\bf R_{imp}\). Wir sehen, dass bis auf die Werte in der Diagonalen, alle Korrelationen (perfekt) reproduziert werden. \({\bf L}\) enthält also quasi alle Information von \(\bf R\), nur eben in reduzierter Form. Die Werte auf der Diagonalen werden später als Kommunalitäten bezeichnet und die Werte von \(\bf L\) als Faktorladungen. In diesem Beispiel reicht ein Faktor aus, um das Korrelationsmuster zu “erklären”, was geometrisch bedeutet, dass eine Dimension ausreicht, um die beobachteten Korrelationen zu erklären. Die Faktorladungen geben an, wie die Variablen aus dem Faktor gebildet werden können und sie können als Korrelation der beobachteten Variablen mit dem Faktor interpretiert werden. Dies ist in der folgenden Abbildung illustriert:

Um eine empirische Korrelationsmatrix \({\bf R}\) in eine Form \({\bf R} = {\bf L}\cdot {\bf L'}\) zu überführen, müssen wir zwei Probleme lösen (die dann weiter unten aufgegriffen werden):

  1. Die Diagonale der implizierten Korrelationsmatrix \(\bf R_{imp}\) besteht nicht mehr aus lauter Einsen. Das Kommunalitätenproblem meint, durch welche Werte die Werte der Diagonalen ersetzt werden sollen.
  2. Das Faktorenproblem meint dann die Bestimmung der Elemente von \(\bf L\), wobei \(\bf L\) auch mehr als eine Spalte enthalten kann. Dann wäre zur Erklärung von \(\bf R\) entsprechend mehr als ein Faktor notwendig.

Dazu betrachten wir nun ein zweites Beispiel. Angenommen wir haben folgende Korrelationsmatrix \[ {\bf R_{reduziert}}= \begin{pmatrix} (0.8125) & .7225 & .0850 & .0800 \\ .7225 & (.6425) & .0800 & .0750 \\ .0850 & .0800 & (.6425) & .5625 \\ .0800 & .0750 & .5625 & (.4925) \end{pmatrix} \] erhalten. Wir nennen diese Matrix die reduzierte Korrelationsmatrix, da wir in die Diagonale bereits Kommunalitäten eingesetzt haben, also quasi davon ausgehen, das damit behaftete Problem bereits gelöst zu haben. Nun sehen wir, dass die Variablen 1 und 2 sowieso die Variablen 3 und 4 miteinander korrelieren, während die weiteren Korrelationen eher unbedeutend sind. Beginnen wir mit einem Faktor und der Matrix \(\bf L\) von oben (die wir hier nun \({\bf L_1}\) nennen), ergibt sich \[ \bf R_{imp} = {\bf L_1}\cdot {\bf L_1'}= \begin{pmatrix} .810 & .720 & .450 & .045 \\ .720 & .640 & .400 & .040 \\ .450 & .400 & .250 & .025 \\ .045 & .040 & .025 & .003 \end{pmatrix} \] als implizierte Korrelationsmatrix. Nun stimmen die Korrelationen nicht mehr mit den empirischen Korrelationen überein und dies betrifft insbesondere diejenigen Korrelationen, an denen die Variablen 3 und 4 beteiligt sind. Wir berechnen nun eine Residual-Korrelationsmatrix \(\bf R_{residual} = {\bf R_{reduziert}} - {\bf R_{imp}}\) \[ {\bf R_{residual}} = \begin{pmatrix} (0.8125) & .7225 & .0850 & .0800 \\ .7225 & (.6425) & .0800 & .0750 \\ .0850 & .0800 & (.6425) & .5625 \\ .0800 & .0750 & .5625 & (.4925) \end{pmatrix} - \begin{pmatrix} .810 & .720 & .450 & .045 \\ .720 & .640 & .400 & .040 \\ .450 & .400 & .250 & .025 \\ .045 & .040 & .025 & .003 \end{pmatrix} = \begin{pmatrix} .0025 & .0025 & .0400 & .0350 \\ .0025 & .0025 & .0400 & .0350 \\ .0400 & .0400 & .6400 & .5600 \\ .0350 & .0350 & .5600 & .4900 \end{pmatrix} \] und sehen, dass–natürlich–die Werte ungleich Null sind. (Würden wir das für das erste Beispiel tun, würden wir sehen, dass–bis auf die Diagonale–alle Werte der Residual-Korrelationsmatrix Nullen sind.). Nun können wir aber genau die Matrix \(\bf R_{residual}\) ganz ähnlich durch eine zweite Matrix \[ \bf L_2= \begin{pmatrix} .05 \\ .05 \\ .80 \\ .70 \end{pmatrix} \] erklären und es gilt: \[ {\bf L_2}\cdot{\bf L_2'}={\bf R_{residual}} \] Setzen wir nun \(\bf L\) spaltenweise aus \(\bf L_1\) und \(\bf L_2\) zusammen, also \[ {\bf L}= \begin{pmatrix} .90 & .05 \\ .80 & .05 \\ .05 & .80 \\ .05 & .70 \end{pmatrix} \] dann gilt \[ {\bf L}\cdot {\bf L'}=\bf R \] wie auch leicht mit R überprüft werden kann:

L <- matrix(c(.90, .05,
              .80, .05,
              .05, .80,
              .05, .70),
            nrow = 4,
            byrow = TRUE)
L %*% t(L)
##        [,1]   [,2]   [,3]   [,4]
## [1,] 0.8125 0.7225 0.0850 0.0800
## [2,] 0.7225 0.6425 0.0800 0.0750
## [3,] 0.0850 0.0800 0.6425 0.5625
## [4,] 0.0800 0.0750 0.5625 0.4925

Zur Darstellung der Variablen sind nun also zwei Dimensionen nötig und jede Variable setzt sich linear aus nun den beiden Faktoren zusammen: Nach diesen eher illustrativen Betrachtungen wenden wir uns wieder formalen Aspekten sowie der Durchführung einer (explorativen) FA mit R zu.

13.3.3 Grundlagen auf Populationsebene

Beginnen wir wieder mit dem zugrunde liegenden statistischen Modell. Im Allgemeinen seien \(p\)-viele Variablen gegeben (bspw. \(p = 6\) beim anfangs eingeführten Beispiel). Diese \(p\) Variablen sind auf einer gemeinsamen Population \(\Omega\) definiert, sodass wir sie als Zufallsvektor \(\bf X\) auffassen können:

\[\bf X = \begin{pmatrix} {\bf X_1} \\ \vdots \\{\bf X_p} \end{pmatrix}\]

Eine erste Annahme der FA ist, dass \(E(\bf X) = 0\) gilt, dass die Variablen also zentriert sind. Die \(n\)-vielen Realisierungen von \(\bf X\) ergeben dann die Vektoren \(\bf x_j\), wie sie bspw. konzeptuell in der oben eingeführten Anschauung dargestellt sind (dort sind die Vektoren aber zusätzlich noch standardisiert, was aber im Allgemeinen nicht unbedingt notwendig ist).

Das allgemeine Modell der FA postuliert nun folgende Beziehung:

\[{\bf X} = {\bf L}\cdot{\bf F} + {\bf \epsilon}\] Hier ist \(\bf X\) der Zufallsvektor der beobachtbaren Werte (\(1\times p\)), \(\bf L\) eine Matrix von Koeffizienten, welche wir Ladungen nennen (\(p \times q\)), \(\bf F\) unbeobachtbare, latente Variablen, welche wir Faktoren nennen (\(1\times q\)) und \(\bf \epsilon\) schließlich ein Messfehler (\(1\times p\)). Ausformuliert sieht die Gleichung so aus:

\[\begin{align*} \begin{pmatrix} \bf X_1 \\ \vdots \\ \bf X_p \end{pmatrix} = \begin{pmatrix} l_{11} & \dots & l_{1q} \\ \vdots & & \vdots \\ l_{p1} & \dots & l_{pq} \end{pmatrix} \cdot \begin{pmatrix} \bf F_1 \\ \vdots \\ \bf F_q \end{pmatrix} + \begin{pmatrix} \bf \epsilon_1 \\ \vdots \\ \bf \epsilon_p \end{pmatrix} \end{align*}\]

Die Gleichung beschreibt wie die Faktoren \(\bf F_m\) mit den Variablen \(\bf X_j\) zusammenhängen anhand der Ladungen. Der Rest, welcher nicht durch die Faktoren erklärt werden kann, wird einem Messfehler \(\epsilon\) zugeschrieben. Wichtig ist nun zu betonen, dass \(\bf F\) und \(\bf \epsilon\) beides Zufallsvektoren sind. Weiter ist die Ladungsmatrix zwar nicht stochastisch, aber sie beinhaltet unbekannte Koeffizienten. Klar ist, dass eine so allgemeine Gleichung nicht lösbar ist. Denn auf empirischer Seite haben wir nur Beobachtungen für die linke Seite der Gleichung (im Vergleich zur Regression, zum Beispiel, bei der wir Werte für Prädiktor und Kriterium haben).

Es gibt aber eine Reihe an Möglichkeiten Restriktionen einzuführen, sodass die durch die Gleichung der FA implizierte Struktur Lösungen hat. Grundlegend unterscheiden können wir zwischen einer sog. explorativen und einer sog. konfirmatorischen Faktorenanalyse. Eine explorative Faktorenanalyse kennzeichnet sich dadurch aus, dass wir im Vorhinein keine Anzahl an Faktoren festlegen sowie keine größeren Restriktionen an \(\bf L\) stellen. Eine konfirmatorische Faktorenanalyse spezifiziert hingegen konkrete Annahmen darüber, wie viele Faktoren es geben soll und wie diese mit den beobachtbaren Variablen zusammenhängen. Die so erlangten Restriktionen helfen auch dabei die Faktorenanalyse zu erweitern und sogar bestimmte Beziehungen zwischen den Faktoren im Kontext allgemeinerer Strukturgleichungsmodelle zu formulieren.

Da das Feld der FA entsprechend breit ist, können wir hier im Kontext von Statistik II nur die Grundlagen legen. Hierzu beschäftigen wir uns mit dem sog. orthogonalen (explorativen) Faktorenmodell. Dieses legt die folgenden Annahmen bezüglich \(\bf F\) und \(\bf \epsilon\) zugrunde:

  1. Der Erwartungswert der Faktoren ist 0 und die Kovarianzmatrix der Faktoren entspricht der Einheitsmatrix, sodass also alle Varianzen der Faktoren 1 sind und alle Faktoren paarweise unkorreliert sind:

\[E({\bf F}) = {\bf 0} \quad \quad \text{und} \quad \quad \text{Kov}({\bf F}) = \bf I_q\]

  1. Weiter soll gelten: \[E({\bf \epsilon}) = {\bf 0} \quad \quad \text{und} \quad \quad \text{Kov}({\bf \epsilon}) = \bf \Psi = \begin{pmatrix} \bf \Psi_1 & \dots & 0 \\ \vdots & & \vdots \\ 0 & \dots & \bf \Psi_p \end{pmatrix}\] Das heißt, der Erwartungswert des Messfehlers ist 0 und alle Messfehler sind paarweise unkorreliert, aber mit möglicherweise unterschiedlicher Varianz.

  2. Faktor und Messfehler sind unabhängig voneinander.

Legt man nun diese Annahmen zu Grunde, so ergibt sich folgende, durch die Faktorstruktur implizierte Zerlegung der Kovarianzmatrix von \(\bf X\) auf Populationsebene (ohne Beweis hier): \[\Sigma = \text{Kov}({\bf X}) = {\bf L L'} + \bf \Psi = \begin{pmatrix} l_{11} & \dots & l_{1q} \\ \vdots & & \vdots \\ l_{p1} & \dots & l_{pq} \end{pmatrix} \cdot \begin{pmatrix} l_{11} & \dots & l_{p1} \\ \vdots & & \vdots \\ l_{1q} & \dots & l_{pq} \end{pmatrix} + \begin{pmatrix} \bf \Psi_1 & \dots & 0 \\ \vdots & & \vdots \\ 0 & \dots & \bf \Psi_p \end{pmatrix}\]

Formuliert man diese Gleichung explizit aus, so ergibt sich bspw. für die Varianz der ersten beobachtbaren Variable \(\bf X_1\) \[V({\bf X_1}) = l_{11}^2 + l_{12}^2 + \dots + l_{1q}^2 + \bf \Psi_1\] bzw. allgemein für eine beobachtbare Variable \(\bf X_j\) \[V({\bf X_j}) = l_{j1}^2 + l_{j2}^2 + \dots + l_{jq}^2 + \bf \Psi_j\]

Das heißt, die Varianz einer Variable bestimmt sich durch die quadrierten Elemente einer Zeile von \(\bf L\) plus die Varianz des Messfehlers. Die Summe der quadrierten Ladungen ist das, was die Faktoren erklären. Man nennt diesen Term “Kommunalität” und er reflektiert den common-Teil. Der Messfehler hingegen beschreibt den Teil der Varianz einer Variablen, welcher nicht durch die Faktoren aufgeklärt werden kann. Man nennt diesen Term “spezifische Varianz” und er reflektiert den unique-Teil. Die Gleichung zur Varianz einer Variable zeigt zudem noch etwas anderes. Der Beitrag, den ein Faktor \(\bf F_m\) zur Varianz der Variablen \(\bf X_j\) hat, ist die quadrierte Ladung, \(l_{jm}^2\), welche beide verbindet. Somit kann man folgern, dass der Beitrag des Faktors \(\bf F_m\) zur gesamten Varianz aller Variablen in \(\bf X\) die Summe aller quadrierter Ladungen ist, welche \(\bf F_m\) mit allen Variablen in \(\bf X\) verbindet: \[ \text{Varianzbeitrag des $m$-ten Faktors:} = l_{1m}^2 + l_{2m}^2 + \dots + l_{pm}^2 \] Darüber hinaus bestimmt das Faktorenmodell die Kovarianz zweier beobachteter Variablen. Konkret gilt für die Kovarianz zweier beobachteter Variablen: \[\text{Kov}({\bf X_j}, {\bf X_k}) = l_{j1} \cdot l_{k1} + l_{j2} \cdot l_{k2} + \dots + l_{jq} \cdot l_{kq}\] Das bedeutet auch, dass die Ladungen, welche zwei Variablen über alle Faktoren hinweg besitzen, die gemeinsame Kovarianz bestimmt. Faktoren und ihre zugehörigen Ladungen erklären also das Kovarianzmuster der beobachtbaren Variablen.

Bevor wir nun nach dieser eher sehr mathematischen Erörterung zur Umsetzung mit R kommen, sei allerdings noch erwähnt, dass es trotz der Restriktionen des orthogonalen Faktorenmodells immer noch eine unendlich große Anzahl an Lösungen für \(\bf L\) gibt. Ohne hier tiefer ins Detail zu gehen, kann man zeigen, dass man eine beliebige Parametrisierung von \(\bf L\) mit einer Matrix \(\bf T\) multiplizieren kann und zu den gleichen, durch die Faktorengleichung implizierten, Varianzen und Kovarianzen für die beobachtbaren Variablen \(\bf X\) kommt, solange die Nebenbedingung \(\bf T T' = I_q\) erfüllt ist. Dies bietet die Grundlage für sog. Rotationen der Ladungsmatrix, die wir später in diesem Teil aufgreifen werden.

13.3.4 Durchführung einer Faktorenanalyse mit lavaan

Aufgrund der unendlich vielen Lösungen für die Ladungsmatrix \(\bf L\) gibt es auch diverse Vorschläge wie man diese schätzen kann.

  • Eine Hauptkomponentenlösung nutzt tatsächlich die ersten \(m\) Eigenvektoren und Eigenwerte im Zuge einer PCA zur Konstruktion der Ladungsmatrix und erhält so direkt Kommunalitäten und spezifische Varianzen. Hieran wird auch nochmal klar, dass beide Verfahren (je nach Durchführung) auf sehr ähnliche mathematische Prinzipien zurückgehen, sodass die Grenzen zwischen PCA und FA manchmal in der Praxis stark verschwimmen.

  • Eine zweite, alternative Variante schätzt die Kommunalitäten initial; dies ist der Ausgangspunkt für eine “echte” FA. Ein weitverbreitetes Verfahren zur Schätzung der Kommunalität ist es, die quadrierte multiple Korrelation (“squared multiple correlation”; SMC) zu verwenden: Jede Variable wird als Kriterium einer multiplen Regression mit den anderen Variablen als Prädiktor aufgefasst und das resultierende \(R^2\) wird als initiale Schätzung der Kommunalität genutzt. Im Detail gibt es dann verschiedene Varianten, wie die Faktoren bestimmt werden. Bei einer Hauptachsenanalyse z.B. wird die Diagonale der Korrelationsmatrix durch die geschätzten Kommunalitäten ersetzt (dies ist dann die reduzierte Korrelationsmatrix) und auf dieser eine PCA gerechnet. Dann werden die Kommunalitäten neu berechnet und dieser Vorgang wird wiederholt, bis sich nach einer bestimmten Anzahl von Iterationen die geschätzten Kommunalitäten nicht mehr wirklich verändern.

  • Eine dritte Art zur Schätzung der Ladungsmatrix und somit der Kommunalitäten und spezifischen Varianzen bietet die Maximum-Likelihood-Faktorenanalyse, die die Maximum-Likelihood Methode zur Schätzung verwendet. Hierbei wird versucht die Ladungsmatrix so zu wählen, dass die durch das Faktorenmodell implizierte Kovarianzmatrix (oder Korrelationsmatrix) der empirischen Kovarianzmatrix (oder Korrelationsmatrix) möglichst ähnelt. Das heißt, es wird versucht anhand der Likelihood-Funktion eine möglichst gute Passung zwischen empirischer Kovarianzmatrix und der durch das Modell vorhergesagten Kovarianzmatrix zu erreichen. Die obere Gleichheit der beobachtbaren Kovarianzmatrix und der implizierten Kovarianzmatrix gilt dabei häufig nur auf Populationsebene. Auf Stichprobenebene wird es meist Abweichungen zwischen beiden Kovarianzmatrizen geben (und es gibt auch Tests, die die Äquivalenz beider Matrizen testen). Die Maximum-Likelihood Methode hat die Vorteile, dass (1) die vom Modell erzeugte Kovarianzmatrix auf Basis einer Stichprobe auf die Population generalisierbar ist und dass (2) Standardfehler der geschätzten Parameter berechnet werden können. Damit dies möglich ist, muss angenommen werden, dass die beobachteten Variablen multivariat-normalverteilt sind. Darüberhinaus werden häufig iterative Algorithmen benötigt, um die Likelihood-Funktion zu optimieren, denn in den meisten Fälle gibt es keine geschlossene Lösung. In diesem Teil nutzen wir die Maximum-Likelihood-Methode und das Paket lavaan. Dieses Paket ist ein sehr verbreitetes und mächtiges Paket zur Durchführung von Faktorenanalysen und zur Berechnung von Strukturgleichungsmodellen. Auch wenn es für explorative Faktorenanalysen Funktionen gibt, die bereits direkt in R enthalten sind, wollen wir das Paket hier bereits einführen (und so für die Lehre in späteren Wahlpflichtmodulen vorbereiten).

Wie auch bei der PCA, können wir im Prinzip eine FA mit standardisierten oder unstandardisierten Daten durchführen (d.h. mit einer Kovarianz- oder Korrelationsmatrix). Häufig wird eine FA allerdings auf Basis einer Korrelationsmatrix durchgeführt, weshalb viele Funktionen in R entweder gar nicht erst anbieten eine FA mit einer Kovarianzmatrix durchzuführen oder per default jeglichen Input in eine Korrelationsmatrix überführen. Um eine FA mit unstandardisierten Daten durchzuführen, kann bspw. die Funktion fa() aus dem psych Paket genutzt werden. Dies ist einer Ergänzung kurz dargestellt. Für den folgenden Teil verwenden wir allerdings die Funktion efa() aus dem Paket lavaan.

Zunächst müssen wir uns überlegen, wie viele Faktoren wir extrahieren wollen bzw. wie viele Spalten unsere Ladungsmatrix besitzen soll. Aufgrund der Nähe von FA und PCA sind die Entscheidungsregeln hierbei tatsächlich identisch zu denen, die weiter oben im Kontext der PCA bereits beschrieben wurden. Das heißt, wir können über die Anzahl der zu extrahierenden Faktoren anhand der Eigenwerte entscheiden. Die oben dargestellten Analysen hatten für den vorliegenden Datensatz jeweils 2 Hauptkomponenten vorgeschlagen, sodass wir auch hier 2 Faktoren extrahieren werden. Da wir bei der PCA die Funktion screeplot() genutzt haben in Kombination mit dem Objekt, welches uns die Funktion princomp() zurückliefert, visualisieren wir die Eigenwerte der Korrelationsmatrix nochmal selber:

plot(eigen(R)$values, 
     type = "l",
     xlab = "Komponente",
     ylab = "Eigenwert")

Der Aufruf der Funktion efa() zur Durchführung der Faktorenanalyse ist recht simpel. Primär müssen wir ein DataFrame mit den Daten übergeben, die Anzahl der zu bestimmenden Faktoren festlegen, und eine Rotationsmethode angeben (siehe dazu weiter unten). Im Prinzip bietet die Funktion auch Argumente, um eine Kovarianzmatrix sowie die Anzahl der Proband:innen zu übergeben. Da wir hier aber die Rohdaten in Form eines DataFrames zur Hand haben, nutzen wir diese Möglichkeit:

efa_obj <- efa(data = daten,      # DataFrame übergeben
               nfactors = 2,      # 2 Faktoren
               rotation = "none") # erstmal keine Rotation 
summary(efa_obj)
## This is lavaan 0.6.16 -- running exploratory factor analysis
## 
##   Estimator                                         ML
##   Rotation method                                 NONE
## 
##   Number of observations                           300
## 
## Fit measures:
##                     aic      bic    sabic chisq df pvalue   cfi rmsea
##   nfactors = 2 10190.16 10253.12 10199.21 7.027  4  0.134 0.997  0.05
## 
## Eigenvalues correlation matrix:
## 
##     ev1     ev2     ev3     ev4     ev5     ev6 
##   2.488   2.396   0.328   0.289   0.263   0.235 
## 
## Standardized loadings: (* = significant at 1% level)
## 
##                   f1      f2       unique.var   communalities
## Algebra        0.839*                   0.297           0.703
## Geometrie      0.832*                   0.304           0.696
## Analysis       0.867*                   0.246           0.754
## Buchstabieren         -0.860*           0.257           0.743
## Lesen                 -0.836*           0.301           0.699
## Schreiben             -0.855*           0.268           0.732
## 
##                               f2    f1 total
## Sum of sq (obliq) loadings 2.176 2.151 4.327
## Proportion of total        0.503 0.497 1.000
## Proportion var             0.363 0.358 0.721
## Cumulative var             0.363 0.721 0.721
## 
## Factor correlations: (* = significant at 1% level)
## 
##        f1      f2 
## f1      1         
## f2      0       1

Der Output ist erstmal sehr lang und umfangreich, bietet aber nahezu alle relevanten Informationen.

  • Er beginnt erst mit ein paar allgemeinen Informationen, welche die Schätzung beschreiben. Genutzt haben wir Maximum-Likelihood (ML). Für die explorative Faktorenanalyse gibt es tatsächlich auch geschlossene Lösungen, sodass wir hier keinen Algorithmus benötigen um an eine Lösung zu gelangen. Rotiert haben wir nicht und der Datensatz enthielt die Werte von 300 Versuchspersonen.

  • Im Anschluss folgen eine Reihe von Statistiken, die uns die (relative) Güte der FA beurteilen lassen. Neben dem Akaike und Bayes Informationskriterium (aic und bic), bietet der Output einen Signifikanztest. Dieser prüft anhand einer \(\chi^2\)-Verteilung, ob die empirische Abweichung zwischen empirischer Korrelationsmatrix und der vom Modell implizierten Korrelationsmatrix so stark ist, um an der Annahme, beide seien auf der Populationsebene gleich, zu zweifeln. Getestet wird hier also ein perfekter Fit, \(H_0: {\bf \Sigma} = {\bf LL'} + {\bf \Psi}\), wobei \(\bf\Sigma\) in diesem Fall die Kovarianzmatrix der standardisierten Daten und damit eine Korrelationsmatrix ist. Ist der Test signifikant, so kann man an der Plausibilität zweifeln, dass die extrahierte Faktorstruktur das empirische Korrelationsmuster exakt (bzw. ausreichend gut) beschreiben kann. Wie immer gilt aber bei Signifikanztests, dass dieser Schluss abhängig ist von der Stichprobengröße. Bei großen Stichproben führen bereits kleine Abweichungen zur Ablehnung der \(H_0\). Im hier vorliegenden Fall ist der Test mit \(\chi^2 = 7.027, p = .134\) statistisch nicht signifikant. Es gibt daher weitere, mehr deskriptive Maße zur Beurteilung der Modellgüte. Ein hier aufgelistetes Maß ist der Comparative Fit Index (cfi). Hier wird das geschätzte Modell mit einem schlechtmöglichsten Modell verglichen, bei dem alle Variablen unkorreliert sind. Als Daumenregel gelten hier Werte \(> .96\) für eine gute Modellpassung. Als zweite Metrik ist noch die Root Mean Square Error of Approximation (rmsea) ausgegeben. Diese prüft die approximative Modellpassung. Als grobe Daumenregeln gelten hier werte \(< 0.05\) als gut und Werte \(> 0.08\) als eher schlecht. Eine ganze Batterie an weiteren Kennstatistiken (sowie teilweise deren Konfidenzintervalle) können wir mit der Funktion fitMeasures() anfordern.

  • Der folgende Block (Eigenvalues correlation matrix) gibt genau das aus, was der Titel besagt: die Eigenwerte der Korrelationsmatrix (vgl. auch den Scree-Plot weiter oben)

  • Der nächste Block (Standardized loadings) gibt nun das Herzstück der FA aus: die Ladungen bzw. die Ladungsmatrix \(\bf L\). Unter f1 und f2 finden sich die Ladungen, welche eine beobachtete Variable mit dem jeweiligen Faktor verbindet (= die Spalten von \(\bf L\)). Beispielsweise besitzt die Variable “Geometrie” eine geschätzte Ladung von 0.832 auf dem ersten Faktor. Die “Sternchen” neben den Zahlen zeigen an, ob die jeweilige Ladung bei \(\alpha = .01\) signifikant werden (d.h. getestet wird die \(H_0: l_{jm} = 0\)). Grundlage hierfür ist ein approximativer \(z\)-Test auf Basis einer Standardnormalverteilung. Es sei angemerkt, dass verhältnismäßig kleine Ladungen nicht angezeigt werden. Formal besitzt jede Variable eine Ladung auf jedem Faktor, diese sind nur unter Umständen sehr klein. Um sich auch kleinere Koeffizienten anzeigen zu lassen, können wir die Funktion print() nutzen:

print(efa_obj, 
      cutoff = 0.02)   # nur Ladungen kleiner als 0.02 werden ausgeblendet
## 
##                   f1      f2 
## Algebra        0.839*        
## Geometrie      0.832*  0.058 
## Analysis       0.867*  0.053 
## Buchstabieren  0.051  -0.860*
## Lesen          0.023  -0.836*
## Schreiben             -0.855*
  • Der gleiche Block der Ladungsmatrix des Outputs gibt in den zwei rechten Spalten noch die geschätzten Kommunalitäten \(\hat h^2\) (communalitites) sowie die spezifischen Varianzen \(\hat \Psi\) (unique.var) an. Die Kommunalitäten sind dabei die durch die Faktoren aufgeklärte Varianz innerhalb einer Variable. Sie ergeben sich über die quadrierten Ladungen einer Variable \(\bf X_j\) über alle Faktoren \(\bf F_m\) hinweg. Die spezifische Varianz ist der restliche Varianzanteil. Da wir hier eine Korrelationsmatrix der FA zugrunde legen ist auch die Varianz einer (standardisierten) Variable 1. Somit addieren sich auch Kommunalitäten und spezifische Varianzen zu 1.
L <- efa_obj$loadings
(common <- rowSums(L^2))
##       Algebra     Geometrie      Analysis Buchstabieren         Lesen 
##     0.7032590     0.6960029     0.7542905     0.7425836     0.6989823 
##     Schreiben 
##     0.7319136
(unique = 1 - common)
##       Algebra     Geometrie      Analysis Buchstabieren         Lesen 
##     0.2967410     0.3039971     0.2457095     0.2574164     0.3010177 
##     Schreiben 
##     0.2680864
  • Unterhalb der Ladungen an sich finden sich auch die Summe der quadrierten Ladungen eines Faktor über alle beobachtbaren Variablen hinweg (Sum of sq (obliq) loadings). Zur Erinnerung: Wir hatten oben festgehalten, dass eine quadrierte Ladung den Varianzbeitrag eines Faktors zu einer beobachtbaren Variable festhält. Somit gibt dieser Teil an, wie viel Varianz ein Faktor über alle beobachtbaren Variablen erklären kann. Proportion of total ist der Anteil an aufgeklärter Varianz eines Faktors an der gesamten aufgeklärten Varianz und Proportion var ist die Varianzaufklärung eines Faktors relativ zur Gesamtvarianz der beobachtbaren Variablen. Da wir eine Korrelationsmatrix mit 6 Variablen betrachten, ist die Gesamtvarianz auch 6 (= Summe der Diagonalelemente der Korrelationsmatrix). Daher ergibt sich bspw. für den ersten Faktor hier ein Wert von \(2.176 / 6 = 0.363\). Die letzte Zeile Cumulative var ergibt sich durch Aufkumulieren der darüberliegenden Zeile.

  • Der letzte Block Factor correlations gibt schließlich Informationen über die angenommene Faktorstruktur. Im orthogonalen explorativen Faktorenmodell ist die Varianz der Faktoren 1 und alle Faktoren sind paarweise unkorreliert.

13.3.5 Interpretation und Rotation der Faktoren

Die Interpretation eines Faktors und der Ladungsmatrix ist ein subjektiver Vorgang. Im oberen Beispiel ergab sich, dass die Variablen Algebra, Geometrie und Analysis hoch auf einem Faktor laden und die übrigen Variablen hoch auf dem zweiten Faktor laden. In Anlehnung an unsere Einführung könnten wir also folgern, dass Faktor 1 so etwas wie “Mathefähigkeiten” reflektiert und Faktor 2 so etwas wie “Sprachfähigkeiten”.

Wichtig ist allerdings, dass die initial gefundene Lösung einer FA nicht zwangsläufig die am besten interpretierbare sein muss. Wie bereits oben angesprochen, gibt es unendlich viele Lösungen für die Ladungsmatrix, die zur gleichen, vom Modell implizierten, Kovarianzstruktur führt. Die spezifische Lösung für \(\bf L\) ist somit arbiträr und bspw. nur eine–mathematisch gesehen–einfach bestimmbare Lösung. Daher ist es fast immer so, dass \(\bf L\) anschließend so transformiert wird, dass sie gewissen Optimalitätskriterien entsprechen, wodurch die Interpretation erleichtert werden soll. Diese Transformation nennt man Rotation, da es geometrisch gesehen eine Rotation des Vektorraums ist. Idealerweise soll durch eine Rotation das sog. Einfachstruktur-Kriterium erreicht werden, also dass die Variablen eine hohe Ladung auf nur einem Faktor haben und entsprechend keine (oder nur geringe) Ladungen auf den anderen Faktoren.

Hierbei kann grundsätzlich zwischen zwei Arten von Rotationen unterschieden werden, für die jeweils ein Beispiel einer konkreten Methode vorgestellt wird:

  • Bei orthogonalen Rotationen werden die Faktoren so rotiert, dass sie (auch danach) noch orthogonal zueinander stehen und daher nicht miteinander korreliert sind. Das bekannteste Verfahren dieser Art ist die Varimax-Rotation, bei der Faktoren so rotiert werden, dass sie mit einigen Variablen hoch und mit den anderen niedrig zusammenhängen. In anderen Worten: Es werden hohe und niedrige quadrierte Ladungen angestrebt und mittlere Werte sollen vermieden werden. Dies wird formal dadurch erreicht, dass die Varianz der quadrierten Ladungen maximiert wird.

  • Bei obliquen Rotationen werden Korrelationen zwischen den Faktoren zugelassen. Diese Variante dürfte die Realität psychologischer Untersuchungsgegenstände i.d.R. besser treffen als orthogonale Rotationen und sie erreichen eine Einfachstruktur auch leichter. Eine solche Methode ist die (direkte) Oblimin-Rotation, bei der eine Minimierung der Kreuzprodukte der ursprünglichen Faktorladungen angestrebt wird. Dies rührt daher, dass diese Kreuzprodukte klein sind, wenn viele der Ladungen nahe bei Null liegen.

Da oblique Rotationen auch orthogonale Lösungen liefern können, werden sie unseres Erachtens in der psychologischen Forschung bevorzugt. Man unterscheidet bei obliquen Rotationen manchmal auch mehrere Matrizen:

  • Die Mustermatrix enthält die Ladungen der Variablen auf den Faktoren nach der Rotation.
  • Die Strukturmatrix enthält die Korrelationen der Faktoren mit den beobachteten Variablen.
  • Schließlich wird auch die Korrelationsmatrix der rotierten Faktoren angegeben.

Die Interpretation der schließlich verbleibenden Faktoren ist eine inhaltliche Angelegenheit. Sie basiert i.W. darauf herauszuarbeiten, worin die Gemeinsamkeit derjenigen beobachteten Variablen liegen, die hohe Ladungen auf einen gemeinsamen Faktor bzw. eine gemeinsame Hauptkomponente haben. Was hier “hoch” bedeutet ist ebenfalls nicht festgeschrieben, oft wird aber empfohlen, Ladungen \(<.30\) zu ignorieren (vgl. auch den summary()-Output weiter oben, bei dem kleine Ladungen nicht gezeigt wurden).

In R bieten nahezu alle Funktionen für Faktorenanalyse ein Argument zur Rotation der initialen Lösung. Eine Varimax-Rotation können wir bspw. anfordern mit

efa(data = daten,
    nfactors = 2,
    rotation = "varimax")
## 
##                   f1      f2 
## Algebra        0.838*        
## Geometrie      0.834*        
## Analysis       0.868*        
## Buchstabieren          0.861*
## Lesen                  0.836*
## Schreiben              0.854*

während eine oblique Oblimin-Rotation erreicht wird durch:

efa(data = daten, 
    nfactors = 2,
    rotation = "oblimin")
## 
##                   f1      f2 
## Algebra        0.839*        
## Geometrie      0.834*        
## Analysis       0.868*        
## Buchstabieren          0.862*
## Lesen                  0.836*
## Schreiben              0.854*

Wenn Sie selbst einmal eine bestimmte Rotation durchführen, achten Sie auch auf die angenommen Faktorstruktur im summary() Output! Bei einer obliquen Rotation wird nämlich die Annahme, beide Faktoren seien unkorreliert, aufgehoben und es finden sich auch Schätzungen für die Korrelationen zwischen den Faktoren im Output.

Da hier sehr idealisierte Daten verwendet wurden, bei denen bereits die initiale Lösung fast perfekt eine Einfachstruktur ergibt, sind die Faktorladungen vor und nach der Rotation fast identisch. In vielen Fällen, und je nach verwendeter Funktion, kommt es aber erst nach einer Rotation zu sinnvoll interpretierbaren Ladungen (vgl. die Umsetzung mit fa() in dieser Ergänzung). Daher ist in fast allen R-Funktionen eine bestimmte Rotationsmethode voreingestellt.

Abschließende Bemerkung: Aufgrund der Nähe von FA und PCA (insbesondere wenn man die Hauptkomponentenlösung der FA betrachtet) gibt es auch Funktionen in R, die die Möglichkeit bieten, die Lösung einer PCA zu rotieren. Da der Gedanke hierbei aber primär dem Blickwinkel einer FA entspringt, gehen wir hierauf nicht näher ein.

13.3.6 Berechnung von Faktorwerten

Die vorherigen Kapitel haben gezeigt wie man Faktoren auf Basis einer Korrelationsmatrix extrahiert. Ein letzter Schritt ist manchmal noch die Berechnung von geschätzten Werten pro Person auf den latenten Faktoren, analog zur Berechnung von “scores” im Zuge der Hauptkomponentenanalyse.

Diese sog. Faktorwerte können wir mit lavPredict() anfordern:

head(lavPredict(efa_obj))
##              f1         f2
## [1,]  0.6410196  0.4773845
## [2,]  0.3264790 -0.6397889
## [3,] -0.0447328  1.0814347
## [4,] -1.1949436 -1.6527449
## [5,]  0.4329019  1.3962532
## [6,]  0.3468279  0.7443865

13.4 Literatur

Field, A., Miles, J., & Field, Z. (2012). Discovering statistics using R. SAGE Publications.

Johnson, R., & Wichern, D. (2007). Applied multivariate statistical analysis. Pearson.

Überla, K. (1971). Faktorenanalyse. Eine systematische Einführung für Psychologen, Mediziner, Wirtschafts- und Sozialwissenschaftler. Springer.

Wickens, T. D. (2014). The geometry of multivariate statistics. Psychology Press.

Wollschläger, D. (2017). Grundlagen der Datenanalyse mit R. Springer.