---
fontsize: 8pt
bibliography: 4_Referenzen.bib
citation_package: natbib
output:
  beamer_presentation:
    keep_tex: true
    includes:
      in_header: 4_header.tex
---


```{r, include = F}
source("4_R_common.R")
```

#  {.plain}
\center
```{r, echo = FALSE, out.width = "20%"}
knitr::include_graphics("4_Abbildungen/mvda_4_otto.png")
```

\vspace{2mm}

\Huge
Multivariate Datenanalyse
\vspace{6mm}

\large
MSc Psychologie WiSe 2021/22

\vspace{6mm}
\large
Prof. Dr. Dirk Ostwald

#  {.plain}

\vfill
\center
\huge
\textcolor{black}{(4) Hauptkomponentenanalyse}
\vfill

# Modul A1/A3 Forschungsmethoden: Multivariate Verfahren


\small
\center
\footnotesize
\renewcommand{\arraystretch}{1.1}
\begin{tabular}{lll}
Datum        & Einheit                     & Thema					                        \\\hline
15.10.2021   & Einführung                  & (0) Einführung                         \\
15.10.2021   & Grundlagen                  & (1) Vektoren 		       		            \\
22.10.2021   & Grundlagen                  & (2) Matrizen I            	            \\
29.10.2021   & Grundlagen                  & (3) Matrizen II                        \\
05.11.2021   & Grundlagen                  & (4) Multivariate Normalverteilung      \\
  \textbf{12.11.2021}
& \textbf{Achsentransformationen}
& \textbf{(5) Hauptkomponentenanalyse}                                              \\
19.11.2021   & Achsentransformationen      & (6) Faktoranalyse                      \\
26.11.2021   & Maschinelles Lernen         & (7) LDA und Optimierung                \\
03.12.2021   & Maschinelles Lernen         & (8) Logistische Regression             \\
10.12.2021   & Maschinelles Lernen         & (9) Support Vektor Maschinen           \\
17.12.2021   & Maschinelles Lernen         & (10) Neuronale Netze                   \\
             & \textcolor{gray}{Weihnachtspause}                                    \\
07.01.2022   & Frequentistische Inferenz   & (11) T-Tests                           \\
14.01.2022   & Frequentistische Inferenz   & (12) Einfaktorielle Varianzanalyse     \\
21.01.2022   & Frequentistische Inferenz   & (13) Multivariate Regression           \\
28.01.2022   & Frequentistische Inferenz   & (14) Kanonische Korrelation            \\\hline
22.02.2022   & Klausur                     & 12 - 13 Uhr, G26-H1                    \\
Jul 2022     & Klausurwiederholungstermin
\end{tabular}



# Überblick

\small
\begin{itemize}
\item Hauptkomponentenanalyse heißt auf Englisch Principal Component Analysis (PCA).
\item PCA ist eine Featureselektionsmethode.
\begin{itemize}
\small
\item[$\circ$] ``Features'' sind die Komponenten multidimensionaler Zufallsvektoren.
\item[$\circ$] Korrelierte Features repräsentieren redundate Information.
\end{itemize}
\item PCA generiert ein korrelationsfreies Featureset durch lineare Featurekombination.
\item PCA basiert auf
\begin{itemize}
\small
\item[$\circ$] einer Eigenanalyse/Orthonormalzerlegung der Stichprobenkovarianzmatrix und
\item[$\circ$] einer anschließenden Vektorkoordinatentransformation.
\end{itemize}
\item Implementiert wird eine PCA oft mithilfe einer Singulärwertzerlegung.
\item In der Psychologie dient PCA zum Beispiel
\begin{itemize}
\small
\item[$\circ$] der Datenkompression beim Umgang mit neurophysiologischen Zeitseriendaten,
\item[$\circ$] der Inspiration im Rahmen der ``Exploratorischen Faktoranalyse''.
\end{itemize}
\end{itemize}


#
\vfill
\setstretch{2.4}
\large
Vektorkoordinatentransformation

Definition und Theorem

Singulärwertzerlegung

Datenkompression

Exploratorische Faktorenanalyse 

Selbstkontrollfragen
\vfill

#
\vfill
\setstretch{2.4}
\large
**Vektorkoordinatentransformation**

Definition

Datenkompression

Singulärwertzerlegung

Exploratorische Faktorenanalyse 

Selbstkontrollfragen
\vfill

# Vektorkoordinatentransformation
\small
\textcolor{darkblue}{Im Folgenden wichtige Begriffe aus (1) Vektoren}

**Euklidischer Vektorraum.** Das Tupel $\left((\mathbb{R}^m, +, \cdot), \langle \rangle \right)$
aus dem reellen Vektorraum $(\mathbb{R}^m, +, \cdot)$ und dem Skalarprodukt
$\langle \rangle$ auf $\mathbb{R}^m$ heißt \textit{reeller kanonischer Euklidischer Vektorraum}.
\vspace{2mm}

**Basis.** $V$ sei ein Vektorraum und es sei $B \subseteq V$. Dann heißt $B$ eine
\textit{Basis von $V$}, wenn  die Vektoren in $B$ linear unabhängig sind und
die Vektoren in $B$ den Vektorraum $V$ aufspannen.
\vspace{2mm}

**Basisdarstellung und Koordinaten.** $B := \{b_1,...,b_m\}$ sei eine Basis
eines $m$-dimensionalen Vektorraumes $V$ und es sei $x \in V$. Dann heißt die
Linearkombination $x = \sum_{i = 1}^m a_i b_i$ die \textit{Darstellung von
$x$ bezüglich der Basis $B$} und die Koeffizienten $a_1,...,a_m$ heißen die
\textit{Koordinaten von $x$ bezüglich der Basis $B$}.
\vspace{2mm}

**Orthonormalbasis von $\mathbb{R}^m$.** Eine Menge von $m$ Vektoren
$q_1,...,q_m \in \mathbb{R}^m$ heißt \textit{Orthonormalbasis} von $\mathbb{R}^m$,
wenn $q_1,...,q_m$ jeweils die Länge 1 haben und wechselseitig orthogonal sind.

\textcolor{darkblue}{Im Folgenden wichtiger Begriff aus (2) Matrizen}

**Orthonormale Zerlegung einer symmetrischen Matrix**. $S \in \mathbb{R}^{m \times m}$
sei eine symmetrische Matrix. Dann kannn $S$ geschrieben werden als $S = Q \Lambda Q^T$,
wobei $Q \in \mathbb{R}^{m \times m}$ eine orthogonale Matrix ist und
$\Lambda \in \mathbb{R}^{m\times m}$ eine Diagonalmatrix ist. Dabei sind die Spalten
von $Q$ die Eigenvektoren von $S$ und die Diagonalelemente von $\Lambda$ sind die
entsprechenden Eigenwerte.


# Vektorkoordinatentransformationn
\textcolor{darkblue}{Im Folgenden wichtige Intuition aus (1) Vektoren}

```{r, echo = FALSE, out.width = "70%"}
knitr::include_graphics("4_Abbildungen/mvda_4_basen_R2.pdf")
```

\small
* \justifying Im Rahmen von Hauptkomponentenranalyse werden wir daran
interessiert sein, basierend auf den Koordinaten eines Vektors bezüglich einer
Basis die Koordinaten desselben Vektors bezüglich einer anderen Basis zu berechnen.

# Vektorkoordinatentransformation
\small
\begin{definition}[Orthogonalprojektion]
$x$ und $q$ seien Vektoren im Euklidischen Vektorraum $\mathbb{R}^m$. Dann ist die
\textit{Orthogonalprojektion von $x$ auf $q$} definiert als der Vektor
\begin{equation}
\tilde{x} = aq \mbox{ mit } a := \frac{q^T x}{q^T q},
\end{equation}
wobei der Skalar $a$ \textit{Projektionsfaktor} genannt wird.
\end{definition}

\footnotesize
Bemerkungen
\begin{itemize}
\item Per definition ist  $\tilde{x} = aq$ mit $a \in \mathbb{R}$ der Punkt in Richtung von $q$ der $x$ am nähesten ist.
\item Diese minimierte Distanzeigenschaft impliziert die Orthogonalität von $q$ und $x - \tilde{x}$.
\item Die Formel von $a$ folgt direkt aus der Orthogonalität von $x - \tilde{x}$ und $q$, da gilt
\begin{equation*}
q^T(x - \tilde{x}) = 0
\Leftrightarrow
q^T(x - aq) = 0
\Leftrightarrow
q^Tx - aq^Tq = 0
\Leftrightarrow
a = \frac{q^Tx}{q^Tq}.
\end{equation*}
\item Wenn $q$ die Länge $||q|| = \sqrt{q^Tq} = 1$ hat, dann gilt $a = \frac{q^T x}{||q||^2} = q^T x$.
\end{itemize}

# Vektorkoordinatentransformation
Orthogonalprojektion

```{r, echo = FALSE, out.width = "60%"}
knitr::include_graphics("4_Abbildungen/mvda_4_orthogonale_vektorprojektion.pdf")
```

# Vektorkoordinatentransformation
\footnotesize
\begin{theorem}[Vektorkoordinaten bezüglich einer Orthogonalbasis]
\justifying
\normalfont
Es sei $x \in \mathbb{R}^m$ und es sei $B := \{q_1,...,q_m\}$ eine Orthonormalbasis
von von $\mathbb{R}^m$. Dann ergeben sich für $i = 1,...,m$ die Koordinaten $a_i$ in
der Basisdarstellung von $x$ bezüglich $B$ als die Projektionsfaktoren
\begin{equation}
a_i = x^T q_i
\end{equation}
in der Orthogonalprojektion von $x$ auf $q_i$. Äquivalent ist die
Basisdarstellung von $x$ bezüglich $B$ gegeben durch
\begin{equation}
x = \sum_{i=1}^m (x^T q_i)q_i.
\end{equation}
\end{theorem}

\footnotesize
\underline{Beweis}

Für $i = 1,...,m$ gilt
\begin{equation}
x = \sum_{j=1}^m a_j q_j
\Leftrightarrow
q_i^T x = q_i^T \sum_{j=1}^m a_j q_j
\Leftrightarrow
q_i^T x = \sum_{j=1}^m a_j q_i^Tq_j
\Leftrightarrow
q_i^T x = a_i
\Leftrightarrow
a_i = x^T q_i.
\end{equation}
$\hfill \Box$

# Vektorkoordinatentransformation
\footnotesize
\begin{theorem}[Vektorkoordinatentransformation]
\justifying
\normalfont
$B_v := \{v_1,...,v_m\}$ und $B_w := \{w_1,...,w_m\}$ seien zwei Orthonormalbasen
eines Vektorraums. $A \in \mathbb{R}^{m \times m}$ sei die Matrix, die durch die
spaltenweise Konkatenation der Koordinaten der Vektoren in $B_w$ in der Basisdarstellung
bezüglich der Basis $B_v$ ergibt. Dann können die Koordinaten $x_i, i = 1,...,m$
eines Vektors $x$ bezüglich der Basis $B_v$ in die Koordinaten $\tilde{x}_1,...,\tilde{x}_m$
des Vektors bezüglich der Basis $B_w$  durch
\begin{equation}
\tilde{x} = A^T x
\end{equation}
transformiert werden. Analog können die Koordinaten $\tilde{y}_1,...,\tilde{y}_m$
des Vektors hinsichtlich der Basis $B_w$ in die Koordinaten $y_1,...,y_m$ des
Vektors hinsichtlich $B_v$ durch
\begin{equation}
x = A \tilde{x}.
\end{equation}
transformiert werden.
\end{theorem}


\footnotesize
Bemerkungen

* \justifying Das Theorem erlaubt die Berechnung von Vektorkoordinaten bezüglich einer anderen Orthonormalbasis.
* Für die Berechnung muss zunächst die Matrix $A$ gebildet und dann (nur) entsprechend multipliziert werden.
* Wir verzichten auf einen Beweis und demonstrieren das Theorem an einem Beispiel.

\small
\center
\textbf{Ein Vektor wird hier als  fester Punkt in $\mathbb{R}^m$ betrachtet; die Komponenten (Zahlen) des Vektors werden dagegen nur als Koordinaten bezüglich einer spezifischen Basis interpretiert!}

# Vektorkoordinatentransformation
\textcolor{darkblue}{Beispiel}

```{r, echo = FALSE, out.width = "100%"}
knitr::include_graphics("4_Abbildungen/mvda_4_vektorkoordinatentransformation.pdf")
```
\center
\vspace{1mm}
\small
\textbf{Man beachte, dass $x$ and $\tilde{x}$ am selben Ort in $\mathbb{R}^2$ liegen!}


# Vektorkoordinatentransformation
\setstretch{1.2}
\textcolor{darkblue}{Beispiel}

\footnotesize
Wir nehmen an, dass wir die Koordinaten von $x = (1/3, 2/3)^T \in \mathbb{R}^2$
hinsichtlich der kanonischen Orthonormalbasis $B_v :=\{e_1,e_2\}$ in die Koordinaten
bezüglich der Basis
\begin{equation}
B_w :=
\left\lbrace
\begin{pmatrix}
\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}}
\end{pmatrix},
\begin{pmatrix}
-\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}}
\end{pmatrix}
\right\rbrace
\end{equation}
transformieren wollen. Die Basisdarstellungen der in Vektoren $B_w$ bezüglich der Basisvektoren in $B_v$ sind
\begin{equation}
\begin{pmatrix}
\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}}
\end{pmatrix}
=
a_{11}
\begin{pmatrix}
1 \\ 0
\end{pmatrix}
+
a_{21}
\begin{pmatrix}
0 \\ 1
\end{pmatrix}
\mbox{ and }
\begin{pmatrix}
-\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}}
\end{pmatrix}
=
a_{12}
\begin{pmatrix}
1 \\ 0
\end{pmatrix}
+
a_{22}
\begin{pmatrix}
0 \\ 1
\end{pmatrix}.
\end{equation}
Die Projektionsfaktoren der Orthogonalprojektionen der Vektoren in $B_w$ auf die
Vektoren in $B_v$ sind
\begin{equation}
a_{11} =  \frac{1}{\sqrt{2}},
a_{21} =  \frac{1}{\sqrt{2}},
a_{12} = -\frac{1}{\sqrt{2}},
a_{22} =  \frac{1}{\sqrt{2}}.
\end{equation}
Die Transformationsmatrix $A \in \mathbb{R}^{m \times m}$ in obigem Theorem ergibt sich also zu
\begin{equation}
A =
\begin{pmatrix}
a_{11} & a_{12} \\
a_{21} & a_{22} \\
\end{pmatrix}
=
\begin{pmatrix}
\frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\
\frac{1}{\sqrt{2}} &  \frac{1}{\sqrt{2}} \\
\end{pmatrix}.
\end{equation}
Die Vektorkoordinatentransformation von $x \in \mathbb{R}^2$ ergibt sich also zu
\begin{equation}
\tilde{x}
= A^T x
= \begin{pmatrix}
\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} 	\\
-\frac{1}{\sqrt{2}} &  \frac{1}{\sqrt{2}} 	\\
\end{pmatrix}
\begin{pmatrix}
\frac{1}{3} \\
\frac{2}{3}
\end{pmatrix}
\approx
\begin{pmatrix}
0.70 \\
0.23
\end{pmatrix}.
\end{equation}


#
\vfill
\setstretch{2.4}
\large
Vektorkoordinatentransformation

**Definition und Theorem**

Singulärwertzerlegung

Datenkompression

Exploratorische Faktorenanalyse 

Selbstkontrollfragen
\vfill

# Definition und Theorem
\footnotesize
\begin{definition}[Hauptkomponentenanalyse]
\justifying
$\mathbb{C}(X)$ sei die Kovarianzmatrix eines $m$-dimensionalen Zufallsvektors $X$.
Dann heißt die orthonormale Zerlegung
\begin{equation}
\mathbb{C}(X) = Q \Lambda Q^T,
\end{equation}
wobei
\begin{itemize}
\item $Q \in \mathbb{R}^{m\times m}$ die Matrix der spaltenweisen Konkatenation der Eigenvektoren  von $\mathbb{C}(X)$ ist und
\item $\Lambda \in \mathbb{R}^{m \times m}$ die Diagonalmatrix der zugehörigen Eigenwerte bezeichnen,
\end{itemize}
die \textit{Hauptkomponentenanalyse} von $\mathbb{C}(X)$ und die Spalten von $Q$ heißen die \textit{Hauptkomponenten}
von $\mathbb{C}(X)$. Der $m$-dimensionale Zufallsvektor
\begin{equation}
\tilde{X} = Q^T X
\end{equation}
heißt \textit{PCA-transformierter Zufallsvektor}.
\end{definition}

\footnotesize
Bemerkungen

* Man spricht auch von der Hauptkomponentenanalyse/den Hauptkomponenten von $X$.

# Definition und Theorem
\footnotesize
\begin{theorem}[Hauptkomponentenanalyse]
\normalfont
\justifying
$\mathbb{C}(X) \in \mathbb{R}^{m \times m}$ sei die Kovarianzmatrix eines
$m$-dimensionalen Zufallsvektors $X$, es sei $\mathbb{E}(X) = 0_m$ und es sei
\begin{equation}
\mathbb{C}(X) = Q \Lambda Q^T,
\end{equation}
die Hauptkomponentenanalyse von $\mathbb{C}(X)$. Dann gelten
\begin{itemize}
\justifying
\item[(1)] Die Spalten von $Q$ bilden eine Orthonormalbasis von $\mathbb{R}^m$.
\item[(2)] Multiplikation mit $Q^T$ transformiert die kanonischen Koordinaten von $X$ in Koordinaten bezüglich der Hauptkomponenten von $\mathbb{C}(X)$.
\item[(3)] Die Kovarianzmatrix des PCA-transformierten Zufallsvektors ist die Diagonalmatrix $\Lambda$.
\item[(4)] In dem Koordinatensystem, das von den Hauptkomponenten von $\mathbb{C}(X)$ aufgespannt wird, gilt
\begin{equation}
\mathbb{V}(\tilde{X}_i) = \lambda_i \mbox{ für } i = 1,...,m
\mbox{ und }
\mathbb{C}(\tilde{X}_i, \tilde{X}_j) = 0 \mbox{ für } i \neq j, 1 \le i,j \le m.
\end{equation}
\end{itemize}
\end{theorem}



# Definition und Theorem
\footnotesize
\underline{Beweis}

\noindent (1) \justifying Mit dem Theorem zu den Eigenschaften von Basen aus Einheit
(1) Vektoren gilt, dass jede Menge von $m$ linear unabhängigen Vektoren Basis eines
$m$-dimensionalen Vektorraums ist. Die Spalten $q_1,...q_m \in \mathbb{R}^{m}$ von $Q$ sind $m$ orthonormale Vektoren und damit
insbesondere auch linear unabhängig, denn für $i = 1,...,m$ gilt
\begin{align}
\begin{split}
                a_1q_1 + a_2q_2 + \cdots + a_mq_m        & = 0_m          \\
\Leftrightarrow (a_1q_1 + a_2q_2 + \cdots + a_mq_m)^T    & = 0_m^T        \\
\Leftrightarrow (a_1q_1 + a_2q_2 + \cdots + a_mq_m)^Tq_i & = 0_m^Tq_i    \\
\Leftrightarrow \sum_{j = 1}^m a_jq_j^Tq_i & = 0                          \\
\Leftrightarrow a_i  & = 0.
\end{split}
\end{align}
Es ist also $a_i = 0$ für $i = 1,...,m$ und die einzige Repräsentation des Nullelements $0_m$
durch eine Linearkombination der Spalten von $Q$ ist die triviale Repräsentation.
Die Spalten von $Q$ sind also $m$ unabhängige Vektoren und damit eine Basis von $\mathbb{R}^m$.
Da die Spalten von $Q$ auch orthonormal sind, bilden sie eine Orthonormalbasis von $\mathbb{R}^m$.


# Definition und Theorem
\footnotesize
\underline{Beweis (fortgeführt)}

\noindent (2) Wir betrachten das Theorem zur Vektorkoordinatentransformation
aus dieser Einheit und setzen $B_v := \{e_1,...,e_m\}$ und $B_w := \{q_1,...q_m\}$
mit den Spalten $q_1,...,q_m \in \mathbb{R}^{m}$ von $Q$. Dann gilt, dass
$Q \in \mathbb{R}^{m \times m}$ die Matrix ist, die sich durch die spaltenweise
Konkatenation der Koordinaten der Vektoren in $B_w$ in der Basisdarstellung
bezüglich der Basis $B_v$ ergibt, denn für $i = 1,...,m$ gilt, dass die Basisdarstellung
von $q_i$ bezüglich der kanonischen Basis $B_v$ gegeben ist durch
\begin{equation}
q_i
= \sum_{j=1}^m (q_i^Te_j)e_j
= \sum_{j=1}^m q_{i_j} e_j = q_i.
\end{equation}
Äquivalent ist natürlich jeder Vektor $q \in \mathbb{R}^m$ schon immer identisch mit der
Basisdarstellung von $q$ bezüglich der kanonischen Basis. Damit folgt aber mit
Theorem zur Vektorkoordinatentransformation direkt, dass der PCA-transfomierte
Zufallsvektor
\begin{equation}
\tilde{X} = Q^T X
\end{equation}
aus den Koordinaten des Vektors bezüglich der Hauptkomponenten von $\mathbb{C}(X)$
besteht.


\noindent (3) Wir erinnern zunächst daran, dass die inverse Matrix einer orthogonalen
Matrix $Q$ durch $Q^T$ gegeben ist (vgl. Einheit (2) Definition symmetrischer,
diagonaler, und orthogonaler Matrize). Mit  $QQ^T = Q^TQ = I_m$ gilt dann, dass
\begin{equation}
\mathbb{C}(X) = Q \Lambda Q^T
\Leftrightarrow
Q^T\mathbb{C}(X)Q = Q^TQ \Lambda Q^T Q
\Leftrightarrow
Q^T\mathbb{C}(X)Q = \Lambda.
\end{equation}

# Definition und Theorem
\footnotesize
\vspace{2mm}
\underline{Beweis (fortgeführt)}

Weiterhin gilt, dass mit $\mathbb{E}(X) = 0_m$ die Kovarianzmatrix von $X$ gegeben ist durch
(vgl. Einheit (3) Definition der Kovarianzmatrix)
\begin{equation}
\mathbb{C}(X)
= \mathbb{E}\left(\left(X - \mathbb{E}(X)\right) \left(X - \mathbb{E}(X)\right)^T\right)
= \mathbb{E}\left(XX^T\right).
\end{equation}
Damit ergibt sich für die Kovarianzmatrix des PCA-transformierte Vektors $\tilde{X} = Q^TX$ aber, dass
\begin{align}
\begin{split}
\mathbb{C}(\tilde{X})
& = \mathbb{E}\left(\left(\tilde{X} - \mathbb{E}(\tilde{X})\right) \left(\tilde{X} - \mathbb{E}(\tilde{X})\right)^T\right) \\
& = \mathbb{E}\left(\left(Q^TX - \mathbb{E}(Q^TX)\right) \left(Q^TX - \mathbb{E}(Q^TX)\right)^T\right) \\
& = \mathbb{E}\left(\left(Q^TX - Q^T\mathbb{E}(X)\right) \left(Q^TX - Q^T\mathbb{E}(X)\right)^T\right) \\
& = \mathbb{E}\left((Q^TX)(Q^TX)^T\right) \\
& = Q^T\mathbb{E}\left(XX^T\right)Q \\
& = Q^T\mathbb{C}(X)Q \\
& = \Lambda.
\end{split}
\end{align}

\noindent (4) Die Koordinaten von $\tilde{X}$ entsprechen den Koordinaten von
$X$ in dem Koordinatensystem, dass von den Hauptkomponenten $q_1,...,q_m$ von
$\mathbb{C}(X)$ aufgespannt wird. Mit $\mathbb{C}(\tilde{X}) = \Lambda$ folgt
Aussage (4) dann direkt mit der Definition der Kovarianzmatrix in Einheit (3).
$\hfill \Box$


# Definition und Theorem
\footnotesize
Bemerkungen
\begin{itemize}
\itemsep4mm
\justifying
\item Die Eigenwerte $\lambda_1,...,\lambda_m$ von $\mathbb{C}(X)$ sind die Varianzen von $\tilde{X}_1,...,\tilde{X}_m$.
\item Bei Annahme von $\lambda_1 > \lambda_2 > \cdots > \lambda_m$ mit zugehörigen Eigenvektoren $q_1, ...,q_m$ gilt
\begin{equation}
\mathbb{V}(\tilde{X}_1) > \mathbb{V}(\tilde{X}_2) > \cdots > \mathbb{V}(\tilde{X}_m)
\Leftrightarrow
\mathbb{V}(q_1^T X)     > \mathbb{V}(q_2^T X)     > \cdots > \mathbb{V}(q_m^T X)
\end{equation}
\item Die paarweise nicht-identischen Kovarianzen der Komponenten von $\tilde{X}$ sind Null.
\begin{itemize}
\justifying
\begin{footnotesize}
\item[$\Rightarrow$] Die Komponenten von $\tilde{X}$ sind unkorreliert.
\item[$\Rightarrow$] Die Komponenten von $\tilde{X}$ repräsentieren keine redundante Information.
\end{footnotesize}
\end{itemize}
\item $q_1^T X$ maximiert die Varianz der unkorrelierten Linearkombinationen der Komponenten von $X$.
\end{itemize}

# Definition und Theorem
\footnotesize
\begin{definition}[Hauptkomponentenanalyse eines Datensatzes]
\justifying
$Y \in \mathbb{R}^{m \times n}$ sei ein Datensatz aus $n$ unabhängigen
Realisierungen eines $m$-dimensionalen Zufallsvektors und es sei $C \in
\mathbb{R}^{m \times m}$ die Stichprobenkovarianzmatrix des Datensatzes.
Dann heißt die Orthonormalzerlegung
\begin{equation}
C = Q\Lambda Q^T
\end{equation}
wobei
\begin{itemize}
\item $Q \in \mathbb{R}^{m \times m}$ die spaltenweise Konkatenation der Eigenvektoren von $C$ ist und
\item $\Lambda \in \mathbb{R}^{m \times m}$ die Diagonalmatrix der zugehörigen Eigenwerten bezeichnen,
\end{itemize}
die \textit{Hauptkomponentenanalyse von $C$} und die Spalten von $Q$ heißen die
\textit{Hauptkomponenten von $C$}. Der $m \times n$-dimensionale Datensatz
\begin{equation}
\tilde{Y} = Q^T Y
\end{equation}
heißt \textit{PCA-transformierter Datensatz}.
\end{definition}

\footnotesize
Bemerkungen

* Man spricht auch von der Hauptkomponentenanalyse/den Hauptkomponenten des Datensatzes $Y$.

# Definition und Theorem
\footnotesize
\begin{theorem}[Hauptkomponentenanalyse eines Datensatzes]
\normalfont
\justifying
$C \in \mathbb{R}^{m \times m}$ sei die Stichprobenkovarianzmatrix eines
Datensatzes $Y \in \mathbb{R}^{m \times n}$ und es sei
\begin{equation}
C = Q \Lambda Q^T,
\end{equation}
die Hauptkomponentenanalyse von $C$. Dann gelten
\begin{itemize}
\justifying
\item[(1)] Die Spalten von $Q$ bilden eine Orthonormalbasis von $\mathbb{R}^m$.
\item[(2)] Multiplikation mit $Q^T$ transformiert die kanonischen Koordinaten der Spalten von $Y$ in Koordinaten bezüglich der Hauptkomponenten von $C$.
\item[(3)] Die Stichprobenkovarianzmatrix des PCA-transformierten Datensatzes ist die Diagonalmatrix $\Lambda$.
\item[(4)] In dem Koordinatensystem, das von den Hauptkomponenten von $C$ aufgespannt wird, gilt
\begin{equation}
S^2(\tilde{Y}_i) = \lambda_i \mbox{ für } i = 1,...,m
\mbox{ und }
C(\tilde{Y}_i, \tilde{Y}_j) = 0 \mbox{ für } i \neq j, 1 \le i,j \le m.
\end{equation}
\end{itemize}
wobei $S^2(\tilde{Y}_i)$ die Stichprobenvarianz der $i$ten Komponente des Datensatzes
und $C(\tilde{Y}_i, \tilde{Y}_j)$ die Stichprobenkovarianz der $i$ten und $j$ten
Komponente des Datensatzes bezeichnen.
\end{theorem}

Bemerkungen

* Der Beweis ergibt sich in Analogie zum Beweis Theorems zur Hauptkomponentenanalyse
* Wir verzichten aus eine Ausformulierung des Beweises.

# Definition und Theorem
\textcolor{darkblue}{Hauptkomponentenanalyse eines simulierten Datensatzes}

\small
Datensatzgeneration
\vspace{1mm}

\footnotesize
```{r message=FALSE}
# R Pakete
library(matrixcalc)                                  # Matrix Paket (is.positive.definite())
library(MASS)                                        # Multivariate Normalverteilung (mvrnorm())

# Simulationsparameter
set.seed(1)                                          # Reproduzierbare Randomisierung
m     = 5                                            # Datenpunktdimension
n     = 20                                           # Anzahl Realisierung
mu    = rep(0,m)                                     # Erwartungswertparameter
Sigma = matrix(runif(m^2), nrow = m)                 # zufällige Matrix
Sigma = 0.5*(Sigma+t(Sigma))                         # symmetrische Matrix
Sigma = Sigma + m*diag(m)                            # positiv definite Matrix
print(is.positive.definite(Sigma))                   # Positiv-Definitheits Check

# Datensatzgeneration
Y     = t(mvrnorm(n,mu,Sigma))
```

# Definition und Theorem
\textcolor{darkblue}{Hauptkomponentenanalyse eines simulierten Datensatzes}
\vspace{1mm}

\small
Hauptkomponentenanalyse durch Eigenanalyse
\footnotesize


```{r}
# Hauptkomponentenanalyse durch Eigenanalyse
I_n     = diag(n)                                     # Einheitsmatrix I_n
J_n     = matrix(rep(1,n^2), nrow = n)                # 1_{nn}
C       = (1/(n-1))*(Y %*% (I_n-(1/n)*J_n) %*% t(Y))  # Stichprobenkovarianzmatrix
D       = diag(1/sqrt(diag(C)))                       # Kov-Korr-Transformationsmatrix
R       = D %*% C %*% D                               # Stichprobenkorrelationsmatrix
EA      = eigen(C)                                    # Eigenanalyse von C
lambda  = EA$values                                   # Eigenwerte von C
Q       = EA$vectors                                  # Eigenvektoren von C
Y_tilde = t(Q) %*% Y                                  # Transformierter Datensatz

# Stichproben- und Korrelationsmatrix des transformierten Datensatzes
C_tilde = (1/(n-1))*(Y_tilde %*% (I_n-(1/n)*J_n) %*% t(Y_tilde))
D_tilde = diag(1/sqrt(diag(C_tilde)))
R_tilde = D_tilde %*% C_tilde %*% D_tilde
```


# Definition und Theorem
\textcolor{darkblue}{Hauptkomponentenanalyse eines simulierten Datensatzes}
\vspace{1mm}

\small
Hauptkomponentenanalyse durch Eigenanalyse
\footnotesize

```{r, echo = F, eval = F}

# Y und \tilde{Y} Visualisierung
library(plot.matrix)
graphics.off()
fdir        =  file.path(getwd(), "4_Abbildungen")
dev.new()
par(
family      = "sans",
mfcol       = c(2,1),
pty         = "m",
bty         = "l",
lwd         = 1,
las         = 1,
mgp         = c(2,1,0),
xaxs        = "i",
yaxs        = "i",
font.main   = 1,
cex         = 1,
cex.main    = 1.4)
plot(
Y,
breaks      = c(-5,5),
col         = topo.colors,
fmt.key     = "%.0f",
polygon.key = NULL,
axis.key    = NULL,
xlab        = "",
ylab        = "",
main        = TeX("$Y$"))
plot(
Y_tilde,
breaks      = c(-5,5),
col         = topo.colors,
fmt.key     = "%.0f",
polygon.key = NULL,
axis.key    = NULL,
xlab        = "",
ylab        = "",
main        = TeX("$\\tilde{Y}$"))
dev.copy2pdf(
file        = file.path(fdir, "mvda_4_pca_eigenanalyse_1.pdf"),
width       = 10,
height      = 7)
```


```{r, echo = FALSE, out.width = "80%"}
knitr::include_graphics("4_Abbildungen/mvda_4_pca_eigenanalyse_1.pdf")
```

# Definition und Theorem
\textcolor{darkblue}{Hauptkomponentenanalyse eines simulierten Datensatzes}
\vspace{1mm}

\small
Hauptkomponentenanalyse durch Eigenanalyse
\footnotesize

```{r, echo = F, eval = F}

# Q, \Lambda, C, \tilde{C}, R, \tilde{R} Visualisierung
library(plot.matrix)
graphics.off()
fdir        =  file.path(getwd(), "4_Abbildungen")
dev.new()
par(
family      = "sans",
mfcol       = c(2,3),
pty         = "m",
bty         = "l",
lwd         = 1,
las         = 1,
mgp         = c(2,1,0),
xaxs        = "i",
yaxs        = "i",
font.main   = 1,
cex         = 1,
cex.main    = 1.6)

# Q und \Lambda
plot(
Q,
col         = topo.colors,
digits      = 2,
key         = NULL,
cex         = 0.8,
polygon.key = NULL,
axis.key    = NULL,
xlab        = "",
ylab        = "",
main        = TeX("$Q$"))
plot(
diag(lambda),
col         = topo.colors,
digits      = 2,
key         = NULL,
cex         = 0.8,
polygon.key = NULL,
axis.key    = NULL,
xlab        = "",
ylab        = "",
main        = TeX("$\\Lambda$"))

# C und \tilde{C}
C_tilde[C_tilde < 0.001] = 0
plot(
C,
col         = topo.colors,
digits      = 2,
key         = NULL,
cex         = 0.8,
polygon.key = NULL,
axis.key    = NULL,
xlab        = "",
ylab        = "",
main        = TeX("$C$"))
plot(
C_tilde,
col         = topo.colors,
digits      = 2,
key         = NULL,
cex         = 0.8,
polygon.key = NULL,
axis.key    = NULL,
xlab        = "",
ylab        = "",
main        = TeX("$\\tilde{C}$"))

# R und \tilde{R}
R_tilde[abs(C_tilde) < 0.001] = 0
plot(
R,
col         = topo.colors,
digits      = 2,
key         = NULL,
cex         = 0.8,
polygon.key = NULL,
axis.key    = NULL,
xlab        = "",
ylab        = "",
main        = TeX("$R$"))
plot(
R_tilde,
col         = topo.colors,
digits      = 2,
key         = NULL,
cex         = 0.8,
polygon.key = NULL,
axis.key    = NULL,
xlab        = "",
ylab        = "",
main        = TeX("$\\tilde{R}$"))


dev.copy2pdf(
file        = file.path(fdir, "mvda_4_pca_eigenanalyse_2.pdf"),
width       = 12,
height      = 8)
```


```{r, echo = FALSE, out.width = "80%"}
knitr::include_graphics("4_Abbildungen/mvda_4_pca_eigenanalyse_2.pdf")
```


#
\vfill
\large
\setstretch{2.4}
Vektorkoordinatentransformation

Definition

**Singulärwertzerlegung**

Datenkompression

Exploratorische Faktorenanalyse 

Selbstkontrollfragen

\vfill

# Singulärwertzerlegung
\small
\begin{definition}[Singulärwertzerlegung]
\justifying
$X \in \mathbb{R}^{m \times n}$ sei eine Matrix. Dann heißt die Zerlegung
\begin{equation}
X = USV^T,
\end{equation}
wobei $U \in \mathbb{R}^{m \times m}$ eine orthogonale matrix ist, $S \in \mathbb{R}^{m \times n}$
eine Diagonalmatrix ist und $V \in \mathbb{R}^{n \times n}$ eine orthogonale Matrix ist,
\textit{Singulärwertzerlegung (Singular Value Decomposition (SVD))} von $X$. Die
Diagonalelemente von  $S$ heißen die  \textit{Singulärwerte} von $X$.
\end{definition}

Bemerkungen
\begin{itemize}
\item Die Existenz der Singulärwertzerlegung folgt aus dem Spektralsatz der Linearen Algebra.
\item Singulärwertzerlegungen können in R mit  svd()  berechnet werden.
\end{itemize}


# Singulärwertzerlegung
\small
\begin{theorem}[Singulärwertzerlegung und Eigenanalyse]
\justifying
\normalfont
$X \in \mathbb{R}^{m \times n}$ sei eine Matrix und
\begin{equation}
X = USV^T
\end{equation}
sei ihre Singulärwertzerlegung. Dann gilt:
\begin{itemize}
\item Die Spalten von $U$ sind die Eigenvektoren von $XX^T$,
\item die Spalten von $V$ sind die Eigenvektoren von $X^TX$ und
\item die entsprechenden Singulärwerte sind die Quadratwurzeln der zugehörigen Eigenwerte.
\end{itemize}
\end{theorem}

Bemerkung

* Singulärwertzerlegung und Eigenanalyse sind eng verwandt.

# Singulärwertzerlegung
\footnotesize
\underline{Beweis}
\vspace{1mm}

Wir halten zunächst fest, dass mit
\begin{equation}
\left(XX^T\right)^T = XX^T \mbox{ and } \left(X^TX\right)^T = X^TX,
\end{equation}
$XX^T$ und $X^TX$ symmetrische Matrizen sind und somit Orthornomalzerlegungen haben.
Wir halten weiterhin fest, dass mit der Definition der Singulärwertzerlegung gelten,
dass sowohl
\begin{equation}
XX^T
= USV^T \left(U\Sigma V^T\right)^T
= USV^T V S^T U^T
= USSU^T
= U\Lambda U^T
\end{equation}
als auch
\begin{equation}
X^TX
= \left(USV^T\right)^T USV^T
= VS^T UUS^T V^T
= V\Lambda V^T
\end{equation}
ist, wobei wir $\Lambda := SS$ definiert haben. Weil das Produkt von Diagonalmatrizen
wieder eine Diagonalmatrix ist, ist $\Lambda$ eine Diagonalmatrix und per Definition
sind $U$ und $V$ orthogonale Matrizen. Wir haben also $XX^T$ und $X^TX$
in Form der Orthonormalzerlegungen
\begin{equation}
XX^T = U \Lambda U^T  \mbox{ and } X^TX = V \Lambda V^T
\end{equation}
geschrieben und damit ist alles gezeigt.

$\hfill \Box$

# Singulärwertzerlegung
\footnotesize
\begin{theorem}[Datenhauptkomponentenanalyse durch Singulärwertzerlegung]
\justifying
\normalfont
$Y \in \mathbb{R}^{m \times n}$ sei ein Datensatz von $n$ unabhängigen Realisierungen
eines $m$-dimensionalen Zufallsvektors. Weiterhin sei
\begin{equation}
\frac{1}{\sqrt{n-1}}Y_c = USV^T
\end{equation}
die Singulärwertzerlegung des skalierten und zentrierten Datenmatrix. Dann sind
die Spalten von $U$ die Eigenvektoren der Stichprobenkovarianzmatrix des Datensatzes
$Y$ und  die quadrierten Singulärwerte sind die zugehörigen Eigenwerte.
\end{theorem}

\underline{Beweis}

Nach Definition der Singulärwertzerlegung sind die Spalten von $U$ die Eigenvektoren von
\begin{equation}
\frac{1}{\sqrt{n-1}} Y_c \frac{1}{\sqrt{n-1}} Y_c^T = \frac{1}{n-1}Y_c Y_c^T =: C,
\end{equation}
und damit identisch mit den Eigenvektoren der Stichprobenkovarianzmatrix. Weil die
Singulärwerte die Quadratwurzeln der zugehörigen Eigenwerte sind, sind ihre
quadrierten Werte identisch zu den zugehörigen Eigenwerten.

$\hfill \Box$

\center
\textbf{Eine PCA kann durch Eigenanalyse der Stichprobenkovarianzmatrix berechnet werden}

\textbf{Eine PCA kann auch durch Singulärwertzerlegung der skaliert-zentrierten Datenmatrix berechnet werden}


# Singulärwertzerlegung
\textcolor{darkblue}{Hauptkomponentenanalyse eines simulierten Datensatzes}
\vspace{1mm}

\small
Hauptkomponentenanalyse durch Singulärwertzerlegung
\vspace{2mm}

\footnotesize
```{r}
# Hauptkomponentenanalyse durch Singulärwertzerlegung
Y_sc    = (1/sqrt(n-1))*(Y-as.matrix(rowMeans(Y)) %*% rep(1,n)) # skaliert-zentrierter Datensatz
SWD     = svd(Y_sc)                                             # Singulärwertzerlegung
U       = SWD$u                                                 # Eigenvektoren von C
s       = SWD$d^2                                               # Eigenwerte von C
Y_tilde = t(U) %*% Y                                            # Transformierter Datensatz

# Stichproben- und Korrelationsmatrix des transformierten Datensatzes
C_tilde = (1/(n-1))*(Y_tilde %*% (I_n-(1/n)*J_n) %*% t(Y_tilde))
D_tilde = diag(1/sqrt(diag(C_tilde)))
R_tilde = D_tilde %*% C_tilde %*% D_tilde
```


```{r, echo = F, eval = F}

# Q,U, \Lambda, S Visualisierung
library(plot.matrix)
graphics.off()
fdir        =  file.path(getwd(), "4_Abbildungen")
dev.new()
par(
family      = "sans",
mfcol       = c(2,2),
pty         = "m",
bty         = "l",
lwd         = 1,
las         = 1,
mgp         = c(2,1,0),
xaxs        = "i",
yaxs        = "i",
font.main   = 1,
cex         = 1,
cex.main    = 1.8)

# Q und \Lambda
plot(
Q,
col         = topo.colors,
digits      = 2,
key         = NULL,
cex         = 0.8,
polygon.key = NULL,
axis.key    = NULL,
xlab        = "",
ylab        = "",
main        = TeX("$Q$"))
plot(
diag(lambda),
col         = topo.colors,
digits      = 2,
key         = NULL,
cex         = 0.8,
polygon.key = NULL,
axis.key    = NULL,
xlab        = "",
ylab        = "",
main        = TeX("$\\Lambda$"))

# U und S
plot(
U,
col         = topo.colors,
digits      = 2,
key         = NULL,
cex         = 0.8,
polygon.key = NULL,
axis.key    = NULL,
xlab        = "",
ylab        = "",
main        = TeX("$U$"))
plot(
diag(s),
col         = topo.colors,
digits      = 2,
key         = NULL,
cex         = 0.8,
polygon.key = NULL,
axis.key    = NULL,
xlab        = "",
ylab        = "",
main        = TeX("$S$"))

dev.copy2pdf(
file        = file.path(fdir, "mvda_4_pca_svd.pdf"),
width       = 9,
height      = 9)
```

# Singulärwertzerlegung
\textcolor{darkblue}{Hauptkomponentenanalyse eines simulierten Datensatzes}
\vspace{1mm}

\small
Hauptkomponentenanalyse durch Singulärwertzerlegung
\vspace{1mm}
```{r, echo = FALSE, out.width = "55%"}
knitr::include_graphics("4_Abbildungen/mvda_4_pca_svd.pdf")
```

#
\vfill
\setstretch{2.4}
\large
Vektorkoordinatentransformation

Definition

Singulärwertzerlegung

**Datenkompression**

Exploratorische Faktorenanalyse 

Selbstkontrollfragen

\vfill

# Datenkompression
\textcolor{darkblue}{Überblick}
\small
\setstretch{2}

* Datenkompression entspricht einer Reduktion der Dimension $m$ von Daten.

* Im Rahmen der prädiktiven Modellierung wird PCA zur *Dimensionsreduktion* eingesetzt.

* Ziel ist es hier, dem Undersampling hochdimensionaler Datenräume entgegen zu wirken.

* Dimensionsreduktion entspricht dem Verwerfen von $k < m$ Komponenten von $\tilde{Y}$.

* Wahl von Komponenten mit hohen Eigenwerten hält den *Datenrekonstruktionsfehler* klein.

# Datenkompression
\small
\begin{definition}[Dimensionsreduzierter Datensatz]
\justifying
$Y \in \mathbb{R}^{m \times n}$ sei ein Datensatz,
\begin{equation}
C = \frac{1}{n-1} \left(Y\left(I_n  - \frac{1}{n} 1_{nn}\right) Y^T\right) \in \mathbb{R}^{m \times m}
\end{equation}
sei die zugehörige Stichprobenkovarianzmatrix,
\begin{equation}
C = Q\Lambda Q^T
\end{equation}
sei die Hauptkomponentenanalyse von $C$ und es gelte $\lambda_1 > \lambda_2 > \cdots > \lambda_m$
für die Diagonalelemente von $\Lambda$. Schließlich sei für $k \le m$ $Q_k$ die Matrix, die
aus $Q$ durch Streichen der Spalten $k + 1,...,m$ entsteht. Dann heißt
\begin{equation}
\tilde{Y}_k = Q^T_k Y \in \mathbb{R}^{k \times n}
\end{equation}
\textit{PCA-dimensionsreduzierter Datensatz}.
\end{definition}

\footnotesize
Bemerkung

* $\tilde{Y}_k = Q_k^T Y$ entspricht einer $(k \times n) = (k \times m)\cdot(m \times n)$ Matrixmultiplikation
* $\tilde{Y}_k$ ist der Datensatz, der aus $\tilde{Y}$ durch Streichen der ($k + 1$)-ten bis $m$-ten Zeile ensteht.


```{r, echo = F, eval = F}

# Q_5, ..., Q_1
library(plot.matrix)
graphics.off()
fdir        =  file.path(getwd(), "4_Abbildungen")
dev.new()
par(
family      = "sans",
mfcol       = c(1,4),
pty         = "s",
bty         = "l",
lwd         = 1,
las         = 1,
mgp         = c(2,1,0),
xaxs        = "i",
yaxs        = "i",
font.main   = 1,
cex         = 1,
cex.main    = 1.5)

# Q_5,....,Q_1
labs        = list(TeX("$Q_5$"),
                   TeX("$Q_4$"),
                   TeX("$Q_3$"),
                   TeX("$Q_2$"),
                   TeX("$Q_1$"))
for(i in 2:5){
  # set entries columns NA for na.cell     = FALSE,
  Q_k  = Q
  if(i > 1){
    Q_k[, (ncol(Q)-i+2):ncol(Q)] = NA
  }
  plot(
  Q_k,
  na.cell     = FALSE,
  breaks      = c(-.7,.7),
  col         = topo.colors,
  digits      = 2,
  key         = NULL,
  cex         = 0.4,
  polygon.key = NULL,
  axis.key    = NULL,
  xlab        = "",
  ylab        = "",
  main        = labs[[i]])
}
dev.copy2pdf(
file        = file.path(fdir, "mvda_4_Q_k.pdf"),
width       = 12,
height      = 4)
```


# Datenkompression
\vspace{1mm}
\textcolor{darkblue}{Dimensionalitätsreduktion eines simulierten Datensatzes}

\small
Dimensionsreduzierte Datensätze


```{r, echo = F, eval = F}

# tilde{Y}_5, ..., \tilde{Y}_1
library(plot.matrix)
graphics.off()
fdir        =  file.path(getwd(), "4_Abbildungen")
dev.new()
par(
family      = "sans",
mfrow       = c(4,1),
pty         = "m",
bty         = "l",
lwd         = 1,
las         = 1,
mgp         = c(2,1,0),
xaxs        = "i",
yaxs        = "i",
cex         = 0.6,
cex.main    = 1.8)

# \tilde{Y}_5,....,\tilde{Y}_1
labs        = list(TeX("$\\tilde{Y}_4$"),
                   TeX("$\\tilde{Y}_3$"),
                   TeX("$\\tilde{Y}_2$"),
                   TeX("$\\tilde{Y}_1$"))

for(i in 1:4){

  # set entries in rows NA for na.cell = FALSE,
  Y_tilde_k  = Y_tilde
  Y_tilde_k[(nrow(Y_tilde)-i+1):nrow(Y_tilde), ] = NA
  plot(
  Y_tilde_k,
  border      = NA,
  col         = topo.colors,
  xlab        = "",
  ylab        = "",
  main        = labs[[i]],
  cex         = .1,
  fmt.key     = "%.0f",
  polygon.key = NULL,
  axis.key    = NULL)
}

dev.copy2pdf(
file        = file.path(fdir, "mvda_4_Y_tilde_k.pdf"),
width       = 10,
height      = 6)

```

```{r, echo = FALSE, out.width = "70%"}
knitr::include_graphics("4_Abbildungen/mvda_4_Q_k.pdf")
```
\vspace{-7mm}
```{r, echo = FALSE, out.width = "75%"}
knitr::include_graphics("4_Abbildungen/mvda_4_Y_tilde_k.pdf")
```



# Datenkompression

\small
\begin{definition}[Rekonstruierter Datensatz, Datenrekonstruktionsfehler]
$Y \in \mathbb{R}^{m \times n}$ sei ein Datensatz und für $k \le m$ sei
\begin{equation}
\tilde{Y}_k = Q_k^TY \in \mathbb{R}^{k \times n}
\end{equation}
ein PCA-dimensionsreduzierter Datensatz.
Dann heißt
\begin{equation}
Y_k = Q_k\tilde{Y}_k \in \mathbb{R}^{m \times n}
\end{equation}
\textit{rekonstruierter Datensatz} und
\begin{equation}
e = \Vert \mbox{vec}(Y - Y_k) \Vert \ge 0
\end{equation}
heißt \textit{Datenrekonstruktionsfehler}.
\end{definition}


\footnotesize
Bemerkungen

* $Y_k =Q_k \tilde{Y}_k$ entspricht einer $(m \times n) = (m \times k)\cdot(k \times n)$ Matrixmultiplikation
* Für $M \in \mathbb{R}^{m \times n}$ ist $\mbox{vec}(M) \in \mathbb{R}^{mn}$ der Vektor, der durch Stapeln der Spalten von $M$ entsteht.
* Für $k = m$ gilt $Q\tilde{Y}_k = QQ^TY = Y$ und damit $e = 0$.

# Datenkompression
\textcolor{darkblue}{Datensatzrekonstruktion und -rekonstruktionsfehler eines simulierten Datensatzes}

\small
Eigenwerte ("Scree-Plot") und Rekonstruktionsfehler

```{r, echo = F, eval = F}
graphics.off()
fdir        =  file.path(getwd(), "4_Abbildungen")
dev.new()
par(
family      = "sans",
mfcol       = c(1,2),
pty         = "m",
bty         = "l",
lwd         = 1,
las         = 1,
mgp         = c(2,1,0),
xaxs        = "i",
yaxs        = "i",
cex         = 1,
cex.main    = 1)

# Screeplot
plot(
lambda,
type = "b",
xlim = c(.5,5.5),
ylim = c(0,10),
ylab = "Eigenwert")

# Rekonstruktionsfehler
e   = rep(NaN,m)
for(k in 1:m){ 
  Q_k = Q[,1:k]
  e[k] = norm(Y - (Q_k %*% t(Q_k) %*% Y))
}

# Rekonstruktionsfehler
plot(
e,
type = "b",
xlim = c(.5,5.5),
ylim = c(-1, 13),
ylab = "Rekonstruktionsfehler (e)",
xlab = "Rekonstruierter Datensatz (k)")

dev.copy2pdf(
file        = file.path(fdir, "mvda_4_lambda_e.pdf"),
width       = 8,
height      = 4)

```

```{r, echo = FALSE, out.width = "100%"}
knitr::include_graphics("4_Abbildungen/mvda_4_lambda_e.pdf")
```


# Datenkompression

\textcolor{darkblue}{Datensatzrekonstruktion und -rekonstruktionsfehler eines simulierten Datensatzes}

Scree (engl.) Schutthalde

\vspace{2mm}

```{r, echo = FALSE, out.width = "60%"}
knitr::include_graphics("4_Abbildungen/mvda_4_scree.jpg")
```




# Datenkompression
\textcolor{darkblue}{Datensatzrekonstruktion und -rekonstruktionsfehler eines simulierten Datensatzes}

\small
Rekonstruierte Datensätze


```{r, echo = F, eval = F}

# tilde{Y}_5, ..., \tilde{Y}_1
library(plot.matrix)
graphics.off()
fdir        =  file.path(getwd(), "4_Abbildungen")
dev.new()
par(
family      = "sans",
mfrow       = c(5,1),
pty         = "m",
bty         = "l",
lwd         = 1,
las         = 1,
mgp         = c(2,1,0),
xaxs        = "i",
yaxs        = "i",
cex         = 0.3,
cex.main    = 0.5)

# \tilde{Y}_5,....,\tilde{Y}_1
labs        = list(TeX("$Y_1$"),
                   TeX("$Y_2$"),
                   TeX("$Y_3$"),
                   TeX("$Y_4$"),
                   TeX("$Y_5$"))

for(k in 1:5){
  Q_k = Q[,1:k]
  Y_k = Q_k %*% t(Q_k) %*% Y
  plot(
  Y_k,
  breaks      = c(-6,6),
  border      = NA,
  col         = topo.colors,
  xlab        = "",
  ylab        = "",
  main        = labs[[k]],
  cex.main    = 2,
  cex         = .1,
  fmt.key     = "%.0f",
  polygon.key = NULL,
  axis.key    = NULL)
}

dev.copy2pdf(
file        = file.path(fdir, "mvda_4_Y_k.pdf"),
width       = 5,
height      = 5)

```

```{r, echo = FALSE, out.width = "60%"}
knitr::include_graphics("4_Abbildungen/mvda_4_Y_k.pdf")
```

# Datenkompression
\textcolor{darkblue}{Datensatzrekonstruktion und -rekonstruktionsfehler eines simulierten Datensatzes}

\small
Originaldatensatz minus rekonstruierter Datensatz


```{r, echo = F, eval = F}

# tilde{Y}_5, ..., \tilde{Y}_1
library(plot.matrix)
graphics.off()
fdir        =  file.path(getwd(), "4_Abbildungen")
dev.new()
par(
family      = "sans",
mfrow       = c(5,1),
pty         = "m",
bty         = "l",
lwd         = 1,
las         = 1,
mgp         = c(2,1,0),
xaxs        = "i",
yaxs        = "i",
cex         = 0.3,
cex.main    = 0.5)

# \tilde{Y}_5,....,\tilde{Y}_1
labs        = list(TeX("$Y - Y_1$"),
                   TeX("$Y - Y_2$"),
                   TeX("$Y - Y_3$"),
                   TeX("$Y - Y_4$"),
                   TeX("$Y - Y_5$"))

for(k in 1:5){
  Q_k = Q[,1:k]
  Y_k = Q_k %*% t(Q_k) %*% Y
  plot(
  Y - Y_k,
  breaks      = c(-4,4),
  border      = NA,
  col         = topo.colors,
  xlab        = "",
  ylab        = "",
  main        = labs[[k]],
  cex.main    = 2,
  cex         = .1,
  fmt.key     = "%.0f",
  polygon.key = NULL,
  axis.key    = NULL)
}

dev.copy2pdf(
file        = file.path(fdir, "mvda_4_Y-Y_k.pdf"),
width       = 5,
height      = 5)

```

```{r, echo = FALSE, out.width = "60%"}
knitr::include_graphics("4_Abbildungen/mvda_4_Y-Y_k.pdf")
```

# Datenkompression
\textcolor{darkblue}{Featureselektion bei EEG Daten}

\normalsize
Wie werden visuelle Stimuli im Gehirn verarbeitet?

Wie entscheiden Menschen, ob sie ein Haus oder ein Gesicht wahrnehmen?

```{r, echo = FALSE, out.width = "80%"}
knitr::include_graphics("4_Abbildungen/mvda_4_neurosensorik.pdf")
```

$\rightarrow$ Allgemeine Psychologie, Biologische Psychologie, Kognitive Neurowissenschaften


# Datenkompression
\textcolor{darkblue}{Featureselektion bei EEG Daten}
\small
\setstretch{2.2}

* In der prädiktiven EEG Analyse werden mentale Zustände aus Raumzeitserien dekodiert.

* Dabei wird ein Klassifikationsalgorithmus anhand von Single-Trial-Daten trainiert.

* Oft ist die Datendimension (Elektroden $\times$ Perieventsamples) sehr viel höher als die Trialanzahl.

* Wegen des Curse of Dimensionality performen Classifier auf Rohdatensätzen nicht optimal.

* Im Rahmen der Featureselektion können redundante Features durch PCA entfernt werden.

* Featureselektion entspricht einer Dimensionsreduktion und kann Klassifikationsraten erhöhen.

* Wir visualisieren das Vorgehen exemplarisch für eine Single-Trial-Elektrodenraum-Zeitserie.

# Datenkompression

\textcolor{darkblue}{Featureselektion bei EEG Daten}
\small

Single-Trial Evoziertes Potential einer Elektrode 
\vspace{3mm}

```{r, echo = F, eval = F}
# install.packages("eegkit")            # R Paket für basale EEG Datenanalyse (https://cran.r-project.org/web/packages/eegkit/eegkit.pdf)
# install.packages("plot.matrix")       # R Paket für Matrixvisualisierunge   (https://cran.r-project.org/web/packages/plot.matrix/vignettes/plot.matrix.html)
library(eegkit)                         # EEG Funktionalität
library(plot.matrix)                    # Matrixvisualisierungsfunktionalität

# evoked potential EEG example data loading
data(eegdata)
eegdata   =  eegdata[which(eegdata$channel=="O2"),]
evp       =  tapply(eegdata$voltage,list(eegdata$time,eegdata$group),mean)


# single electrode space visualization
graphics.off()
fdir        =  file.path(getwd(), "4_Abbildungen")

dev.new()
eegtime(
seq(0,1000,length.out=256),
evp[,2],
ylim = c(-10,6),
main = "Elektrode O2",
flipvoltage = FALSE)

dev.copy2pdf(
file        = file.path(fdir, "mvda_4_eeg_O2.pdf"),
width       = 7,
height      = 4)

```

```{r, echo = FALSE, out.width = "80%"}
knitr::include_graphics("4_Abbildungen/mvda_4_eeg_O2.pdf")
```

# Datenkompression

\textcolor{darkblue}{Featureselektion bei EEG Daten}
\small

Single-Trial Evoziertes Potential aller Elektroden

```{r, echo = F, eval = F}
# install.packages("eegkit")            # R Paket für basale EEG Datenanalyse (https://cran.r-project.org/web/packages/eegkit/eegkit.pdf)
# install.packages("plot.matrix")       # R Paket für Matrixvisualisierung    (https://cran.r-project.org/web/packages/plot.matrix/vignettes/plot.matrix.html)
library(eegkit)                         # EEG Funktionalität
library(plot.matrix)                    # Matrixvisualisierungsfunktionalität

# evoked potential EEG example data loading
data(eegdata)
eeg         = eegdata[which(eegdata$group=="c"),]
evp         = tapply(eegdata$voltage,list(eegdata$time,eegdata$channel),mean)

# electrode space visualization
graphics.off()
fdir        =  file.path(getwd(), "4_Abbildungen")
dev.new()

eegtimemc(
seq(0, 1000, length.out=256),
evp,
colnames(evp),
ylim        = c(-12,12),
size        = c(0.4,0.2),
flipvoltage = FALSE)
dev.copy2pdf(
file        = file.path(fdir, "mvda_4_eeg_cap.pdf"),
width       = 20,
height      = 20)

```

```{r, echo = FALSE, out.width = "75%"}
knitr::include_graphics("4_Abbildungen/mvda_4_eeg_cap.pdf")
```

# Datenkompression
\vspace{2mm}
\textcolor{darkblue}{Featureselektion bei EEG Daten}
\small

Single-Trial Evoziertes Potential aller Elektroden in Matrixform
\vspace{2mm}

```{r, echo = F, eval = F}

# Transformation von eegkit Datensatz in Dataframe und .csv file
library(eegkit)
data(eegdata)
eeg            = eegdata[which(eegdata$group=="c"),]
eeg            = as.data.frame(t(tapply(eegdata$voltage, list(eegdata$time,eegdata$channel), mean)))
colnames(eeg)  = 1:256
rownames(eeg)  = 1:64
saveRDS(eeg, file = file.path(getwd(), "4_Daten", "eeg.csv"))

# Matrixvisualisierungspaket
library(plot.matrix)

# Daten
fname  = file.path(getwd(), "4_Daten", "eeg.csv")
Y      = as.matrix(readRDS(fname))

# Abbildungsparameter
par(
family      = "sans",
mfcol       = c(1,1),
pty         = "m",
bty         = "l",
lwd         = 1,
las         = 1,
mgp         = c(1,0,0),
xaxs        = "i",
yaxs        = "i",
font.main   = 1,
cex         = .7,
cex.main    = 1.5)
graphics.off()
fdir        =  file.path(getwd(), "4_Abbildungen")
dev.new()

# Matrixvisualisierung
plot(
Y,
border      = NA,
breaks      = 20,
col         = topo.colors(20),
key         = list(side =4, font = 2, cex.axis=0.75),
fmt.key     = "%.0f",
polygon.key = NULL,
axis.key    = NULL,
spacing.key = c(3,2,2),
xlab        = "Peristimulus EEG Sample",
ylab        = "Elektrode",
main        = TeX("$Y \\in R^{64 \\times 256}$")
)

# Abbildungsspeichern
dev.copy2pdf(
file        = file.path(fdir, "mvda_4_eeg_Y.pdf"),
width       = 10,
height      = 7)
```

```{r, echo = FALSE, out.width = "85%"}
knitr::include_graphics("4_Abbildungen/mvda_4_eeg_Y.pdf")
```

# Datenkompression
\textcolor{darkblue}{Featureselektion bei EEG Daten}
\small

Hauptkomponentenanalyse
\vspace{2mm}

\footnotesize
```{r}
# Laden der Daten
Y       = as.matrix(readRDS(file.path(getwd(), "4_Daten", "eeg.csv")))

# Hauptkomponentenanalyse durch Eigenanalyse
m       = nrow(Y)                                     # Datendimension (Anzahl Elektroden)
n       = ncol(Y)                                     # Datenpunktanzahl (Anzahl Time-Bins)
I_n     = diag(n)                                     # Einheitsmatrix I_n
J_n     = matrix(rep(1,n^2), nrow = n)                # 1_{nn}
C       = (1/(n-1))*(Y %*% (I_n-(1/n)*J_n) %*% t(Y))  # Stichprobenkovarianzmatrix
D       = diag(1/sqrt(diag(C)))                       # Kov-Korr-Transformationsmatrix
R       = D %*% C %*% D                               # Stichprobenkorrelationsmatrix
EA      = eigen(C)                                    # Eigenanalyse von C
lambda  = EA$values                                   # Eigenwerte von C
Q       = EA$vectors                                  # Eigenvektoren von C
Y_tilde = t(Q) %*% Y                                  # Transformierter Datensatz
```


# Datenkompression
\textcolor{darkblue}{Featureselektion bei EEG Daten}
\small

Stichprobenkovarianzmatrix und Stichprobenkorrelationsmatrix


```{r, echo = F, eval = F}
library(plot.matrix)
graphics.off()
fdir        =  file.path(getwd(), "4_Abbildungen")
dev.new()
par(
family      = "sans",
mfcol       = c(1,2),
pty         = "s",
bty         = "l",
lwd         = 1,
las         = 2,
mgp         = c(3,2,0),
xaxs        = "i",
yaxs        = "i",
font.main   = 1,
cex         = 1,
cex.main    = 3,
mar         = c(7, 7, 6, 5)) # bottom, left, top, right margin)
plot(
C,
breaks      = 20,
border      = NA,
key         = list(side = 4, font = 2, cex.axis = 1),
fmt.key     = "%.0f",
polygon.key = NULL,
axis.key    = NULL,
spacing.key = c(3,2,2),
col         = topo.colors,
cex         = 1,
xlab        = "Elektroden",
ylab        = "Elektroden",
main        = TeX("$C$"))
plot(
R,
breaks      = 20,
border      = NA,
key         = list(side = 4, font = 2, cex.axis = 1),
fmt.key     = "%.1f",
polygon.key = NULL,
axis.key    = NULL,
spacing.key = c(3,2,2),
col         = topo.colors,
cex         = 1,
xlab        = "Elektroden",
ylab        = "Elektroden",
main        = TeX("$R$"))
dev.copy2pdf(
file        = file.path(fdir, "mvda_4_eeg_C_R.pdf"),
width       = 18,
height      = 9)
```

```{r, echo = FALSE, out.width = "100%"}
knitr::include_graphics("4_Abbildungen/mvda_4_eeg_C_R.pdf")
```

# Datenkompression
\textcolor{darkblue}{Featureselektion bei EEG Daten}

\small
Eigenwerte ("Scree (engl. Schutthalde)-Plot") und Rekonstruktionsfehler

```{r, echo = F, eval = F}
graphics.off()
fdir        =  file.path(getwd(), "4_Abbildungen")
dev.new()
par(
family      = "sans",
mfcol       = c(1,2),
pty         = "m",
bty         = "l",
lwd         = 1,
las         = 1,
mgp         = c(2,1,0),
xaxs        = "i",
yaxs        = "i",
cex         = 1,
cex.main    = 1)

# Screeplot
max_lambda  = 64
plot(
lambda[1:max_lambda],
type = "l",
xlim = c(0,max_lambda),
ylim = c(-5,140),
ylab = "Eigenwert")

# Rekonstruktionsfehler
e   = rep(NaN,max_lambda)
for(k in 1:max_lambda){
  Q_k = Q[,1:k]
  e[k] = norm(Y - (Q_k %*% t(Q_k) %*% Y))
}
# Rekonstruktionsfehler
plot(
e,
type = "l",
ylab = "Rekonstruktionsfehler (e)",
xlab = "Rekonstruierter Datensatz (k)",
xlim = c(0, max_lambda),
ylim = c(-5,100))



dev.copy2pdf(
file        = file.path(fdir, "mvda_4_eeg_lambda_e.pdf"),
width       = 8,
height      = 4)


```


```{r, echo = FALSE, out.width = "100%"}
knitr::include_graphics("4_Abbildungen/mvda_4_eeg_lambda_e.pdf")
```



#
\vfill
\setstretch{2.4}
\large
Vektorkoordinatentransformation

Definition

Singulärwertzerlegung

Datenkompression

**Exploratorische Faktorenanalyse**

Selbstkontrollfragen

\vfill

# Exploratorische Faktorenanalyse
\setstretch{2}
\textcolor{darkblue}{Überblick}
\small


Faktorenanalyse (oder Faktoranalyse) ist ein Sammelbegriff für viele datenanalytische Verfahren.

Prinzipiell entsprechen "Faktoren" latenten Zufallsvariablen in probabilistischen Modellen.

Latente Zufallsvariablen sind nur indirekt beobachtbar.

In der Psychologie dienen latente Zufallsvariablen oft der Modellierung von "Konstrukten".

Wir betrachten probabilistische Modelle mit latenten Zufallsvariablen in (5) Faktorenanalyse.

"Exploratorische Faktorenanalyse (EFA)" ist eine intuitive Vorform des Latent-Variable-Modellings.

Im Wesentlichen entspricht EFA einer speziellen Interpretation einer Hauptkomponentenanalyse. 

Wir erläutern EFA hier anhand der Sedimentationshypothese der Persönlichkeitspsychologie.


# Exploratorische Faktorenanalyse
\setstretch{2}
\textcolor{darkblue}{Sedimentationshypothese (Lexikalischer Ansatz) der Persönlichkeitspsychologie}
\small

* Alle wichtigen Persönlichkeitseigenschaften sind durch Adjektive repräsentiert.
* Persönlichkeitsadjektive haben sich analog zu Persönlichkeitseigenschaften entwickelt
* Persönlichkeitsadjektive decken die relevanten individuellen Differenzen ab.
* $\Rightarrow$ Big-Five der Persönlichkeitspsychologie (OCEAN-Modell)

\normalsize
Datengeneration

\small
* 30 Proband:innen schätzen eine Person hinsichtlich des Zutreffens von Adjektiven ein.
* Neunstufige Skala (1: trifft überhaupt nicht zu, 9: trifft voll zu)
* Hochkorrelierte Ajdektive beschreiben eine "übergeordnete Persönlichkeitseigenschaften".

\vspace{2mm}
\footnotesize
\flushright
*Rudolf & Buse (2020) Multvariate Verfahren Kapitel 9* 

# Exploratorische Faktorenanalyse
```{r, echo = F, message = F}

# Einlesen des Datensatzes aus Rudolf & Buse (2019) Multivariate Verfahren
library("foreign")
Y = t(read.spss(file.path(getwd(), "4_Daten", "sedimentation.sav"), to.data.frame = T))

# Präprozessierung
Y = Y[2:nrow(Y),]                     # Entfernung der Proband:innennummern
a = c("angriffslustig",
      "penibel",
      "streitbar",
      "kämpferisch",
      "grimmig",
      "gründlich",
      "akkurat",
      "gewissenhaft",
      "kleinlich",
      "übergenau",
      "herausfordernd",
      "hitzig")
colnames(Y) = 1:30
rownames(Y) = a
```
\textcolor{darkblue}{Sedimentationshypothese (Lexikalischer Ansatz) der Persönlichkeitspsychologie}
\vspace{1mm}
\small

Datensatz (Proband:innen 1 bis 15)

\footnotesize
```{r, echo = F, message = F}
knitr::kable(Y[,1:15], "pipe")
```

\vspace{2mm}
\footnotesize
\flushright
*Rudolf & Buse (2020) Multvariate Verfahren Kapitel 9*

# Exploratorische Faktorenanalyse
\textcolor{darkblue}{Sedimentationshypothese (Lexikalischer Ansatz) der Persönlichkeitspsychologie}
\vspace{1mm}
\small

Datensatz (Proband:innen 16 bis 30)

\footnotesize
```{r, echo = F, message = F}
knitr::kable(Y[,16:30], "pipe")
```
\vspace{2mm}
\footnotesize
\flushright
*Rudolf & Buse (2020) Multvariate Verfahren Kapitel 9*

# Exploratorische Faktorenanalyse
\textcolor{darkblue}{Sedimentationshypothese (Lexikalischer Ansatz) der Persönlichkeitspsychologie}
\small

Datensatz

```{r, echo = F, eval = F}

# Y und \tilde{Y} Visualisierung
library(plot.matrix)
graphics.off()
fdir        =  file.path(getwd(), "4_Abbildungen")
dev.new()
par(
family      = "sans",
mfcol       = c(1,1),
mar         = c(5.1, 7, 4.1, 2.1), # bottom, left, top, right margin
pty         = "m",
bty         = "l",
lwd         = 1,
las         = 1,
mgp         = c(2,1,0),
xaxs        = "i",
yaxs        = "i",
font.main   = 1,
cex         = 1,
cex.main    = 1.8)
plot(
Y,
breaks      = 1:10,
col         = topo.colors,
digits      = 1,
cex         = 0.8,
fmt.key     = "%.0f",
fmt.cell     ="%.0f",
polygon.key = NULL,
axis.key    = NULL,
xlab        = "Proband:in",
ylab        = "",
main        = TeX("$Y$"))
dev.copy2pdf(
file        = file.path(fdir, "mvda_4_sedimentation_Y.pdf"),
width       = 12,
height      = 7)
```

```{r, echo = FALSE, out.width = "100%"}
knitr::include_graphics("4_Abbildungen/mvda_4_sedimentation_Y.pdf")
```

# Exploratorische Faktorenanalyse
\textcolor{darkblue}{Sedimentationshypothese (Lexikalischer Ansatz) der Persönlichkeitspsychologie}
\vspace{2mm}

\footnotesize
```{r}
# Hauptkomponentenanalyse durch Eigenanalyse
m       = nrow(Y)                                     # Variablenanzahl (Anzahl Adjektive)
n       = ncol(Y)                                     # Datenpunktanzahl (Anzahl Proband:innen)
I_n     = diag(n)                                     # Einheitsmatrix I_n
J_n     = matrix(rep(1,n^2), nrow = n)                # 1_{nn}
C       = (1/(n-1))*(Y %*% (I_n-(1/n)*J_n) %*% t(Y))  # Stichprobenkovarianzmatrix
D       = diag(1/sqrt(diag(C)))                       # Kov-Korr-Transformationsmatrix
R       = D %*% C %*% D                               # Stichprobenkorrelationsmatrix
EA      = eigen(C)                                    # Eigenanalyse von C
lambda  = EA$values                                   # Eigenwerte von C
Q       = EA$vectors                                  # Eigenvektoren von C
Y_tilde = t(Q) %*% Y                                  # Transformierter Datensatz

# Stichproben- und Korrelationsmatrix des transformierten Datensatzes
C_tilde = (1/(n-1))*(Y_tilde %*% (I_n-(1/n)*J_n) %*% t(Y_tilde))
D_tilde = diag(1/sqrt(diag(C_tilde)))
R_tilde = D_tilde %*% C_tilde %*% D_tilde
```




# Exploratorische Faktorenanalyse
\textcolor{darkblue}{Sedimentationshypothese (Lexikalischer Ansatz) der Persönlichkeitspsychologie}
\small

Stichprobenkovarianzmatrix und Stichprobenkorrelationsmatrix

```{r, echo = F, eval = F}
library(plot.matrix)
graphics.off()
fdir        =  file.path(getwd(), "4_Abbildungen")
dev.new()
par(
family      = "sans",
mfcol       = c(1,2),
pty         = "s",
bty         = "l",
lwd         = 1,
las         = 2,
mgp         = c(2,1,0),
xaxs        = "i",
yaxs        = "i",
font.main   = 1,
cex         = 1,
cex.main    = 3,
mar         = c(6, 7, 6, 5)) # bottom, left, top, right margin)
plot(
C,
col         = topo.colors,
digits      = 1,
key         = NULL,
cex         = 0.8,
polygon.key = NULL,
axis.key    = NULL,
xlab        = "",
ylab        = "",
main        = TeX("$C$"))
rownames(R) = a
colnames(R) = a
plot(
R,
col         = topo.colors,
digits      = 1,
key         = NULL,
cex         = 0.8,
polygon.key = NULL,
axis.key    = NULL,
xlab        = "",
ylab        = "",
main        = TeX("$R$"))
dev.copy2pdf(
file        = file.path(fdir, "mvda_4_sedimentation_C_R.pdf"),
width       = 16,
height      = 9)
```

```{r, echo = FALSE, out.width = "100%"}
knitr::include_graphics("4_Abbildungen/mvda_4_sedimentation_C_R.pdf")
```


# Exploratorische Faktorenanalyse
\textcolor{darkblue}{Sedimentationshypothese (Lexikalischer Ansatz) der Persönlichkeitspsychologie}

\small
Ladungen (= Komponenten) der Faktoren (= Eigenvektoren) mit den höchsten beiden Eigenwerten

\vspace{1mm}

\footnotesize
```{r}
# "Ladungen" der "Faktoren" mit den höchsten beiden Eigenwerten
L = Q[, 1:2]
```

```{r, echo = F}
rownames(L) = a
colnames(L) = c("Faktor 1", "Faktor 2")
knitr::kable(L, "pipe")
```

# Exploratorische Faktorenanalyse
\textcolor{darkblue}{Sedimentationshypothese (Lexikalischer Ansatz) der Persönlichkeitspsychologie}

\small
Ladungen (Komponenten) der Faktoren (Eigenvektoren) mit den höchsten beiden Eigenwerten

```{r, eval = F, echo = F}
graphics.off()
fdir        =  file.path(getwd(), "4_Abbildungen")
dev.new()
par(
family      = "sans",
mfcol       = c(1,1),
pty         = "s",
bty         = "l",
lwd         = 1,
las         = 1,
mgp         = c(2,1,0),
xaxs        = "i",
yaxs        = "i",
font.main   = 1)

# "Faktorladungen"
plot(
L[,1],
L[,2],
xlim = c(-.6,.6),
ylim = c(-.6,.6),
axes = FALSE,
xlab = "Faktor 1",
ylab = "Faktor 2",
pch  = 19,
cex  = .8)
axis(1, pos = 0, col = "gray80", col.axis = "gray80")
axis(2, pos = 0, col = "gray80", col.axis = "gray80")
text(L[,1], L[,2], a, cex = .8, pos = 4)

dev.copy2pdf(
file        = file.path(fdir, "mvda_4_sedimentation_faktorladungen.pdf"),
width       = 5,
height      = 5)

```

```{r, echo = FALSE, out.width = "60%"}
knitr::include_graphics("4_Abbildungen/mvda_4_sedimentation_faktorladungen.pdf")
```

\vspace{-7mm}
\footnotesize
\center
\setstretch{1.2}
Angriffslustig, streitbar, herausfordernd, kämpferisch, hitzig $\approx$ Hohe Werte Faktor 1, Niedrige Werte Faktor 2

Kleinlich, akkurat, übergenau, gründlich, gewissenhaft, penibel $\approx$ Niedrige Werte Faktor 1, Hohe Werte Faktor 2



# Exploratorische Faktorenanalyse
\textcolor{darkblue}{Sedimentationshypothese (Lexikalischer Ansatz) der Persönlichkeitspsychologie}

\small
Ladungen (Komponenten) der Faktoren (Eigenvektoren) mit den höchsten beiden Eigenwerten

```{r, echo = FALSE, out.width = "60%"}
knitr::include_graphics("4_Abbildungen/mvda_4_sedimentation_faktorladungen.pdf")
```
\vspace{-7mm}
\small
\center

Faktor 1 = Aggressivität und Faktor 2 = Perfektionismus als Persönlichkeitseigenschaften


# Exploratorische Faktorenanalyse
\textcolor{darkblue}{Sedimentationshypothese (Lexikalischer Ansatz) der Persönlichkeitspsychologie}

... es ginge auch direkter ...
```{r, echo = F, eval = F}

o         = c(1,3,4,5,11,12,2,6,7,8,9,10)               # geordnete Adjektivnummern
Y_o       = Y[o,]                                       # geordneter Datensatz
C_o       = (1/(n-1))*(Y_o %*% (I_n-(1/n)*J_n) %*% t(Y_o))  # Stichprobenkovarianzmatrix
D_o       = diag(1/sqrt(diag(C_o)))                       # Kov-Korr-Transformationsmatrix
R_o       = D_o %*% C_o %*% D_o                               # Stichprobenkorrelationsmatrix

library(plot.matrix)
graphics.off()
fdir        =  file.path(getwd(), "4_Abbildungen")
dev.new()
par(
family      = "sans",
mfcol       = c(1,2),
pty         = "s",
bty         = "l",
lwd         = 1,
las         = 2,
mgp         = c(2,1,0),
xaxs        = "i",
yaxs        = "i",
font.main   = 1,
cex         = 1,
cex.main    = 3,
mar         = c(6, 7, 6, 5)) # bottom, left, top, right margin)
plot(
C_o,
col         = topo.colors,
digits      = 1,
key         = NULL,
cex         = 0.8,
polygon.key = NULL,
axis.key    = NULL,
xlab        = "",
ylab        = "",
main        = TeX("$C$"))
rownames(R_o) = a[o]
colnames(R_o) = a[o]
plot(
R_o,
col         = topo.colors,
digits      = 1,
key         = NULL,
cex         = 0.8,
polygon.key = NULL,
axis.key    = NULL,
xlab        = "",
ylab        = "",
main        = TeX("$R$"))
dev.copy2pdf(
file        = file.path(fdir, "mvda_4_sedimentation_Co_Ro.pdf"),
width       = 16,
height      = 9)
```

```{r, echo = FALSE, out.width = "100%"}
knitr::include_graphics("4_Abbildungen/mvda_4_sedimentation_Co_Ro.pdf")
```


#
\vfill
\setstretch{2.4}
\large
Vektorkoordinatentransformation

Definition

Singulärwertzerlegung

Datenkompression

Exploratorische Faktorenanalyse

**Selbstkontrollfragen**

\vfill

# Selbstkontrollfragen

\footnotesize
\justifying
\begin{enumerate}
\itemsep2mm
\item Erläutern Sie den Begriff ``Featureselektion''.
\item Definieren Sie den Begriff Orthogonalprojektion.
\item Geben Sie das Theorem zu Vektorkoordinaten bezüglich einer Orthogonalbasis wieder.
\item Geben Sie das Vektorkoordinatentransformationstheorem wieder.
\item Erläutern Sie das Vektorkoordinatentransformationstheorem.
\item Geben Sie die Definition einer Hauptkomponentenanalyse wieder.
\item Geben Sie das Theorem zur Hauptkomponentenanalyse wieder.
\item Geben Sie die Definition der Hauptkomponentenanalyse eines Datensatzes wieder.
\item Geben Sie das Theorem zur Hauptkomponentenanalyse eines Datensatzes wieder.
\item Schreiben Sie R Code zur Implementation einer Hauptkomponentenanalyse durch Eigenanalyse.
\item Geben Sie die Definition einer Singulärwertzerlegung wieder.
\item Geben Sie das Theorem zum Zusammenhang von Singulärwertzerlegung und Eigenanalyse wieder.
\end{enumerate}

# Selbstkontrollfragen
\footnotesize
\begin{enumerate}
\setcounter{enumi}{12}
\itemsep2mm
\item Geben Sie das Theorem zur Datenhauptkomponentenanalyse durch Singulärwertzerlegung wieder.
\item Schreiben Sie R Code zur Implementation einer Hauptkomponentenanalyse durch Singulärwertzerlegung.
\item Erläutern Sie das Prinzip der Datenkompression durch Hauptkomponentenanalyse
\item Definieren Sie den Begriff des PCA-dimensionreduzierten Datensatzes.
\item Definieren Sie den Begriff des (PCA)-rekonstruierten Datensatzes.
\item Definieren Sie den Begriff des (PCA)-Rekonstruktionsfehlers.
\item Erläutern Sie die Idee eines Scree-Plots.
\item Erläutern Sie ein Beispiel zur Datendimensionreduktion in der Analyse von EEG Daten.
\item Erläutern Sie den Begriff ``Exploratorische Faktorenanalyse''.
\item Erläutern Sie die Idee der Sedimenationshypothese/des lexikalischen Ansatzes der Persönlichkeitspsychologie.
\item Erläutern Sie, wie man mithilfe einer Hauptkomponentenanalyse und eines Datensatzes von Einschätzungen
einer ihnen bekannten Person durch Proband:innen hinsichtlich einer Menge von Adjektiven zur 
Identifikation von latenten Persönlichkeitseigenschaften gelangen kann.
\end{enumerate}