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

#  {.plain}

\center
```{r, echo = FALSE, out.width = "20%", fig.align = "center"}
knitr::include_graphics("12_Abbildungen/mv_12_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}{(12) Logistische Regression}
\vfill


# 
\vfill
\setstretch{2.3}
\large
Anwendungsszenario

Modellformulierung

Klassifikation

Lernen

Anwendungsbeispiel

Selbstkontrollfragen
\vfill

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

Modellformulierung

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}
BDI und GLU Werte bei Depressionsdiagnose als Prädiktoren von CBT Erfolg

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

# 
\vfill
\setstretch{2.3}
\large
Anwendungsszenario

**Modellformulierung**

Klassifikation

Lernen

Anwendungsbeispiel

Selbstkontrollfragen
\vfill

# Modellformulierung
\small
\begin{definition}[Generalisiertes Lineares Modell]
\justifying
$x \in \mathbb{R}^{m+1}$ sei ein erweiterter Featurevektor und $\ups$ das assoziierte
Label. Weiterhin sei für einen \textit{Parametervektor} $\beta \in \mathbb{R}^{m+1}$
\begin{equation}
\eta := x^T\beta
\end{equation}
ein  \textit{linearer Prädiktor}. Dann ist ein generalisierte lineares Modell definiert
mithilfe einer zweimal differenzierbaren und invertierbaren  \textit{Link-Funktion}
\begin{equation}
g : \mathbb{R} \to \mathbb{R}, \mathbb{E}(\ups) \mapsto g(\mathbb{E}(\ups)) =: \eta.
\end{equation}
definiert. Die Inverse der Link-Funktion,
\begin{equation}
g^{-1}:  \mathbb{R} \to \mathbb{R}, \eta \mapsto g^{-1}(\eta) = \mathbb{E}(\ups)
\end{equation}
heißt  \textit{Mean-Funktion} und wird mit $f$ bezeichnet, so dass
\begin{equation}
f :  \mathbb{R} \to \mathbb{R}, \eta \mapsto f(\eta) = \mathbb{E}(\ups).
\end{equation}
\end{definition}


# Modellformulierung
\small
\begin{definition}[ALM als Generalisiertes Lineares Modell]
\justifying
Das Allgemeine Lineare Modell mit u.i.v. Störvariablen ist das Generalisierte Lineare Model, bei dem
\begin{enumerate}
\item die Labelvariable eine univariat normalverteilte Zufallsvariable
\begin{equation}
\ups \sim N(\mu,\sigma^2),
\end{equation}
ist und
\item die Link-Funktion durch die Identität
\begin{equation}
g : \mathbb{R} \to \mathbb{R}, \mu \mapsto g(\mu) := \mu =: \eta.
\end{equation}
gegeben ist.
\end{enumerate}
Weil die Inverse der Identität wiederrum die Identität ist, folgt,
dass die Mean-Funktion des ALM durch
\begin{equation}
f :  \mathbb{R} \to \mathbb{R}, \eta \mapsto f(\eta) = \eta =  \mu.
\end{equation}
gegeben ist. Die Parameter des Allgemeinen Linearen Modells sind die Komponenten
des Vektors $\beta \in \mathbb{R}^{m}$ des linearen Prädiktors $\eta = x^T\beta$
und der Parameter $\sigma^2>0$.
\end{definition}

# Modellformulierung
\small
\begin{definition}[Logistische Regression als Generalisiertes Lineares Modell]
\justifying
Das Modell der Logistischen Regression (LR) ist das Generalisierte Lineare Modell, bei dem
\begin{enumerate}
\item die Labelvariable eine Bernoulli-Zufallsvariable
\begin{equation}
\ups \sim B(\mu)
\end{equation}
ist und
\item die Link-Funktion durch die \textit{standard logit function}
\begin{equation}
g : [0,1] \to \mathbb{R}, \mu \mapsto g(\mu) := \ln \left(\frac{\mu}{1 - \mu} \right) =: \eta
\end{equation}
gegeben ist.
\end{enumerate}
Die Parameter des Logistischen Regressionsmodels sind die Komponenten
des Vektors $\beta \in \mathbb{R}^{m}$ des linearen Prädiktors $\eta = x^T\beta$.
\end{definition}

# Modellformulierung
\small
\begin{theorem}[Mean-Funktion der Logistischen Regression]
\justifying
\normalfont
Die Inverse der Link-Funktion des Modells der Logistischen Regression
und somit seine Mean-Funktion ist die
\textit{Logistische Standardfunktion}
\begin{equation}
f : \mathbb{R} \to [0,1], \eta \mapsto f(\eta) = \frac{1}{1 + \exp(- \eta)}.
\end{equation}
\end{theorem}

\footnotesize
\underline{Beweis}
\vspace{1mm}

Umformen der logit function ergibt
\begin{align*}
\begin{split}
\eta & = \ln (\mu/(1-\mu))		\\
\Leftrightarrow
-\eta & = -\ln(\mu/(1-\mu))		\\
\Leftrightarrow
-\eta & = \ln((1-\mu)/\mu))		\\
\Leftrightarrow
\exp(-\eta) & = (1-\mu)/\mu 	\\
\Leftrightarrow
\mu \exp(-\eta) & = 1 - \mu 	\\
\Leftrightarrow
\exp(-\eta) & = \mu^{-1} - 1 	\\
\mu & = 1/(\exp(-\eta) + 1)
\end{split}
\end{align*}
$\hfill \Box$

# Modellformulierung
Link und Mean Funktionen
\vspace{2mm}
```{r, echo = F, eval = F}
library(latex2exp)
pdf(
file        = "12_Abbildungen/mv_12_lr_link_mean.pdf",
width       = 8,
height      = 4)
par(
family      = "sans",
mfcol       = c(1,2),
pty         = "s",
bty         = "l",
lwd         = 1,
las         = 1,
mgp         = c(2,1,0),
xaxs        = "i",
yaxs        = "i",
font.main   = 1,
cex         = 1.1,
cex.main    = 1.2)

mu          = seq(0,1,len = 1e2)
g_mu        = log(mu/(1-mu))
eta         = seq(-10,10, len = 1e2)
f_eta       = 1/(1 + exp(-eta))

# g(\mu)
plot(
mu,
g_mu,
type = "l",
col = "Blue",
xlim = c(0,1),
ylim = c(-10,10),
xlab = TeX("$\\mu$"),
ylab = TeX("$\\eta$"),
main = TeX("$g(\\mu) := ln (\\mu/1 - \\mu)$"))
grid()

# f(\eta)
plot(
eta,
f_eta,
type = "l",
col = "Blue",
xlim = c(-10,10),
ylim = c(0,1),
xlab = TeX("$\\eta$"),
ylab = TeX("$\\mu$"),
main = TeX("$f(\\eta) := 1/(1 + \\exp(-\\eta))$"))
grid()
dev.off()
```

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

# Modellformulierung
\small
\begin{definition}[Modell der Logistischen Regression]
\justifying
$\ups$ sei eine Zufallsvariable mit Ergebnisraum $\{0,1\}$. Dann ist das
\textit{Modell der Logistischen Regressions} definiert als die WMF von $\ups$
\begin{equation}
p(y) = B\left(y;\frac{1}{1 + \exp(-x^T \beta)}\right),
\end{equation}
wobei $x \in \mathbb{R}^{m+1}$ einen erweiterten Featurevektor und
$\beta \in \mathbb{R}^{m+1}$ den \textit{Parametervektor} bezeichnen
\end{definition}

\footnotesize
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+1} \mbox{ und } y^{(i)} \in \{0,1\}
\end{equation}
eines LR Modells wie folgt erzeugt:

(1) Definition von $x^{(i)}$,
(2) Ziehen von  $y^{(i)}$ aus $p(y) = B(y;\mu)$ mit Erwartungswertparameter $\mu = \frac{1}{1 + \exp(-x^{(i)^T} \beta)}$.

# Modellformulierung
\small
Datengeneration bei einfacher Logistischer Regression für $m = 1, \beta = (-2,2)^T,  n = 30$.
\vspace{4mm}
\tiny
\setstretch{1}
```{r, echo = T}
# Modellparameter
m    = 1                                # Featurevektoredimensionalität
n    = 30                               # Anzahl Datenpunkte
x    = matrix(c(rep(1,n),               # Definition des erweiterten Featurevektors
                seq(-5,5, len = n)),
              nrow  = 2,
              byrow = TRUE)
beta = matrix(c(-2,2), nrow = 2)        # wahrer, aber unbekannter, Parametervektor
eta  = t(x) %*% beta                    # wahrer, aber unbekannter linearer Prädiktor
mu   = 1/(1+exp(-eta))                  # wahrer, aber unbekannter, Bernoulliparametervektor

# Dategeneration
set.seed(2)                             # Zufallsgeneratorzustand
y    = rep(NaN,2)                       # Datenarray
for(i in 1:n){
  y[i] = rbinom(1,1,mu[i])              # Bernoullivariablenrealisierung
}
```

# Modellformulierung
Datengeneration bei einfacher Logistischer Regression für $m = 1, \beta = (-2,2)^T,  n = 30$.
\vspace{4mm}

```{r, eval = F, echo = F}
library(latex2exp)
pdf(
file        = "12_Abbildungen/mv_12_lr_datengeneration.pdf",
width       = 10,
height      = 5)
par(
family      = "sans",
mfcol       = c(1,2),
pty         = "m",
bty         = "l",
lwd         = 1,
las         = 1,
mgp         = c(2,1,0),
xaxs        = "i",
yaxs        = "i",
font.main   = 1,
cex         = 1.1,
cex.main    = 1.2)

plot(
x[2,],
eta,
type = "b",
pch  = 16,
xlab = TeX("$x_2$"),
ylab = "",
xlim = c(min(x[2,])-1, max(x[2,])+1),
ylim = c(min(eta)-1, max(eta)+1),
main = TeX("$\\eta = x^T \\beta$"))
grid()

plot(
x[2,],
mu,
type = "b",
xlab = TeX("$x_2$"),
ylab = "",
col  = "gray60",
pch  = 16,
xlim = c(min(x[2,])-1, max(x[2,])+1),
ylim = c(-.1,1.1),
main = TeX("$\\mu = 1/(1 + exp(-\\eta))$ und $y$"))
points(
x[2,],
y,
type = "p")
grid()

legend(
"topleft",
c("y", TeX("$\\mu$")),
pch         = c(1,16),
col         = c("Black","gray60"),
bty         = "n",
cex         = 1,
x.intersp   = 1)
dev.off()
```

```{r, echo = FALSE, out.width = "90%"}
knitr::include_graphics("12_Abbildungen/mv_12_lr_datengeneration.pdf")
```

# 
\vfill
\setstretch{2.3}
\large
Anwendungsszenario

Modellformulierung

**Klassifikation**

Lernen

Anwendungsbeispiel

Selbstkontrollfragen
\vfill

# Klassifikation
\small
\begin{definition}[Klassifikationsregel der Logistischen Regression]
\normalfont
\justifying
$p(y)$ sei die WMF eines Logistischen Regressionsmodells. 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) \ge p(y = 1) \\
1 & \mbox{ für } p(y = 0)   < p(y = 1)
\end{cases}
\end{equation}
\end{definition}

\footnotesize
Bemerkung

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

<!-- # Klassifikation
\footnotesize
\begin{theorem}[Lineare Diskriminanzfunktion der Logistischen Regression]
\normalfont
\justifying
$p(y)$ sei die WMF eines Logistischen Regressionsmodells und $\beta \in \mathbb{R}^{m+1}$
sei der Parametervektor. Dann kann die Klassifikationsregel $\delta$ der Logistischen Regression
als eine lineare Diskriminanzfunktion der Form
\begin{equation}
h : \mathbb{R}^m \to \{0,1\}, x \mapsto h(x) := g(f(x)),
\end{equation}
mit
\begin{equation}
f : \mathbb{R}^{m} \to \mathbb{R}, x \mapsto f(x) := w^T x + w_0,
\end{equation}
und
\begin{equation}
g : \mathbb{R} \to \{0,1\}, f(x) \mapsto g(f(x)) :=
\begin{cases}
0, & f(x) \ge 0 \\
1, & f(x)  < 0
\end{cases}
\end{equation}
geschrieben werden, d.h. es gilt $\delta(x) = h(x)$ für alle $x \in \mathbb{R}^m$.
Inbesondere gilt dabei
\begin{equation}
w_0 = \beta_1 \mbox{ und } w = (\beta_2,...,\beta_{m+1})^T
\end{equation}
\end{theorem}

\footnotesize
Bemerkung

* CAVE: $f$ bezeichnet hier eine linear-affine Funktion, nicht die Logistische Standardfunktion.
* Ein Beweis ergibt sich in Analogie zum Fall der Linearen Diskriminanzanalyse -->

# 
\vfill
\setstretch{2.3}
\large
Anwendungsszenario

Modellformulierung

Klassifikation

**Lernen**

Anwendungsbeispiel

Selbstkontrollfragen
\vfill

# Lernen
\footnotesize
\begin{theorem}[Log-Likelihood-Funktion der Logistischen Regression]
\justifying
\normalfont
$\lbrace(x^{(i)},y^{(i)})\rbrace_{i=1}^n$ sei ein Trainingsdatensatz aus erweiterten
Featurevektoren und assoziierten Labelvariablenrealisierungen und $f$ sei die
Logistische Standardfunktion. Dann hat die Log-Likelihood-Funktion der Logistischen
Regression die Form
\begin{equation*}
\ell : \mathbb{R}^m \to \mathbb{R}, \beta \mapsto \ell(\beta)
:= \sum_{i=1}^n y^{(i)} \ln (f(x^{{(i)}^T}\beta))
 			  + (1 - y^{(i)}) \ln (1 - f(x^{{(i)}^T}\beta)).
\end{equation*}
\end{theorem}

\tiny
\setstretch{.8}
\underline{Beweis}

Wir halten zunächst fest, dass für u.i.v. Labelvariablen gilt, dass
\begin{equation}
\ell(\beta)
:= \ln p(y^{(1)}, ...,y^{(n)})
 = \ln \prod_{i=1}^n p(y^{(i)})
 = \sum_{i=1}^n \ln p(y^{(i)})
\end{equation}
Mit der WMF der Bernoulliverteilung folgt dann
\begin{align}
\begin{split}
\ell(\beta)
& = \sum_{i=1}^n \ln \left(f\left(x^{{(i)}^T}\beta\right)^{y^{(i)}}\left(1-f\left(x^{{(i)}^T}\beta\right)\right)^{1 - y^{(i)}}\right)	                    \\
& = \sum_{i=1}^n y^{(i)}  \ln \left(f\left(x^{{(i)}^T}\beta\right)\right) + \left(1 - {y^{(i)}}\right) \ln\left(1 - f\left(x^{{(i)}^T}\beta\right)\right)	\\
\end{split}
\end{align}

# Lernen
\small
\vspace{2mm}
Log-Likelihood-Funktion des generierten Datensatzes für $m = 1, \beta = (-2,2)^T,  n = 30$.
\vspace{2mm}

\tiny
\setstretch{1}
```{r, echo = T}
# Funktionsdefinitionen
# ------------------------------------------------------------------------------------------------
# Standard Logistic Function
f = function(eta){
    return(1/(1 + exp(-eta)))
}

# Log Likelihood Function
llh = function(x,y,beta){
    n   = ncol(x)
    ell = 0
    for(i in 1:n){
        ell = ell + y[i]*log(f(t(x[,i]) %*% beta)) + (1-y[i])*log(1-f(t(x[,i]) %*% beta))
    }
    return(ell)
}

# Log-Likelihood-Funktion Auswertung
# ------------------------------------------------------------------------------------------------
beta_min  = -5                                                   # beta Minimum
beta_max  =  5                                                   # beta Maximum
beta_res  = 5e1                                                  # beta Auflösung
beta_1    = seq(beta_min, beta_max, length.out = beta_res)       # beta_1 Raum
beta_2    = seq(beta_min, beta_max, length.out = beta_res)       # beta_2 Raum
ell       = matrix(rep(NaN, beta_res*beta_res), nrow = beta_res) # Log-Likelihood-Funktion Array
for(i in 1:beta_res){
    for(j in 1:beta_res){
        beta12   = matrix(c(beta_1[i], beta_2[j]), nrow = 2)
        ell[i,j] = llh(x,y,beta12)
    }
}
```

# Lernen
\vspace{1mm}
\small
\vspace{2mm}
Log-Likelihood-Funktion des generierten Datensatzes für $m = 1, \beta = (-2,2)^T,  n = 30$.
\vspace{-2mm}

```{r, eval = F, echo = F}
library(latex2exp)
pdf(
file        = "12_Abbildungen/mv_12_lr_llh.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.3,
cex.main    = 1.1)
filled.contour(
beta_1,
beta_2,
ell,
col    = hcl.colors(20, "YlOrRd"),
levels = seq(-20,0,len = 20),
ylim   = c(0,5),
xlab   = TeX("$\\beta_1$"),
ylab   = TeX("$\\beta_2$"),
main   = "Log-Likelihood-Funktion")
beta = matrix(c(-2,2), nrow = 2)         
dev.off()
```

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

# Lernen
\footnotesize
\begin{theorem}[Gradientverfahren der Logistischen Regression]
\normalfont
\justifying
Gegeben sei das Modell einer Logistischen Regression und $\{(x^{(i)},y^{(i)})\}_{i=1}^n$
sei ein entsprechender Trainingsdatensatz. Dann kann ein Maximum-Likelihood-Schätzer
$\hat{\beta}$ für den Parametervektor $\beta$ des Logistischen Regressionsmodell durch folgendes Gradientenverfahren gewonnen werden:
\begin{itemize}
\item[(0)] Wähle $\beta^0 \in \mathbb{R}^{}, \alpha > 0, \delta > 0$
\item[(1)] Für $k = 0,1,2,...$ bis zur Konvergenz setze
\begin{equation}
\beta^{(k+1)} := \beta^{(k)} + \alpha \nabla \ell(\beta^{(k)}).
\end{equation}
\end{itemize}
wobei $\nabla \ell\left(\beta^k\right)$ den Gradienten der Log-Likelihood-Funktion
der Logistischen Regression bezeichnet und die Form
\begin{equation}
\nabla \ell(\beta)
=
\begin{pmatrix}
\frac{\partial}{\partial \beta_1} \ell(\beta) 	\\
\frac{\partial}{\partial \beta_2} \ell(\beta) 	\\
\vdots 											\\
\frac{\partial}{\partial \beta_m} \ell(\beta) 	\\
\end{pmatrix}
=
\begin{pmatrix}
\sum_{i=1}^n (y^{(i)} - f(x^{{(i)}^T} \beta ))x_1^{(i)} 	\\
\sum_{i=1}^n (y^{(i)} - f(x^{{(i)}^T} \beta ))x_2^{(i)} 	\\
\vdots 													    \\
\sum_{i=1}^n (y^{(i)} - f(x^{{(i)}^T} \beta ))x_m^{(i)} 	\\
\end{pmatrix}
\end{equation}
\end{theorem}
\vspace{-1mm}
Bemerkungen
\vspace{-1mm}

* Das reine Gradientenverfahren zum Lernen der Parameter eines LR Modells ist recht instabil.
* Iteratively Weighted Least Squares Verfahren werden zur ML Schätzung in GLMs bevorzugt (@green1984).
* IWLS Verfahren nutzen Gradienten und Hesse-Matrix ähnlich wie Gauss-Newton Verfahren.
* R implementiert in der `glm()` ein IWLS Verfahren.

# Lernen
\footnotesize
\underline{Beweis}

Um die $j$te partielle Ableitung der Log-Likelihood-Funktion zu bestimmen, halten
wir zunächst fest, dass sich die Ableitung der logistic function $f$ hinsichtlich $\eta$
zu
\begin{equation}\label{eq:deta_f}
\frac{d}{d\eta}f : \mathbb{R} \to \mathbb{R}, \eta \mapsto \frac{d}{d\eta}f(\eta) = f(\eta)(1 - f(\eta))
\end{equation}
ergibt. Dies kann wie folgt eingesehen werden:
\begin{align*}
\begin{split}
\frac{d}{d\eta}f(\eta)
& = \frac{d}{d\eta}\left({1 + \exp(-\eta)}\right)^{-1} \\
& = -\left({1 + \exp(-\eta)}\right)^{-2}\cdot \exp(-\eta)\cdot(-1) \\
& = \frac{\exp(-\eta)}{(1 + \exp(-\eta))^2} \\
& = \frac{1 + \exp(-\eta) - 1}{(1 + \exp(-\eta))^2} \\
& = \frac{1 + \exp(-\eta)}{(1 + \exp(-\eta))^2} - \frac{1}{(1 + \exp(-\eta))^2} \\
& = \frac{1}{1 + \exp(-\eta)} - \frac{1}{(1 + \exp(-\eta))^2} \\
& = \frac{1}{1 + \exp(-\eta)}\left(1 - \frac{1}{1 + \exp(-\eta)}\right) \\
& = f(\eta)(1 - f(\eta))
\end{split}
\end{align*}
\footnotesize
Damit ergibt sich dann für $\frac{\partial}{\partial \beta_j} \ell, j = 1,...,m$:

# Lernen
\setstretch{1}
\tiny
\begin{align*}
\begin{split}
\frac{\partial}{\partial \beta_j} \ell(\beta) 
& = \frac{\partial}{\partial \beta_j}
\left(\sum_{i=1}^n y^{(i)} \ln \left(f\left(x^{(i)^T} \beta\right)\right)  + \left(1 - y^{(i)}\right) \ln \left(1 - f\left(x^{(i)^T}\beta\right)\right)\right) \\
& =
\sum_{i=1}^n y^{(i)}
\frac{\partial}{\partial \beta_j} \left(\ln \left(f\left(x^{(i)^T} \beta\right)\right)\right)
+ \left(1 - y^{(i)}\right) \frac{\partial}{\partial \beta_j}\left( \ln \left(1 - f\left(x^{(i)^T}\beta\right)\right)\right) \\
& =
\sum_{i=1}^n y^{(i)}
\frac{1}{f\left(x^{(i)^T} \beta\right)} \left(\frac{\partial}{\partial \beta_j}\left(f\left(x^{(i)^T} \beta\right)\right)\right)
+ \left(1 - y^{(i)}\right)
\frac{1}{1 - f\left(x^{(i)^T} \beta\right)}
\frac{\partial}{\partial \beta_j}\left(1 - f\left(x^{(i)^T}\beta\right)\right) \\
& =
\sum_{i=1}^n \left(y^{(i)}
\frac{1}{f\left(x^{(i)^T} \beta\right)}
- \left(1 - y^{(i)}\right)
\frac{1}{1 - f\left(x^{(i)^T} \beta\right)} \right)
\frac{\partial}{\partial \beta_j}\left(f\left(x^{(i)^T} \beta\right)\right) \\
& =
\sum_{i=1}^n \left(y^{(i)}
\frac{1}{f\left(x^{(i)^T} \beta\right)} -
\left(1 - y^{(i)}\right)
\frac{1}{1 - f\left(x^{(i)^T} \beta\right)} \right)  
f\left(x^{(i)^T}\beta\right) \left(1 - f\left(x^{(i)^T}\beta\right)\right)
\frac{\partial}{\partial \beta_j}\left(x^{(i)^T}\beta\right) \\
& =
\sum_{i=1}^n \left(y^{(i)}
\frac{1}{f\left(x^{(i)^T} \beta\right)} -
\left(1 - y^{(i)}\right)
\frac{1}{1 - f\left(x^{(i)^T} \beta\right)} \right)
f\left(x^{(i)^T} \beta\right) \left(1 - f\left(x^{(i)^T}\beta\right)\right)x_j^{(i)} \\
& =
\sum_{i=1}^n \left(y^{(i)}
\frac{f\left(x^{(i)^T}\beta\right) \left(1 - f\left(x^{(i)^T}\beta\right)\right)}{f\left(x^{(i)^T} \beta\right)} -
\left(1 - y^{(i)}\right)
\frac{f\left(x^{(i)^T }\beta\right) \left(1 - f\left(x^{(i)^T}\beta\right)\right)}{1 - f\left(x^{(i)^T} \beta\right)} \right)x_j^{(i)} \\
& =
\sum_{i=1}^n \left(y^{(i)}
\left(1 - f\left(x^{(i)^T}\beta\right)\right) -
\left(1 - y^{(i)}\right) f\left(x^{(i)^T}\beta\right) \right) x_j^{(i)}\\
& =
\sum_{i=1}^n \left(y^{(i)} - y^{(i)}f\left(x^{(i)^T}\beta\right) -
f\left(x^{(i)^T}\beta\right) + y^{(i)} f\left(x^{(i)^T}\beta\right)\right) x_j^{(i)} \\
& =
\sum_{i=1}^n \left(y^{(i)} - f\left(x^{(i)^T}\beta\right) \right)x_j^{(i)}. 
\end{split}
\end{align*}

# Lernen

\vspace{2mm}
Praktisches Parameterschätzung mit dem IWLS Verfahren in **R**

\footnotesize
\vspace{2mm}
```{r, echo = T}
lr        = glm(y ~ x[2,], family = 'binomial')          # generalized linear model fit
beta_hat  = lr$coefficients                              # Parametervektorschätzer
```

```{r, eval = F, echo = F}
library(latex2exp)
pdf(
file        = "12_Abbildungen/mv_12_lr_schätzung.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.3,
cex.main    = 1.1)
contour(
beta_1,
beta_2,
ell,
col    = hcl.colors(20, "YlOrRd"),
levels = round(seq(-20,0,len = 15), digits = 1),
ylim   = c(0,5),
xlab   = TeX("$\\beta_1$"),
ylab   = TeX("$\\beta_2$"),
main   = "Parametervektorschätzer")
points(
beta_hat[1],
beta_hat[2],
col = "Black",
pch = 16)
dev.off()
```
\vspace{2mm}
```{r, echo = FALSE, out.width = "60%", fig.align = "center"}
knitr::include_graphics("12_Abbildungen/mv_12_lr_schätzung.pdf")
```

# 
\vfill
\setstretch{2.3}
\large
Anwendungsszenario

Modellformulierung

Klassifikation

Lernen

**Anwendungsbeispiel**

Selbstkontrollfragen
\vfill

# Anwendungsbeispiel
```{r, eval = F, echo = F}
library(latex2exp)
D           = read.csv("./12_Daten/12_Logistische_Regression.csv", header = T)
pdf(
file        = "12_Abbildungen/mv_12_lr_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()
```
\vspace{2mm}
BDI und GLU Werte bei Depressionsdiagnose als Prädiktoren von CBT Erfolg

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

# Anwendungsbeispiel
\vspace{1mm}

`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("./12_Daten/12_Logistische_Regression.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("./12_Daten/12_Logistische_Regression.csv")                  # Datensatz                                                 
K       = nrow(D)                                                               # Anzahl Cross Folds
p_y     = matrix(rep(NaN, K)  , nrow = 1)                                       # p(y = 1)                                   
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
    lr           = glm(t(y_train) ~ t(x_train), family = 'binomial')            # IWLS Parameterlernen
    beta_hat     = as.matrix(lr$coefficients, nrow = m + 1)                     # Parameterschätzer
    x_test_tilde = rbind(1, x_test)                                             # erweiteter Featurevektor                
    p_y[k]       = 1/(1+exp(-t(x_test_tilde) %*% beta_hat))                     # p(y)
    y_pred[k,2]  = as.numeric(p_y[k] >= 0.5)                                    # Klassifikationsregel \delta
}
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.2}
```{r, echo = T}
D         = read.csv("./12_Daten/12_Logistische_Regression.csv")                # Datensatz                                                 
x         = t(D[,1:2])                                                          # Featurevektoren
y         = t(D[,3])                                                            # Label
n         = ncol(x)                                                             # n
m         = nrow(x)                                                             # m
lr        = glm(t(y_train) ~ t(x_train), family = 'binomial')                   # IWLS Parameterlernen
beta_hat  = as.matrix(lr$coefficients, nrow = m + 1)                            # Parameterschätzer
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_{(BDI, GLU}(y=1)
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_{(BDI, GLU}(y=1)  
```


# Anwendungsbeispiel
\vspace{2mm}
Evaluation der Non-Response Wahrscheinlichkeit
\vspace{-2mm}
```{r, eval = F, echo = F}
library(latex2exp)
pdf(
file        = "./12_Abbildungen/mv_12_lr_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)")
dev.off()
```
```{r, echo = FALSE, out.width = "80%", fig.align = "center"}
knitr::include_graphics("12_Abbildungen/mv_12_lr_anwendungsbeispiel_2.pdf")
```

# 
\vfill
\setstretch{2.3}
\large
Anwendungsszenario

Modellformulierung

Klassifikation

Lernen

Anwendungsbeispiel

**Selbstkontrollfragen**
\vfill

# Selbstkontrollfragen
\footnotesize
\setstretch{3}

1. Geben Sie die Definition des Generalisierten Linearen Modells wieder.
1. Geben Sie die Definition der Logistischen Regression als Generalisiertes Lineares Modells wieder.
1. Geben Sie das Theorem zur Mean-Funktion der Logistischen Regression wieder.
1. Geben Sie die Definition des Modells der Logistischen Regression wieder.
1. Erläutern Sie die Generation von Daten unter dem Modell der Logistischen Regression.
1. Geben Sie die Definition der Klassifikationsregel der Logistischen Regression wieder.
1. Erläutern Sie wie mithilfe einer Logistischen Regression die psychotherapeutische 
Nonresponsewahrscheinlichkeit geschätzt werden kann. 

# Referenzen
\footnotesize