---
format:
  pdf:
    fontsize: 11pt
    number-sections: true
    include-in-header: ../MV_Header_Seminar.tex
lang: de
---


\setcounter{section}{6}
# Kanonische Korrelationsanalyse


## Mathematische Grundlagen

Mit dem Begriff der univariaten Korrelation bzw. des Korrelationskoeffizienten können Zusammenhänge zwischen einer einzelnen unabhängigen Variable (UV) und einer einzelnen abhängigen Variable (AV) erfasst werden. Der Begriff der kanonischen Korrelation verallgemeinert diesen Begriff auf multivariate UVs und AVs, d.h. auf Zusammenhänge zwischen Mengen von UVs und Mengen von AVs.

Das Ziel der *kanonischen Korrelationsanalyse* ist, für Realisierungen von Zufallsvektoren

\begin{equation} \label{eq:xy}
x \in \mathbb{R}^{m_x}
\quad \text{und} \quad
y \in \mathbb{R}^{m_y}
\end{equation}

mit $a \in \mathbb{R}^{m_x}$ und $b \in \mathbb{R}^{m_y}$ Linearkombinationen der Form

\begin{equation} \label{eq:ab}
\xi = a^\mathrm{T} x
\quad \text{und} \quad
\upsilon = b^\mathrm{T} y
\end{equation}

zu finden, sodass die Korrelation $\rho(\xi,\upsilon)$ maximal ist. In der Praxis einer faktischen Datenanalyse wird dazu wie folgt vorgegangen.

Gegeben seien eine Datenmatrix $X \in \mathbb{R}^{m_x \times n}$, deren Spalten als Realisierungen von $x$ verstanden werden, und eine Datenmatrix $Y \in \mathbb{R}^{m_y \times n}$, deren Spalten als Realisierungen von $y$ verstanden werden.

$X$ und $Y$ lassen sich zu einer Datenmatrix $Z \in \mathbb{R}^{m \times n}$ zusammenfügen lassen, wobei $m = m_x + m_y$. Wir bestimmen für diese Datenmatrix $Z$ die *Stichprobenkovarianzmatrix* $C$, die sich entlang der Trennung zwischen den $m_x$ UVs und den $m_y$ AVs *partitionieren* lässt

\begin{equation} \label{eq:C}
C =
\begin{pmatrix}
C_{xx} & C_{xy} \\
C_{yx} & C_{yy} \\
\end{pmatrix}
\in \mathbb{R}^{m \times m} \; ,
\end{equation}

wobei $C_{xx} \in \mathbb{R}^{m_x \times m_x}$, $C_{xy} \in \mathbb{R}^{m_x \times m_y}$, $C_{yx} \in \mathbb{R}^{m_y \times m_x}$ und $C_{yy} \in \mathbb{R}^{m_y \times m_y}$. Kern der kanonischen Korrelationsanalyse ist dann die Matrix

\begin{equation} \label{eq:K-hat}
\hat{K} = C_{xx}^{-1/2} C_{xy} C_{yy}^{-1/2} \in \mathbb{R}^{m_x \times m_y}
\end{equation}

und es kann gezeigt werden, dass sich die *kanonischen Koeffizientenvektoren*, d.h. die optimalen Linearkombinationen von $x$ und $y$, als

\begin{equation} \label{eq:ab-hat}
\hat{a}_i = C_{xx}^{-1/2} \hat{\alpha}_i
\quad \text{und} \quad
\hat{b}_i = C_{yy}^{-1/2} \hat{\beta}_i
\end{equation}

schätzen lassen und dass sich die *kanonischen Korrelationen*, d.h. die maximierten Korrelationen zwischen $\xi$ und $\upsilon$, als

\begin{equation} \label{eq:rho-hat}
\hat{\rho}_i = \sqrt{\hat{\lambda}_i}
\end{equation}

schätzen lassen, wobei $\hat{\alpha}_i$ der $i$-te Eigenvektor von $\hat{K} \hat{K}^\mathrm{T}$, $\hat{\beta}_i$ der $i$-te Eigenvektor von $\hat{K} \hat{K}^\mathrm{T}$ und $\sqrt{\hat{\lambda}_i}$ der $i$-te Singulärwert von $\hat{K}$ ist.


## Analyse in R

Die Datei `FADE_SAME.csv` enthält den in der ersten Seminarsitzung vorgestellten Datensatz. Erklären Sie die Funktion des folgenden R-Codes:

\footnotesize
```{r, echo = T, eval = T, results = 'hide'}
# Daten einlesen
fname = 'FADE_SAME.csv'                             # Dateiname
D     = read.csv(fname)                             # Dataframe

# Datenmatrizen extrahieren
rows  = startsWith(D$subject, 'subA')               # Personen aus Studie A
colX  = c('novelty.FADE','novelty.SAME','memory.FADE', 'memory.SAME')
colY  = c('V.left.Hippocampal.tail',  'V.left.Subiculum',  'V.left.CA1',  'V.left.CA3',  'V.left.CA4',
          'V.right.Hippocampal.tail', 'V.right.Subiculum', 'V.right.CA1', 'V.right.CA3', 'V.right.CA4')
n     = sum(rows)                                   # Anzahl Datenpunkte
X     = t(as.matrix(D[rows,colX]))                  #  4 x n Datenmatrix X
Y     = t(as.matrix(D[rows,colY]))                  # 10 x n Datenmatrix Y
print(dim(X))                                       # Überprüfung Datenmatrix X
print(dim(Y))                                       # Überprüfung Datenmatrix Y
```
\normalsize


## Erste Programmieraufgabe

Berechnen Sie die univariate Stichprobenkorrelation (d.h. einen einfachen Korrelationskoeffizienten) zwischen dem Novelty-FADE-Score und dem Novelty-SAME-Score. Gehen Sie dazu wie folgt vor:

- Extrahieren Sie die erste und die zweite Zeile der Datenmatrix $X$ als Variablen \verb|x_i| und \verb|y_i|.

- Berechnen Sie die Stichprobenmittel der $x_i$ und der $y_i$, indem alle Werte aufsummieren und das Ergebnis mit $1/n$ multiplizieren.

- Berechnen Sie die Stichprobenstandardabweichungen der $x_i$ und der $y_i$, indem Sie die Terme $(x_i - \bar{x})^2$ bzw. $(y_i - \bar{y})^2$ aufsummieren, dann mit $1/(n-1)$ multiplizieren und schließlich die Quadratwurzel ziehen.

- Berechnen Sie die Stichprobenkovarianz der $x_i$ mit den $y_i$, indem Sie die Terme $(x_i - \bar{x}) (y_i - \bar{y})$ aufsummieren und das Ergebnis mit $1/(n-1)$ multiplizieren.

- Berechnen Sie die Stichprobenkorrelation zwischen den $x_i$ und den $y_i$, indem Sie die Stichprobenkovarianz durch das Produkt der Stichprobenstandardabweichungen teilen.

- Überprüfen Sie Ihre Berechnung der Stichprobenkorrelation, indem Sie die R-Funktion \verb|cor()| auf \verb|x_i| und \verb|y_i| anwenden.

- Geben Sie die Resultate ihrer Analyse aus. Sie sollten folgende Ergebnisse erhalten:

\footnotesize
```{r, echo = F, eval = T}

```
\normalsize


## Analyse in R

Im zweiten Teil wollen wir nun mit den Datenmatrizen $X$ und $Y$ eine kanonische Korrelationsanalyse durchführen. Erklären Sie dazu zunächst den folgenden R-Code und die Variablen, die er erzeugt:

\footnotesize
```{r, echo = T, eval = T, results = 'hide'}
# Berechnung der Stichprobenkovarianzmatrix
m_x        = nrow(X)                                # Dimensionalität der x_i
m_y        = nrow(Y)                                # Dimensionalität der y_i
Z          = rbind(X,Y)                             # (m_x+m_y) x n Datenmatrix
I_n        = diag(n)                                # Einheitsmatrix I_n
J_n        = matrix(rep(1,n^2), nrow = n)           # Einsmatrix 1_{nn}
C          = (1/(n-1))*(Z %*% (I_n-(1/n)*J_n) %*% t(Z)) # Stichprobenkovarianzmatrix

# Paritionierung der Stichprobenkovarianzmatrix
C_xx       = C[1:m_x,1:m_x]
C_xy       = C[1:m_x,(m_x+1):(m_x+m_y)]
C_yx       = C[(m_x+1):(m_x+m_y),1:m_x]
C_yy       = C[(m_x+1):(m_x+m_y),(m_x+1):(m_x+m_y)]
```
\normalsize


\pagebreak
## Zweite Programmieraufgabe

Berechnen Sie die multivariate Stichprobenkorrelation (d.h. die kanonischen Korrelationen) zwischen FADE/SAME-Scores und Hippocampus-Subregionen-Volumen. Gehen Sie dazu wie folgt vor:

- Laden Sie das R-Paket \verb|expm|.

- Berechnen Sie $\hat{K}$ anhand der obigen Formel. Die inverse Quadratwurzel einer Matrix ($A^{-1/2}$) lässt sich mit in R mittels \verb|sqrtm(solve)| berechnen.

- Führen Sie eine Singulärwertzerlegung der Matrix $\hat{K}$ durch. Orientieren Sie sich hierbei an Abschnitt 3.5 des Arbeitsblatts (3) *Eigenanalyse* und speichern Sie die Ergebnisse in die Variablen \verb|A_hat|, \verb|Lambda_hat| und \verb|B_hat|.

- Berechnen Sie die kanonischen Koeffizientenvektoren $\hat{a}_i$ und $\hat{b}_i$ für $i = 1,\ldots,\min(m_x,m_y)$, indem Sie die Matrixprodukte `sqrtm(solve(C_xx)) %*% A_hat` bzw. `sqrtm(solve(C_yy)) %*% B_hat` bilden.

- Berechnen Sie die kanonischen Korrelationen $\hat{\rho}_i$, indem Sie die Werte aus \verb|Lambda_hat| extrahieren.

- Geben Sie die zur ersten kanonischen Korrelation gehörenden Werte aus. Sie sollten folgende Ergebnisse erhalten:

\footnotesize
```{r, echo = F, eval = T, warning = F, message = F}

```
\normalsize

- Überprüfen Sie Ihre Berechnung der kanonischen Korrelationen, indem Sie folgenden Code mit der in R eingebauten Funktion \verb|cancor()| ausführen:

\footnotesize
```{r, echo = T, eval = T, results = 'hide'}
# Kanonische Korrelationsanalyse (automatisch)
XT  = t(X)
YT  = t(Y)
cca = cancor(XT,YT)
cat(  "rho_hat_1 : ", cca$cor[1],
    "\nx_coef    : ", cca$xcoef[,1],
    "\ny_coef    : ", cca$ycoef[,1], "\n")
```
\normalsize


\pagebreak
## Lückentext

Füllen Sie mit den in der Übung gewonnenen Erkenntnissen den folgenden Lückentext aus und präsentieren Sie die Ergebnisse im Seminar:

\vspace{1em}
**Lückentext:** Die Stichprobenkorrelation zwischen Novelty-FADE-Score und Novelty-SAME-Score beträgt __________. Der aus der CSV-Datei extrahierte Datensatz enthält insgesamt __________ Datenpunkte bzw. Personen. Die Datenmatrix $X$ besteht aus __________-dimensionalen Zufallsvektoren und die Datenmatrix $Y$ besteht aus __________-dimensionalen Zufallsvektoren, sodass die Datenmatrix $Z$ die Dimensionalität __________ (Zeilen $\times$ Spalten) hat. Die erste kanonische Korrelation ist __________, dies bedeutet: __________. Die kanonischen Koeffizienten weisen darauf hin, dass im Bereich der FADE/SAME-Scores die Variable __________ und im Bereich der Hippocampus-Subregion-Volumen die Variable __________ am stärksten in diese Linearkombinationen eingehen.


## Mögliche Klausurfrage

Präsentieren Sie im Seminar folgende Klausurfrage und erklären Sie die richtige Antwort:

\vspace{1em}
**Frage:** Was versteht man, im Rahmen einer Kanonischen Korrelationsanalyse (KKA), unter dem "besten Prädiktor"?
\begin{enumerate}[a)]
\item Der beste Prädiktor ist die nach Schätzung der KKA sich ergebende Linearkombination der unabhängigen Variablen, die die Korrelation mit einer Linearkombination der abhängigen Variablen maximiert.
\item Der beste Prädiktor ist die nach Schätzung der KKA sich ergebende Linearkombination der abhängigen Variablen, die die Korrelation mit einer Linearkombination der unabhängigen Variablen maximiert.
\item Der beste Prädiktor ist diejenige abhängige oder unabhängige Variable, die im Rahmen der Schätzung der KKA das höchste Gewicht im kanonischen Koeffizientenvektor erhält.
\item Der beste Prädiktor ist der geschätzte Wert der ersten kanonischen Korrelation.
\end{enumerate}


## Kinderwitz

Wie heißt eine gelbe Kanone?

\begin{turn}{180}
Antwort: Banone.
\end{turn}