---
fontsize: 8pt
format:
    beamer:
        include-in-header: "10_Header.tex"
bibliography: 10_Referenzen.bib
---

#  {.plain}

\center
```{r, echo = FALSE, out.width = "20%", fig.align = "center"}
knitr::include_graphics("10_Abbildungen/mv_10_otto.png")
```
\vspace{2mm}

\huge
Multivariate Verfahren
\vspace{4mm}

\large
MSc Psychologie | MSc Klinische Psychologie und Psychotherapie   

WiSe 2023/24

\vspace{4mm}
\normalsize
Prof. Dr. Dirk Ostwald

#  {.plain}
\vfill
\center
\huge
\textcolor{black}{(10) Lineare Diskriminanzanalyse}
\vfill


# 
\vfill
\setstretch{2.1}
\large
Anwendungsszenario

Modellformulierung

Inferenz und Klassifikation

Lernen

Anwendungsbeispiel

Selbstkontrollfragen
\vfill

# 
\vfill
\setstretch{2.1}
\large
**Anwendungsszenario**

Modellformulierung

Inferenz und Klassifikation

Lernen

Anwendungsbeispiel

Selbstkontrollfragen
\vfill

# Anwendungsszenario
\setstretch{1.5}

Psychotherapie Non-Response-Rate wird auf etwa 20 - 30% geschätzt 

Vorhersage von Behandlungserfolg basierend auf klinischen Markern wäre hilfreich 
  
  * Therapieauswahloptimierung
  * Lebensqualitätverbesserung 
  * Ressourcensensitivität

Digitale Datenbank von Psychotherapieverläufen als Trainingsdatensatz

Prädiktive Modellierung zur Etablierung eines prädiktiven klinischen Markerprofils

Treatmentsuccessvorhersage für neue Patient:innen  

Anwendungsbeispiele

* BDI und GLU Werte bei Depressionsdiagnose als Prädiktoren von CBT Erfolg
* Lineare Diskriminanzanalyse, Logistische Regression, Neuronale Netze

# Anwendungsszenario

\vspace{2mm}
Beispieldatensatz

* BDI und GLU Werte bei Depressionsdiagnose als Prädiktoren von CBT Erfolg

```{r, echo = FALSE, out.width = "65%", fig.align = "center"}
knitr::include_graphics("10_Abbildungen/mv_10_lda_anwendungsbeispiel_1.pdf")
```

# 
\vfill
\setstretch{2.1}
\large
Anwendungsszenario

**Modellformulierung**

Inferenz und Klassifikation

Lernen

Anwendungsbeispiel

Selbstkontrollfragen
\vfill


# Modellformulierung
\small
\begin{definition}[Bernoulli-Zufallsvariable]
\justifying
Es sei $\xi$ eine Zufallsvariable mit Ergebnisraum $\mathcal{X} := \{0,1\}$ und WMF
\begin{equation}
p : \mathcal{X} \to [0,1], x\mapsto p(x) := \mu^{x}(1 - \mu)^{1-x} \mbox{ mit } \mu \in [0,1].
\end{equation}

Dann sagen wir, dass $\xi$ einer \textit{Bernoulli-Verteilung mit Parameter
$\mu \in [0,1]$} unterliegt und nennen $\xi$ eine \textit{Bernoulli-Zufallsvariable}.
Wir kürzen dies mit $\xi \sim \mbox{Bern}(\mu)$ ab. Die WMF einer
Bernoulli-Zufallsvariable bezeichnen wir mit
\begin{equation}
\mbox{Bern}(x;\mu) := \mu^x (1 - \mu)^{1 - x}.
\end{equation}
\end{definition}

Bemerkungen
\begin{itemize}
\justifying
\item Eine Bernoulli-Zufallsvariable kann als Modell eines Münzwurfs dienen.
\item $\mu$ ist die Wahrscheinlichkeit dafür, dass $\xi$ den Wert 1 annimmt,
\begin{equation}
\mathbb{P}(\xi = 1) = \mu^1 (1 -\mu)^{1-1} = \mu.
\end{equation}
\end{itemize}

# Modellformulierung
Bernoulli-Zufallsvariable
\vspace{1cm}

```{r, eval = F, echo = F}
dev.new() 
library(latex2exp)
pdf(
file        = "10_Abbildungen/mv_10_bernoulli_zufallsvariable.pdf",
width       = 7,                                                         
height      = 3)                                               
par(                                                                    
mfcol       = c(1,3),                                           
family      = "sans",                                                    
pty         = "s",                                                       
bty         = "l",                                                       
lwd         = 1,                                                         
las         = 1,                                                         
mgp         = c(2,1,0),                                                  
font.main   = 1,                                                         
cex.main    = 1.4)
x           = 0:1                                                                     
mu          = c(.1,.5, .7)        
for (i in 1:length(mu)){
  plot(
  x,                                                                         
  dbinom(x,1,mu[i]),                                                         
  type         = "h",                                                        
  lwd          =  1.5,                                                       
  col          = "Black",                                                    
  ylab         = " ",                                                        
  xlab         = "x",                                                         
  xlim         = c(-.3,1.3),                                                  
  ylim         = c(0,1))                                                     
   title(sprintf("Bern(x;%g)", mu[i]))                                            
}
dev.off()
```

```{r, echo = FALSE, out.width = "100%", fig.align = "center"}
knitr::include_graphics("10_Abbildungen/mv_10_bernoulli_zufallsvariable.pdf")
```


# Modellformulierung
\small
\begin{definition}[Modell der Linearen Diskriminanzanalyse]
\justifying
$\xi$ sei ein $m$-dimensionaler Zufallsvektor mit Ergebnisraum $\mathbb{R}^m$ und
$\ups$ sei eine Zufallsvariable mit Ergebnisraum $\{0,1\}$. Dann ist das \textit{Modell
der Linearen Diskriminanzanalyse} die gemeinsame Verteilung
\begin{equation}
\mathbb{P}(\xi,\ups) = \mathbb{P}(\ups)\mathbb{P}(\xi|\ups),
\end{equation}
wobei die diskrete marginale Verteilung $\mathbb{P}(\ups)$ durch die WMF
\begin{equation}
p(y) = \mbox{Bern}(y;\mu)
\end{equation}
mit $\mu \in ]0,1[$ und die kontinuierliche bedingte Verteilung
$\mathbb{P}(\xi|\ups)$ durch die WDF
\begin{equation}
p(x|y)
= N(x; \mu_0, \Sigma)^{1 - y}N(x; \mu_1, \Sigma)^{y}
\end{equation}
mit $\mu_0, \mu_1 \in \mathbb{R}^m$ und $\Sigma \in \mathbb{R}^{m \times m}$ pd
definiert ist. Wir bezeichnen die gemischte WMF und WDF (WMDF) des Modells der Linearen Diskriminanzanalyse mit
\begin{equation}
p(x,y) := p(y)p(x|y) = \mbox{Bern}(y;\mu) N(x;\mu_0,\Sigma)^{1-y}N(x;\mu_1, \Sigma)^{y}
\end{equation}
\end{definition}

# Modellformulierung
\small
Bemerkung

Aus generativer Sicht wird ein Trainingsdatensatz
\begin{equation}
\left\lbrace \left(x^{(i)},y^{(i)}\right)\right\rbrace_{i = 1}^{n} \mbox{ mit } x^{(i)} \in \mathbb{R}^m \mbox{ und } y^{(i)} \in \{0,1\}
\end{equation}
eines Modells zur Linearen Diskriminanzanalyse wie folgt erzeugt:

(1) $y^{(i)}$ wird zunächst durch Ziehen aus einer Bernoulliverteilung mit Parameter $\mu$ erzeugt.

(2) In Abhängigkeit vom Wert von $y^{(i)}$ wird $x^{(i)}$ dann durch Ziehen aus einer multivariaten Normalverteilung
mit Kovarianzmatrixparameter $\Sigma$ und Erwartungswertparameter $\mu_0$ für $y^{(i)} = 0$ oder $\mu_1$ für $y^{(i)} = 1$ erzeugt.


# Modellformulierung
\vspace{2mm}
Datengeneration
\vspace{1mm}

\setstretch{1}
\tiny
```{r, echo = T}
# Modellformulierung
library(mvtnorm)                                # Multivariate Normalverteilung
set.seed(0)                                     # Zufallszahlengenerator
m      = 2                                      # Featurevektordimension
n      = 2e2                                    # Anzahl Trainingsdatenpunkte
mu     = 0.5                                    # wahrer, aber unbekannter, Bernoulliparameter \mu
mu_0   = c(1,1)                                 # wahrer, aber unbekannter, Normalverteilungsparameter \mu_0
mu_1   = c(2,2)                                 # wahrer, aber unbekannter, Normalverteilungsparameter \mu_1
Sigma  = matrix(c( 0.50, -0.25,                 # Kovarianzmatrixparameter
                  -0.25,  0.50),
                byrow = TRUE,
                nrow = m)

# Modellsampling
y      = matrix(rep(NaN,n)  , nrow = 1)         # Labeldatenarray
x      = matrix(rep(NaN,n*m), nrow = m)         # Featurevektorarray
for(i in 1:n){                                  # Iteration über Datenpunkte
  y[i]  = rbinom(1,1,mu)                        # y^{(i)} \sim Bern(\mu)
  x[,i] = ((rmvnorm(1, mu_0, Sigma)**(1-y[i]))    # x^{i} \sim N(\mu_0,\Sigma)^{1-y}N(\mu_1,\Sigma)^y
          *(rmvnorm(1, mu_1, Sigma)**(y[i])))
}

# Datensatzkonkatenation
D = rbind(x,y)
```


# Modellformulierung
\vspace{2mm}
Datengeneration
\footnotesize
\begin{equation*}
m       = 2,
n       = 200,
\mu     =  0.5,
\mu_0   = \begin{pmatrix} 1 \\ 1 \end{pmatrix},
\mu_1   = \begin{pmatrix} 2 \\ 2 \end{pmatrix},
\Sigma  = \begin{pmatrix} 0.50 & -0.10 \\ -0.10 & 0.50 \end{pmatrix}
\end{equation*}
```{r, eval = F, echo = F}
library(latex2exp)
pdf(
file        = "10_Abbildungen/mv_10_lda_modell.pdf",
width       = 4.5,
height      = 4.5)
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,
cex         = 1,
cex.main    = 1)

# Gaussian Isokontur Paket
library(ellipse)
iso_0           = ellipse(Sigma, level = 0.50, centre = mu_0)
iso_1           = ellipse(Sigma, level = 0.50, centre = mu_1)

# N(\mu_0,\Sigma)
plot(
iso_0,
type  = "l",
col   = "Blue",
xlim  = c(0,3),
ylim  = c(0,3),
xlab  = TeX("$x_1$"),
ylab  = TeX("$x_2$"))
points(
mu_0[1],
mu_0[2],
col   = "Blue",
pch   = 3,
cex   = 1.5)

# N(\mu_1,\Sigma)
lines(
iso_1[,1],
iso_1[,2],
col = "Red")
points(
mu_1[1],
mu_1[2],
col  = "Red",
pch = 3,
cex = 1.5)

# Daten y^{(i)} = 0
points(
D[1,D[3,] == 0],
D[2,D[3,] == 0],
col = "White",
bg  = "Blue",
pch = 21)

# Daten y^{(i)} = 1
points(
D[1,D[3,] == 1],
D[2,D[3,] == 1],
col = "White",
bg  = "Red",
pch = 21)
dev.off()
```
\center
\textcolor{blue}{$+$} $\mu_0$
\textcolor{blue}{$\bullet$} $x^{(i)}$ mit $y^{(i)} = 0, \quad$
\textcolor{red}{$+$} $\mu_1$
\textcolor{red}{$\bullet$}  $x^{(i)}$ mit $y^{(i)} = 1, i = 1,...,n$

```{r, echo = FALSE, out.width = "55%", fig.align = "center"}
knitr::include_graphics("10_Abbildungen/mv_10_lda_modell.pdf")
```
\vfill

# 
\vfill
\setstretch{2.1}
\large
Anwendungsszenario

Modellformulierung

**Inferenz und Klassifikation**

Lernen

Anwendungsbeispiel

Selbstkontrollfragen
\vfill

# Inferenz und Klassifikation

\small
\begin{theorem}[Inferenz bei Linearer Diskriminanzanalyse]
\justifying
\normalfont
$p(x,y)$ sei die WMDF des Modells einer Linearen Diskriminanzanalyse. Dann gilt
\begin{equation}
p(y = 1|x) = \frac{1}{1 + \exp(-\tilde{x}^T\beta)}
\mbox{ und  }
p(y = 0|x) = 1 - p(y = 1|x),
\end{equation}
wobei
\begin{equation}
\tilde{x} :=
\begin{pmatrix}
1 \\
x
\end{pmatrix}
\in \mathbb{R}^{m+1}
\end{equation}
der \textit{erweiterten Featurevektor} und
\begin{equation}
\beta :=
\begin{pmatrix}
\frac{1}{2}\left(\mu_0^T\Sigma^{-1}\mu_0 - \mu_1^T\Sigma^{-1} \mu_1\right) + \ln\left(\frac{\mu}{1- \mu}\right) \\
-\Sigma^{-1}(\mu_0 - \mu_1)
\end{pmatrix}
\in \mathbb{R}^{m+1}.
\end{equation}
der \textit{Inferenzparametervektor} sind.
\end{theorem}

\footnotesize
Bemerkungen

*  $p(y|x)$ kann zur Prädiktion der Klasse eines $x \in \mathbb{R}^m$ genutzt werden.
*  Diese Prädiktion hängt von den Parameter $\mu, \mu_0,\mu_1,\Sigma$ des Modells der Linearen Diskriminanzanalyse ab.

# Inferenz und Klassifikation
\footnotesize
\underline{Beweis}

Wir halten zunächst fest, dass
\begin{align}
\begin{split}
p(y = 1|x)
& = \frac{p(x, y = 1)}{p(x,y = 0) + p(x,y = 1)} 															\\
& = \frac{\frac{p(x, y = 1)}{p(x, y = 1)}}{\frac{p(x,y = 0)}{p(x,y = 1)} + \frac{p(x,y = 1)}{p(x,y = 1)}} 	\\
& = \frac{1}{1 + \frac{p(x,y = 0)}{p(x,y = 1)}} 															\\
& = \frac{1}{1 + \exp\left(\ln\left(\frac{p(x,y = 0)}{p(x,y = 1)} \right)\right)} 							\\
& = \frac{1}{1 + \exp\left(-\ln\left(\frac{p(x,y = 1)}{p(x,y = 0)} \right)\right)} 							\\
\end{split}
\end{align}
Mit der Definition des Modells der Linearen Diskriminanzanalyse gilt dann
\begin{equation}
p(x,y = 1) = p(x|y = 1)p(y = 1) = N(x; \mu_1, \Sigma) \mu
\end{equation}
und
\begin{equation}
p(x,y = 0) = p(x|y = 0)p(y = 0) = N(x; \mu_0, \Sigma) (1 - \mu)
\end{equation}


# Inferenz und Klassifikation
\footnotesize
\underline{Beweis (fortgeführt)}

Wir erhalten also
\tiny
\begin{align*}
\begin{split}
& = \ln \left(\frac{p(x,y = 1)}{p(x,y = 0)}\right) \\
& = \ln \left(\frac{N(x;\mu_1,\Sigma)\mu}{N(x;\mu_0,\Sigma)(1-\mu)}\right) \\
& = \ln \left(N(x;\mu_1,\Sigma)\mu\right) - \ln \left(N(x;\mu_0,\Sigma)(1 - \mu)\right)\\
& = \ln(\mu) + \ln N(x;\mu_1,\Sigma) - \ln (1 - \mu) - \ln N(x;\mu_0,\Sigma)  \\
& =
\ln \mu - \ln (1 - \mu)
- \frac{m}{2}\ln 2\pi - \ln |\Sigma| - \frac{1}{2}(x - \mu_1)^T\Sigma^{-1}(x-\mu_1) \\
& \hspace{20mm}
+ \frac{m}{2}\ln 2\pi + \ln |\Sigma| + \frac{1}{2}(x - \mu_0)^T\Sigma^{-1}(x-\mu_0) \\
& =
-\frac{1}{2}(x - \mu_1)^T\Sigma^{-1}(x-\mu_1)
+\frac{1}{2}(x - \mu_0)^T\Sigma^{-1}(x-\mu_0)
+ \ln \mu - \ln (1 - \mu)
\\
& =
-\frac{1}{2}x^T\Sigma^{-1}x + x^T \Sigma^{-1}\mu_1 -\frac{1}{2} \mu_1^T \Sigma^{-1}\mu_1
+\frac{1}{2}x^T\Sigma^{-1}x - x^T \Sigma^{-1}\mu_0 +\frac{1}{2} \mu_0^T \Sigma^{-1}\mu_0
+ \ln \left(\frac{\mu}{1 -\mu}\right) \\
& =
 \frac{1}{2} \mu_0^T \Sigma^{-1}\mu_0
-\frac{1}{2} \mu_1^T \Sigma^{-1}\mu_1
- x^T \Sigma^{-1}(\mu_0 - \mu_1)
+ \ln \left(\frac{\mu}{1 -\mu}\right) \\
& = \left(\begin{matrix}
1 &  x^T
\end{matrix} \right)
\left(\begin{matrix}
\frac{1}{2}\left(\mu_0^T \Sigma^{-1}\mu_0 - \mu_1^T \Sigma^{-1}\mu_1\right)
+ \ln \left(\frac{\mu}{1 -\mu}\right)
\\
-\Sigma^{-1}(\mu_0 - \mu_1)
\end{matrix}\right) 
\\
& =: \tilde{x}^T\beta
\end{split}
\end{align*}
$\hfill\Box$

# Inferenz und Klassifikation
\small
\begin{definition}[Klassifikationsregel der linearen Diskriminanzanalyse]
\normalfont
\justifying
$p(x,y)$ sei die WMDF des Modells der Linearen Diskriminanzanalyse. Dann ist die \textit{Klassifikationregel} definiert als
\begin{equation}
\delta : \mathbb{R}^m \to \{0,1\}, x \mapsto \delta(x) :=
\begin{cases}
0 & \mbox{ für } p(y = 0|x) \ge p(y = 1|x) \\
1 & \mbox{ für } p(y = 0|x)   < p(y = 1|x)
\end{cases}
\end{equation}
\end{definition}

Bemerkung

* Es gilt
\begin{equation}
\delta(x) = 1
\Leftrightarrow  p(y = 1|x) > p(y = 0|x)
\Leftrightarrow  p(y = 1|x) >0.5.
\end{equation}


# Inferenz und Klassifikation
\vspace{2mm}
Inferenz und Klassifikation bei bekannten Modellparametern
\vspace{2mm}
\footnotesize
\begin{equation*}
\mu    =  0.5,
\mu_0  = \begin{pmatrix} 1 \\ 1 \end{pmatrix},
\mu_1  = \begin{pmatrix} 2 \\ 2 \end{pmatrix},
\Sigma = \begin{pmatrix} 0.50 & -0.10 \\ -0.10 & 0.50 \end{pmatrix}
\end{equation*}
\vspace{1mm}

\tiny
\setstretch{1}
```{r, echo = T}
# Inferenz und Klassifikation für die ersten k Datenpunkte
k          = 10                                                 # Anzahl Datenpunkte
x_tilde    = rbind(rep(1,k), x[,1:k])                           # erweiterte Featurevektoren
beta       = matrix(                                            # Inferenzparametervektor
             c((1/2)*(  t(mu_0) %*% solve(Sigma) %*% mu_0
                      - t(mu_1) %*% solve(Sigma) %*% mu_1)
                      + log(mu/(1-mu)),
               -solve(Sigma) %*% (mu_0-mu_1)), nrow = 3)
p_y_giv_x  = 1/(1+exp(-t(x_tilde) %*% beta))                    # p(y = 1|x)
delta      = as.numeric(p_y_giv_x >= 0.5)                       # Klassifikationsregel
```
\vspace{1mm}
\footnotesize

```{r, echo = F}
# data tabulation
P = data.frame(rbind(rbind(x[,1:k], t(p_y_giv_x)), delta, y[1:k]))
colnames(P) = 1:10
rownames(P) = c("x_1", "x_2", "p(y = 1|x)", "delta(x)", "y")
knitr::kable(P, "pipe", digits = 2)
```

# 
\vfill
\setstretch{2.1}
\large
Anwendungsszenario

Modellformulierung

Inferenz und Klassifikation

**Lernen**

Anwendungsbeispiel

Selbstkontrollfragen
\vfill

# Lernen
\footnotesize
\begin{theorem}[ML-Schätzer der Linearen Diskriminanzanalyse]
\justifying
\normalfont
$p(x,y)$ sei die WMDF des Modells einer Linearen Diskriminanzanalyse mit Parametern $\{\mu,\mu_0,\mu_1,\Sigma\}$,
$\{(x^{(i)}, y^{(i)})\}_{i=1}^n$ sei ein LDA Trainingsdatensatz, und $1_{\{S\}}$
sei die Indikatorfunktion der Aussage $A$, d.h.  $1_{\{A\}} = 1$, wenn $A$ WAHR ist
uns $1_{\{A\}} = 0$, wenn $A$ FALSCH ist. Dann sind die Maximum-Likelihood-Schätzer
für $\mu,\mu_0,\mu_1$ und $\Sigma$ gegeben durch
\begin{align}
\begin{split}
\hat{\mu} 		& = \frac{1}{n}\sum_{i=1}^n 1_{\{y^{(i)} = 1\}}, \\
\hat{\mu}_0 	& = \frac{1}{\sum_{i=1}^n 1_{\{y^{(i)} = 0\}}}\sum_{i=1}^n 1_{\{y^{(i)} = 0\}}x^{(i)}, \\
\hat{\mu}_1 	& = \frac{1}{\sum_{i=1}^n 1_{\{y^{(i)} = 1\}}}\sum_{i=1}^n 1_{\{y^{(i)} = 1\}}x^{(i)}, \\
\hat{\Sigma} 	& = \frac{1}{n}\sum_{i=1}^n \left(x^{(i)} - \hat{\mu}_{y^{(i)}}\right)\left(x^{(i)} - \hat{\mu}_{y^{(i)}}\right)^T.
\end{split}
\end{align}
\end{theorem}
Bemerkungen

\footnotesize
* $\mu$ wird als die relative Häufigkeit der 1en im Trainingsdatensatz geschätzt.
* $\mu_0$ und $\mu_1$ werden als Stichprobenmittel aller $x^{(i)}$ mit $y^{(i)} = 0$ bzw. $y^{(i)} = 1$ geschätzt.
* $\Sigma$ wird durch die empirische Kovarianzmatrix aller $x^{(i)}, i = 1,...,n$ geschätzt.
* Substitution ergibt den Schätzer $\hat{\beta}$

# Lernen
\footnotesize
\underline{Beweis}

\tiny
\noindent (1) Formulierung der Log Likelihood Funktion
\begin{align*}
\begin{split}
\ell(\mu,\mu_0,\mu_1,\Sigma)    
& := \ln \prod_{i=1}^n p\left(x^{(i)},y^{(i)}\right) \\
& = \sum_{i=1}^n \ln p\left(x^{(i)},y^{(i)}\right) \\
& = \sum_{i=1}^n \ln p\left(x^{(i)}|y^{(i)}\right)p\left(y^{(i)}\right) \\
& = \sum_{i=1}^n \ln p\left(x^{(i)}|y^{(i)}\right) + \ln p\left(y^{(i)}\right) \\
& = \sum_{i=1}^n \ln \left(N(x^{(i)}; \mu_0,\Sigma)\right)^{1 - y^{(i)}}\left(N(x^{(i)}; \mu_1,\Sigma)\right)^{y^{(i)}}
     + \ln \left(\mu^{y^{(i)}}(1 - \mu)^{1 - \mu^{y^{(i)}}}\right) \\
& = \sum_{i=1}^n
\left(1 - y^{(i)}\right) \ln N\left(x^{(i)}; \mu_0,\Sigma\right)
               + y^{(i)} \ln N\left(x^{(i)}; \mu_1,\Sigma\right)
			  +  y^{(i)} \ln \mu
			  + \left(1 - y^{(i)}\right)\ln (1- \mu) \\
& = \quad  \sum_{i=1}^n \left(1 - y^{(i)}\right) \left(-\frac{n}{2} \ln 2\pi -\frac{1}{2} \ln |\Sigma|
-  \frac{1}{2}\left(x^{(i)} - \mu_0\right)^T \Sigma^{-1}\left(x^{(i)} - \mu_0 \right)\right) \\
& \quad +  \sum_{i=1}^n  y^{(i)} \left(-\frac{n}{2} \ln 2\pi -\frac{1}{2} \ln |\Sigma|
-   \frac{1}{2}\left(x^{(i)} - \mu_1\right)^T \Sigma^{-1}\left(x^{(i)} - \mu_1 \right)\right) \\
& \quad + \sum_{i=1}^n y^{(i)} \ln \mu  + \sum_{i=1}^n \left(1 - y^{(i)} \right) \ln (1 - \mu).
\end{split}
\end{align*}


# Lernen
\footnotesize
\underline{Beweis (fortgeführt)}

\noindent (2) Gradient der Log Likelihood Funktion

\footnotesize
Der Gradient der Log Likelihood Funktion des Modells der Linearen Diskriminanzanalyse besteht aus den
partiellen Ableitungen von $\ell$ hinsichtlich von $\mu,\mu_0,\mu_1$ und $\Sigma$.
Wie unten gezeigt ergibt er sich als

\begin{align*}\label{eq:lda_gradient}
\renewcommand{\arraystretch}{1.5}
\begin{split}
\nabla \ell\left(\mu,\mu_0,\mu_1,\Sigma\right)
& =
\left(\begin{matrix}
\frac{\partial}{\partial \mu}   \ell\left(\mu,\mu_0,\mu_1,\Sigma\right) \\
\frac{\partial}{\partial \mu_0}   \ell\left(\mu,\mu_0,\mu_1,\Sigma\right) \\
\frac{\partial}{\partial \mu_1}   \ell\left(\mu,\mu_0,\mu_1,\Sigma\right) \\
\frac{\partial}{\partial \Sigma}   \ell\left(\mu,\mu_0,\mu_1,\Sigma\right) \\
\end{matrix}\right)  
=
\left(\begin{matrix}
\frac{1}{\mu}\sum_{i=1}^n 1_{\lbrace y^{(i)} = 1 \rbrace}  -
\frac{1}{1-\mu}\sum_{i=1}^n 1_{\lbrace y^{(i)} = 0 \rbrace} \\
-\frac{1}{2}\sum_{i=1}^n 1_{\lbrace y^{(i)} = 0 \rbrace} \left(\left(x^{(i)} - \mu_0\right)^T \Sigma^{-1}\right) \\
-\frac{1}{2}\sum_{i=1}^n 1_{\lbrace y^{(i)} = 1 \rbrace} \left(\left(x^{(i)} - \mu_1\right)^T \Sigma^{-1}\right) \\
\frac{n}{2}\Sigma - \frac{1}{2} \sum_{i=1}^n
\left(x^{(i)} - \mu_{1_{\lbrace y^{(i)} = 1 \rbrace}}\right) \left(x^{(i)} - \mu_{1_{\lbrace y^{(i)} = 1 \rbrace}} \right)^T
\end{matrix}\right).
\end{split}
\end{align*}

# Lernen
\footnotesize
\underline{Beweis (fortgeführt)}

Für die partielle Ableitung hinsichtlich $\mu_0$ und ähnlich für $\mu_1$ ergibt sich
\begin{align*}
\begin{split}
\frac{\partial}{\partial \mu_0} \ell(\mu,\mu_0,\mu_1, \Sigma)
& = \frac{\partial}{\partial \mu_0}
\sum_{i=1}^n \left(1 - y^{(i)}\right) \left(-\frac{n}{2} \ln 2\pi -\frac{1}{2} \ln |\Sigma|
-  \frac{1}{2}\left(x^{(i)} - \mu_0\right)^T \Sigma^{-1}\left(x^{(i)} - \mu_0 \right)\right) \\
& = \sum_{i=1}^n \left(1 - y^{(i)}\right) \frac{\partial}{\partial \mu_0} \left(-\frac{n}{2} \ln 2\pi -\frac{1}{2} \ln |\Sigma| -  \frac{1}{2}\left(x^{(i)} - \mu_0\right)^T \Sigma^{-1}\left(x^{(i)} - \mu_0 \right)\right) \\
& = \sum_{i=1}^n \left(1 - y^{(i)}\right) \left(- \frac{1}{2} \frac{\partial}{\partial \mu_0} \left(x^{(i)} - \mu_0\right)^T \Sigma^{-1}\left(x^{(i)} - \mu_0 \right)\right) \\
& = \sum_{i=1}^n \left(1 - y^{(i)}\right) \left( - \frac{1}{2} \left(x^{(i)} - \mu_0\right)^T \Sigma^{-1} \right) \\
& = -\frac{1}{2}\sum_{i=1}^n \left(1 - y^{(i)}\right) \left( \left(x^{(i)} - \mu_0\right)^T \Sigma^{-1} \right). \\
& = -\frac{1}{2}\sum_{i=1}^n 1_{\{y^{(i)} = 0\}} \left( \left(x^{(i)} - \mu_0\right)^T \Sigma^{-1} \right). \\
\end{split}
\end{align*}

# Lernen
\footnotesize
\underline{Beweis (fortgeführt)}

Für die partielle Ableitung hinsichtlich $\Sigma$ ergibt sich
\begin{align}
\begin{split}
\frac{\partial}{\partial \Sigma} \ell(\mu,\mu_1,\mu_0,\Sigma) 
& = \quad \frac{\partial}{\partial \Sigma}
     \sum_{i=1}^n \left(1 - y^{(i)}\right) \left(-\frac{n}{2} \ln 2\pi -\frac{1}{2} \ln |\Sigma|
      -  \frac{1}{2}\left(x^{(i)} - \mu_0\right)^T \Sigma^{-1}\left(x^{(i)} - \mu_0 \right)\right) \\
& \quad +   \frac{\partial}{\partial \Sigma}
	\sum_{i=1}^n  y^{(i)}  \left(-\frac{n}{2} \ln 2\pi -\frac{1}{2} \ln |\Sigma|
-  \frac{1}{2}\left(x^{(i)} - \mu_1\right)^T \Sigma^{-1}\left(x^{(i)} - \mu_1 \right)\right) \\
& = \quad \sum_{i=1}^n \left(1 - y^{(i)}\right) \left(-\frac{1}{2} \frac{\partial}{\partial \Sigma} \ln |\Sigma|
      -  \frac{1}{2}\frac{\partial}{\partial \Sigma} \left(x^{(i)} - \mu_0\right)^T \Sigma^{-1}\left(x^{(i)} - \mu_0 \right)\right) \\
& \quad +  \sum_{i=1}^n y^{(i)} \left( -\frac{1}{2} \frac{\partial}{\partial \Sigma} \ln |\Sigma|
-  \frac{1}{2}\frac{\partial}{\partial \Sigma}\left(x^{(i)} - \mu_1\right)^T \Sigma^{-1}\left(x^{(i)} - \mu_1 \right)\right) \\
& = \quad \sum_{i=1}^n \left(1 - y^{(i)}\right) \left(-\frac{1}{2} \Sigma
      -  \frac{1}{2} \left(x^{(i)} - \mu_0\right) \left(x^{(i)} - \mu_0 \right)^T\right) \\
& \quad +  \sum_{i=1}^n  y^{(i)}  \left( -\frac{1}{2} \Sigma
-  \frac{1}{2}\left(x^{(i)} - \mu_1\right)\left(x^{(i)} - \mu_1 \right)^T\right) \\
& = \frac{n}{2}\Sigma  -\frac{1}{2} \sum_{i=1}^n
	\left(x^{(i)} - \mu_{1_{\lbrace y^{(i)} = 1 \rbrace}}\right) \left(x^{(i)} - \mu_{1_{\lbrace y^{(i)} = 1 \rbrace}} \right)^T.
\end{split}
\end{align}


# Lernen
\footnotesize
\underline{Beweis (fortgeführt)}

Für die partielle Ableitung hinsichtlich $\mu$ ergibt sich
\begin{align*}
\begin{split}
\frac{\partial}{\partial \mu} \ell(\mu,\mu_1,\mu_0,\Sigma)
& =  \frac{\partial}{\partial \mu}
\left(\sum_{i=1}^n  y^{(i)} \ln \mu  +
\sum_{i=1}^n \left(1 - y^{(i)}\right) \ln (1 - \mu) \right) \\
& = \sum_{i=1}^n  y^{(i)} \frac{\partial}{\partial \mu} \ln \mu  +
\sum_{i=1}^n  \left(1 - y^{(i)}\right) \frac{\partial}{\partial \mu} \ln (1 - \mu) \\
& = \frac{1}{\mu}\sum_{i=1}^n 1_{\lbrace y^{(i)} = 1 \rbrace}  -
\frac{1}{1-\mu}\sum_{i=1}^n 1_{\lbrace y^{(i)} = 0 \rbrace}. \\
\end{split}
\end{align*}

\noindent (4) Auflösen der Maximum Likelihood Gleichungen

Nullsetzen der partiellen Ableitungen des Gradienten der Log Likelihood Funktion
und Auflösen der resultierenden Log Likelihood Gleichungen ergibt dann die
Maximum-Likelihood-Schätzer des Modells der Linearen Diskriminanzanalyse.


# Lernen
\footnotesize
\vspace{2mm}
\underline{Beweis (fortgeführt)}

Nullsetzen der ersten Gradientenkomponente ergibt
\begin{align*}
\begin{split}
\frac{1}{\hat{\mu}}\sum_{i=1}^n 1_{\lbrace y^{(i)} = 1 \rbrace}  - \frac{1}{1-\hat{\mu}}\sum_{i=1}^n 1_{\lbrace y^{(i)} = 0 \rbrace}
& = 0 \\
\Leftrightarrow
\frac{1}{\hat{\mu}}\sum_{i=1}^n y^{(i)} - \frac{1}{1-\hat{\mu}}\sum_{i=1}^n \left(1 - y^{(i)}\right)
& = 0 \\
\Leftrightarrow
\frac{1-\hat{\mu}}{\hat{\mu}}\sum_{i=1}^n y^{(i)} - \sum_{i=1}^n \left(1 - y^{(i)}\right)
& = 0 \\
\Leftrightarrow
\frac{1-\hat{\mu}}{\hat{\mu}}\sum_{i=1}^n y^{(i)} - n +  \sum_{i=1}^n  y^{(i)}
& = 0 \\
\Leftrightarrow
(1-\hat{\mu})\sum_{i=1}^n y^{(i)} - \hat{\mu} n + \hat{\mu}\sum_{i=1}^n  y^{(i)}
& = 0 \\
\Leftrightarrow
(1-\hat{\mu})\sum_{i=1}^n y^{(i)} - \hat{\mu} n + \hat{\mu}\sum_{i=1}^n  y^{(i)}
& = 0 \\
\Leftrightarrow
(1-\hat{\mu} + \hat{\mu})\sum_{i=1}^n y^{(i)}
& = \hat{\mu} n \\
\Leftrightarrow
\hat{\mu} n
& = \sum_{i=1}^n y^{(i)} \\
\Leftrightarrow
\hat{\mu}
& = \frac{1}{n}\sum_{i=1}^n 1_{\lbrace y^{(i)} = 1 \rbrace}. \\
\end{split}
\end{align*}


# Lernen
\footnotesize
\underline{Beweis (fortgeführt)}

Nullsetzen der zweiten Gradientenkomponente ergibt
\begin{tiny}
\begin{align*}
\begin{split}
\sum_{i=1}^n \left(1 - y^{(i)} \right)\left(\left(x^{(i)} - \hat{\mu}_0 \right)^T \Sigma^{-1}\right)
& =
0 \\
\Leftrightarrow
\sum_{i=1}^n 1_{\lbrace y^{(i)} = 0\rbrace } \left(x^{(i)} - \hat{\mu}_0 \right)^T
& =
0 \\
\Leftrightarrow
\sum_{i=1}^n 1_{\lbrace y^{(i)} \rbrace } x^{(i)}  - \sum_{i=1}^n 1_{\lbrace y^{(i)} = 0 \rbrace} \hat{\mu}_0
& =
0 \\
\Leftrightarrow
\sum_{i=1}^n 1_{\lbrace y^{(i)} = 0 \rbrace} \hat{\mu}_0
& = \sum_{i=1}^n 1_{\lbrace y^{(i)} \rbrace } x^{(i)}
\\
\Leftrightarrow
\hat{\mu}_0 & =
\frac{1}{\sum_{i=1}^n 1_{\lbrace y^{(i)} = 0 \rbrace} } \sum_{i=1}^n 1_{\lbrace y^{(i)} \rbrace } x^{(i)}.
\end{split}
\end{align*}
\end{tiny}

Nullsetzen der dritten Gradientenkomponente ergibt dann in ähnlicher Weise den
Maximum-Likelihood-Schätzer  $\hat{\mu}_1$.

# Lernen
\footnotesize
\underline{Beweis (fortgeführt)}

Nullsetzen der vierten Gradientenkomponente ergibt dann schließlich

\begin{align*}
\begin{split}
0 & = \frac{n}{2}\hat{\Sigma} - \frac{1}{2}
\sum_{i=1}^n
\left(x^{(i)} - \mu_{1_{\lbrace y^{(i)} = 1 \rbrace}}\right)
\left(x^{(i)} - \mu_{1_{\lbrace y^{(i)} = 1 \rbrace}} \right)^T
\\
\Leftrightarrow
n\hat{\Sigma}
& =
\sum_{i=1}^n
\left(x^{(i)} - \mu_{1_{\lbrace y^{(i)} = 1 \rbrace}}\right)
\left(x^{(i)} - \mu_{1_{\lbrace y^{(i)} = 1 \rbrace}} \right)^T \\
\hat{\Sigma}
& =
\frac{1}{n}
\sum_{i=1}^n
\left(x^{(i)} - \mu_{1_{\lbrace y^{(i)} = 1 \rbrace}}\right)
\left(x^{(i)} - \mu_{1_{\lbrace y^{(i)} = 1 \rbrace}} \right)^T \\
\end{split}.
\end{align*}

# Lernen
\vspace{2mm}
Anwendung
\vspace{1mm}
\footnotesize
\begin{equation*}
\hat{\mu}    =  0.52,
\hat{\mu}_0  = \begin{pmatrix} 0.94 \\ 1.01 \end{pmatrix},
\hat{\mu}_1  = \begin{pmatrix} 1.94 \\ 2.09 \end{pmatrix},
\hat{\Sigma} = \begin{pmatrix} 0.53 & -0.26 \\ -0.26 & 0.49 \end{pmatrix}
\end{equation*}
\vfill
\tiny
\setstretch{1}
```{r, echo = T}
# Parameterlernen  
n            = ncol(x)                                                          # n
m            = nrow(x)                                                          # m
mu_hat       = mean(y)                                                          # \hat{\mu}
mu_0_hat     = rowMeans(x[,y == 0])                                             # \hat{\mu}_0
mu_1_hat     = rowMeans(x[,y == 1])                                             # \hat{\mu}_1
Sigma_hat    = matrix(rep(0,m^2), nrow = m)                                     # \hat{\Sigma}
for(i in 1:n){
  Sigma_hat  = (Sigma_hat + (1/n)*
               ((y[i] == 0)*(x[,i]-mu_0_hat) %*% t((x[,i]-mu_0_hat))
               +(y[i] == 1)*(x[,i]-mu_1_hat) %*% t((x[,i]-mu_1_hat))))
}
beta_hat     = matrix(c((1/2)*( t(mu_0_hat) %*% solve(Sigma_hat) %*% mu_0_hat   # \hat{beta}
                              - t(mu_1_hat) %*% solve(Sigma_hat) %*% mu_1_hat)
                              + log(mu_hat/(1-mu_hat)),
                        -solve(Sigma_hat) %*% (mu_0_hat-mu_1_hat)),
                      nrow = m+1)
```

# Lernen
```{r, eval = F, echo = F}
pdf(
file        = "10_Abbildungen/mv_10_lda_lernen.pdf",
width       = 5,
height      = 5)
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,
cex         = 1,
cex.main    = 1)

# Gaussian Isokontur Paket
library(ellipse)
iso_0           = ellipse(Sigma    , level = 0.5, centre = mu_0)
iso_1           = ellipse(Sigma    , level = 0.5, centre = mu_1)
iso_0_hat       = ellipse(Sigma_hat, level = 0.5, centre = mu_0_hat)
iso_1_hat       = ellipse(Sigma_hat, level = 0.5, centre = mu_1_hat)

# N(\mu_0,\Sigma)
plot(
iso_0,
type = "l",
col = "Red",
xlim = c(0,3),
ylim = c(0,3),
xlab = TeX("$x_1$"),
ylab = TeX("$x_2$"))
points(
mu_0[1],
mu_0[2],
col  = "Red",
pch = 3,
cex = 1)

# N(\hat{\mu}_0,\hat{\Sigma})
lines(
iso_0_hat[,1],
iso_0_hat[,2],
col = "Red",
lty  = 2)
points(
mu_0_hat[1],
mu_0_hat[2],
col  = "Red",
pch = 2,
cex = 1)

# N(\mu_1,\Sigma)
lines(
iso_1[,1],
iso_1[,2],
type = "l",
col = "Blue")
points(
mu_1[1],
mu_1[2],
col  = "Blue",
pch = 3,
cex = 1)

# N(\hat{\mu}_1,\hat{\Sigma})
lines(
iso_1_hat[,1],
iso_1_hat[,2],
col = "Blue",
lty  = 2)
points(
mu_1_hat[1],
mu_1_hat[2],
col  = "Blue",
pch = 2,
cex = 1)

# Daten y^{(i)} = 0
points(
D[1,D[3,] == 0],
D[2,D[3,] == 0],
col = "White",
bg  = "Red",
pch = 21)

# Daten y^{(i)} = 1
points(
D[1,D[3,] == 1],
D[2,D[3,] == 1],
col = "White",
bg  = "Blue",
pch = 21)
dev.off()
```
\vspace{2mm}
Anwendung
\footnotesize
\begin{equation*}
m             = 2, 
n             = 200,
\hat{\mu}     =  0.52,
\hat{\mu}_0   = \begin{pmatrix} 0.94 \\ 1.01 \end{pmatrix},
\hat{\mu}_1   = \begin{pmatrix} 1.94 \\ 2.09 \end{pmatrix},
\hat{\Sigma}  = \begin{pmatrix} 0.53 & -0.26 \\ -0.26 & 0.49 \end{pmatrix}
\end{equation*}

\center
\textcolor{blue}{$+$}             $\mu_0,$
\textcolor{blue}{$\bullet$}       $x^{(i)}$ mit $y^{(i)} = 0,$
\textcolor{blue}{$\triangle$}$\hat{\mu}_0, \quad$
\textcolor{red}{$+$}              $\mu_1,$
\textcolor{red}{$\bullet$}        $x^{(i)}$ mit $y^{(i)} = 1,$
\textcolor{red}{$\triangle$} $\hat{\mu}_1$

```{r, echo = FALSE, out.width = "55%", fig.align = "center"}
knitr::include_graphics("10_Abbildungen/mv_10_lda_lernen.pdf")
```

# 
\vfill
\setstretch{2.1}
\large
Anwendungsszenario

Modellformulierung

Inferenz und Klassifikation

Lernen

**Anwendungsbeispiel**

Selbstkontrollfragen
\vfill

# Anwendungsbeispiel

\vspace{2mm}
Beispieldatensatz

\center
BDI und GLU Werte bei Depressionsdiagnose als Prädiktoren von CBT Erfolg

```{r, echo = FALSE, out.width = "65%", fig.align = "center"}
knitr::include_graphics("10_Abbildungen/mv_10_lda_anwendungsbeispiel_1.pdf")
```

```{r, echo = F}
# Modellformulierung
library(mvtnorm)                                # Multivariate Normalverteilung
set.seed(0)                                     # Zufallszahlengenrator                        
m      = 2                                      # Featurevektordimension
n      = 60                                     # Anzahl Trainingsdatenpunkte
mu     = 0.5                                    # wahrer, aber unbekannter, Bernoulliparameter \mu
mu_0   = c(1,1)+.2                              # wahrer, aber unbekannter, Normalverteilungsparameter \mu_0
mu_1   = c(2,2)-.2                              # wahrer, aber unbekannter, Normalverteilungsparameter \mu_1
Sigma  = matrix(c( 0.50, -0.15,                 # Kovarianzmatrixparameter
                  -0.15,  0.50),
                byrow = TRUE,
                nrow = m)

# Modellsampling
y      = matrix(rep(NaN,n)  , nrow = 1)         # Labeldatenarray
x      = matrix(rep(NaN,n*m), nrow = m)         # Featurevektorarray
for(i in 1:n){                                  # Iteration über Datenpunkte
  y[i]  = rbinom(1,1,mu)                        # y^{(i)} \sim Bern(\mu)
  x[,i] = ((rmvnorm(1, mu_0, Sigma)**(y[i]))    # x^{i} \sim N(\mu_0,\Sigma)^{1-y}N(\mu_1,\Sigma)^y
          *(rmvnorm(1, mu_1, Sigma)**(1-y[i])))
}
D           = data.frame(t(rbind(x,y)))
colnames(D) = c("BDI", "GLU", "RES")
write.csv(D, "./10_Daten/10_Lineare_Diskriminanzanalyse.csv", row.names = F)
```

```{r, eval = F, echo = F}
library(latex2exp)
D           = read.csv("./10_Daten/10_Lineare_Diskriminanzanalyse.csv", header = T)
pdf(
file        = "10_Abbildungen/mv_10_lda_anwendungsbeispiel_1.pdf",
width       = 4.5,
height      = 4.5)
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,
cex         = 1,
cex.main    = 1)

# Daten y^{(i)} = 0
plot(
D[D[,3] == 0,1],
D[D[,3] == 0,2],
col     = "White",
bg      = "Red",
pch     = 21,
xlim    = c(0,3),
ylim    = c(0,3),
xlab    = "BDI",
ylab    = "GLU")

# Daten y^{(i)} = 1
points(
D[D[,3] == 1,1],
D[D[,3] == 1,2],
col = "White",
bg  = "Blue",
pch = 21)

legend(
"topleft",
c("Non-Responder", "Responder"),
pch         = 19,
col         = c("Red", "Blue"),
bty         = "n",
cex         = .8,
x.intersp   = 1)
dev.off()
```

```{r, echo = FALSE, out.width = "55%", fig.align = "center"}
knitr::include_graphics("10_Abbildungen/mv_10_lda_anwendungsbeispiel_1.pdf")
```


# Anwendungsbeispiel
\vspace{1mm}
Beispieldatensatz
\vspace{1mm}

\center
\small
`BDI` und `GLU` Werte bei Depressionsdiagnose als Prädiktoren von CBT Erfolg `RES`
\footnotesize
\setstretch{1}
```{r echo = F, eval = T}
library(knitr)
D           = read.csv("./10_Daten/10_Lineare_Diskriminanzanalyse.csv", header = T)
kable(head(D, n = 20L), digits = 2, align = "c")
``` 


# Anwendungsbeispiel
\vspace{2mm}
LOOCV zur Bestimmung der Featureprädiktivität
\vspace{2mm}
\tiny
\setstretch{.9}
```{r, echo = T}
D       = read.csv("./10_Daten/10_Lineare_Diskriminanzanalyse.csv")             # Datensatz                                                 
K       = nrow(D)                                                               # Anzahl Cross Folds
p_y     = matrix(rep(NaN, K)  , nrow = 1)                                       # p(y = 1|x)                                   
y_pred  = matrix(rep(NaN, K*2), nrow = K)                                       # Prädiktionsperformancearray
for(k in 1:K){                                                                  # K-fold LOOCV
  x_train     = t(D[-k,1:2])                                                    # Trainingsdatensatzfeatures
  y_train     = t(D[-k,3  ])                                                    # Trainingsdatensatzlabels
  x_test      = t(D[ k,1:2])                                                    # Testdatensatzfeaturevektor
  y_pred[k,1] = t(D[ k,3])                                                      # Testdatensatzfeaturevektorlabel    
  n            = ncol(x_train)                                                  # n
  m            = nrow(x_train)                                                  # m
  mu_hat       = mean(y_train)                                                  # \hat{\mu}
  mu_0_hat     = rowMeans(x_train[,y_train == 0])                               # \hat{\mu}_0
  mu_1_hat     = rowMeans(x_train[,y_train == 1])                               # \hat{\mu}_1
  Sigma_hat    = matrix(rep(0,m^2), nrow = m)                                   # \hat{\Sigma}
  for(i in 1:n){
    Sigma_hat  = (Sigma_hat + (1/n)*
                ((y_train[i] == 0)*(x_train[,i]-mu_0_hat) %*% t((x_train[,i]-mu_0_hat))
                +(y_train[i] == 1)*(x_train[,i]-mu_1_hat) %*% t((x_train[,i]-mu_1_hat))))}
  beta_hat     = matrix(c((1/2)*( t(mu_0_hat) %*% solve(Sigma_hat) %*% mu_0_hat # \hat{beta}
                                - t(mu_1_hat) %*% solve(Sigma_hat) %*% mu_1_hat)
                                + log(mu_hat/(1-mu_hat)), 
                                -solve(Sigma_hat) %*% (mu_0_hat-mu_1_hat)), nrow = m+1)
  x_test_tilde = rbind(1, x_test)                                               # \tilde{x}
  p_y[k]       = 1/(1+exp(-t(x_test_tilde) %*% beta_hat))                       # p(y=1|x)
  y_pred[k,2]  = as.numeric(p_y[k] >= 0.5)}                                     # Prädiktion
rp      = sum(y_pred[y_pred[,1] == 1,2] == 1)                                   # |(1,1)|
rn      = sum(y_pred[y_pred[,1] == 0,2] == 0)                                   # |(0,0)|
fp      = sum(y_pred[y_pred[,1] == 0,2] == 1)                                   # |(0,1)|
fn      = sum(y_pred[y_pred[,1] == 1,2] == 0)                                   # |(1,0)|
ACC     = (rp+rn)/(rp+fp+rn+fn)                                                 # Accuracy            
SEN     = rp/(rp+fn)                                                            # Sensitivity
SPE     = rn/(rn+fp)                                                            # Specificity
cat("Accuracy   : "  , ACC, ", Sensitivity: " , SEN, ", Specificity: " , SPE)   # Ergebnisausgabe
```

# Anwendungsbeispiel
\vspace{2mm}
Evaluation der Non-Response Wahrscheinlichkeit
\vspace{2mm}
\tiny
\setstretch{1}
```{r, echo = T}
D           = read.csv("./10_Daten/10_Lineare_Diskriminanzanalyse.csv")         # Datensatz                                                 
x           = t(D[,1:2])                                                        # Featurevektoren
y           = t(D[,3])                                                          # Label
n           = ncol(x)                                                           # n
m           = nrow(x)                                                           # m
mu_hat      = mean(y)                                                           # \hat{\mu}
mu_0_hat    = rowMeans(x[,y == 0])                                              # \hat{\mu}_0
mu_1_hat    = rowMeans(x[,y == 1])                                              # \hat{\mu}_1
Sigma_hat   = matrix(rep(0,m^2), nrow = m)                                      # \hat{\Sigma}
for(i in 1:n){
  Sigma_hat  = (Sigma_hat + (1/n)*
               ((y[i] == 0)*(x[,i]-mu_0_hat) %*% t((x[,i]-mu_0_hat))
               +(y[i] == 1)*(x[,i]-mu_1_hat) %*% t((x[,i]-mu_1_hat))))}
beta_hat     = matrix(c((1/2)*( t(mu_0_hat) %*% solve(Sigma_hat) %*% mu_0_hat   # \hat{beta}
                              - t(mu_1_hat) %*% solve(Sigma_hat) %*% mu_1_hat)
                              + log(mu_hat/(1-mu_hat)),
                        -solve(Sigma_hat) %*% (mu_0_hat-mu_1_hat)),
                      nrow = m+1)
x_min     = 0                                                                   # GLU/BDI Minimum
x_max     = 3                                                                   # GLU/BDI Maximum
x_res     = 5e2                                                                 # GLU/BDI Auflösung
bdi       = seq(x_min, x_max, length.out = x_res)                               # BDI
glu       = seq(x_min, x_max, length.out = x_res)                               # GLU
p_y       = matrix(rep(NaN, x_res*x_res), nrow = x_res)                         # p(y=1|(BDI, GLU))
for(i in 1:x_res){                                                              # BDI Iterationen
    for(j in 1:x_res){                                                          # GLU Iterationen
        x_tilde   = rbind(1, bdi[i], glu[j])                                    # \tilde{x}
        p_y[i,j]  = 1/(1+exp(-t(x_tilde) %*% beta_hat))}}                       # p(y=1|(BDI, GLU))  
```

# Anwendungsbeispiel
\vspace{2mm}
Evaluation der Non-Response Wahrscheinlichkeit

```{r, eval = F, echo = F}
library(latex2exp)
pdf(
file        = "./10_Abbildungen/mv_10_lda_anwendungsbeispiel_2.pdf",
width       = 5,
height      = 5)
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,
cex         = 1,
cex.main    = 1)
filled.contour(
bdi,
glu,
t(p_y[nrow(p_y):1, ncol(p_y):1]),
col         = hcl.colors(20, "YlOrRd"),
levels      = seq(0,1,len = 20),
xlab        = "BDI",
ylab        = "GLU",
main        = "P(Nonresponse|BDI,GLU)")
dev.off()
```
```{r, echo = FALSE, out.width = "80%", fig.align = "center"}
knitr::include_graphics("10_Abbildungen/mv_10_lda_anwendungsbeispiel_2.pdf")
```

# 
\vfill
\setstretch{2.1}
\large
Anwendungsszenario

Modellformulierung

Inferenz und Klassifikation

Lernen

Anwendungsbeispiel

**Selbstkontrollfragen**
\vfill


# Selbstkontrollfragen
\footnotesize
\setstretch{1.8}

1. Geben Sie die Definition einer Bernoullizufallsvariable wieder.
1. Geben Sie die Definition des Modells der Linearen Diskriminanzanalyse wieder.
1. Erläutern Sie die Generation von Daten unter dem Modell der Linearen Diskriminanzanalyse.
1. Geben Sie das Theorem zur Inferenz der Linearen Diskriminanzanalyse wieder.
1. Geben Sie die Definition der Klassifikationsregel der Linearen Diskriminanzanalyse wieder.
1. Geben Sie das Theorem zur Maximum-Likelihood-Schätzung der Linearen Diskriminanzanalyse wieder.
1. Erläutern Sie wie, mithilfe einer Linearen Diskriminanzanalyse die psychotherapeutische 
Nonresponsewahrscheinlichkeit geschätzt werden kann. 
