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 randolph@uni-bremen.
Versionshistory:
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)
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:
Intuitiv könnte man hier vermuten, dass sich die Daten auch ohne großen Verlust an Informationen sparsamer durch zwei neue Variablen beschreiben lassen:
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:
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.
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 VP
im 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]
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:
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.
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.
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.
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):
Die Transformation von \(\bf X\) zu \(\bf Y\) mittels \(\bf A\) soll die Gesamtvarianz der ursprünglichen Variablen erhalten.
Die erste Variable \(\bf Y_1\) soll die meiste Varianz repräsentieren, die zweite Variable \(\bf Y_2\) die zweitmeiste und so weiter.
Alle neuen Variablen \(\bf Y_k\) sollen paarweise unkorreliert sein.
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:
\[\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}\]
Der nachfolgende Teil beschäftigt sich nun mit der Verknüpfung der eher mathematisch-gehaltenen Grundlagen auf Populationsebene und der konkreten Umsetzung 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.
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.
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.
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.
Ä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.)
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):
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.
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:
\[E({\bf F}) = {\bf 0} \quad \quad \text{und} \quad \quad \text{Kov}({\bf F}) = \bf I_q\]
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.
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.
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*
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.
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 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.
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
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.