---
title: "Tutorial4"
format: pdf
editor: visual
---

# Logistische Regression


### Aufgabe a)

Initialisieren Sie Ihr R-Projekt und die entsprechenden Unterordner.
Hier wurde erstmal in R-Studio ein neues Projekt erstellt und innerhalb dessen die Ordner "Daten","Code","Ergebnisse" und "temp" erstellt. 

### Aufgabe b)

Nutzen Sie einen *package manager* um die die erforderlichen Packages ggf. zu installieren und zu laden

```{r}
if (!require("pacman")) install.packages("pacman") ; library(pacman)
p_load(ggplot2)
p_load(data.table)
p_load(mgcv)
```

### Aufgabe c)

Laden Sie die Titanic-Daten aus der Datei `titanic.csv` in Ihr R-Script. Nutzen Sie `fread()` zum Einlesen.

```{r}
titanic <- fread("Daten/titanic.csv") #oder
titanic <- read.csv("Daten/titanic.csv")
```

### Aufgabe d)

Betrachten Sie die Daten mit `head()` oder `View()`. Plotten Sie die Überlebensrate, um ein Gefühl für die Daten zu bekommen.

```{r}
head(titanic)
#View(titanic)
```

Für einen ersten Überblick nutzen wir `head(titanic)`.

\

```{r}
# plotten
barplot(table(titanic$Survived)) # Einfach und ohne weitere Packages

```

```{r}
ggplot(data = titanic)  +
  geom_bar(aes(x=Survived, y=after_stat(count)  / sum(after_stat(count)), 
               fill=factor(Survived)) )+
  scale_y_continuous(labels = scales::percent) +
  ylab("rel. Häufigkeit") +
  xlab("Überlebt") +
  ggtitle("Überlebensrate")+
  theme_minimal()
```

Die erste Graphik ist simple und ohne weitere R-Packages nutzbar. Die zweite Graphik wurde mit `ggplot2` erstellt.

### Aufgabe e)

Nutzen Sie ein *lineares Wahrscheinlichkeitsmodell* um die Überlebensrate zu modellieren. Interpretieren Sie die Koeffizienten, und diskutieren Sie etwaige Probleme.

```{r}
lm_mod <- lm(Survived ~ Sex + Age + Pclass, data = titanic)
summary(lm_mod)

```

Wir sehen, dass die binäre Variable für "male" signifikant zu einer niedrigeren Überlebenswahrscheinlichkeit führt. Dies lässt sich inhaltlich damit erklären, dass beim Sinken eines Schiffes die Frauen und Kinder vor der Männern auf die Rettungsboote durfen. Analog dazu führt ein höhrers Alter zu einer signifikanten niedrigeren Überlebenswahrscheinlichkeit. Die Effektgröße ist dabei ähnlich, da z.B. eine 40 Jahre ältere Person eine $$ -0.005453 \cdot40 =-0.21812  $$ geringere Wahrscheinlichkeit hat. Und auch die Variable für die Passagierklasse verringert die Überlebenswahrscheinlichkeit signifikant. Da die Kabinen der 1. Klassen meistens am Rand des Schiffes oder weiter oben waren und die Kabinen der 3. Klassen im Schiffsbauch, hatten letztere längere Rettungswege und daher vermutlich eine geringere Überlebenswahrscheinlichkeit.

\

Ein Problem bei dem linearem Wahrscheinlichkeitsmodell ist, dass Werte über 1 oder negative Werte für die Überlebenswahrscheinlichkeit möglich sind. Mit realistischen Ausgangsdaten, wie z.B. einem 80 jährigen Mann in der 3. Klassen erhalten wir -0.198215.

```{r}
1.326066 -0.479293 *1 -0.005453 *80 -0.202916  *3
```

Genauso ist die Wahrscheinlichkeit nach diesem Modell für eine 2-jähriges Mädchen aus der 1. Klasse bei über 100%.

```{r}
1.326066 - 0.479293*0 - 0.005453*2 - 0.202916*1
```

### Aufgabe f)

Visualisieren Sie mithilfe von `gam()` und P-Splines die Zusammenhänge zwischen der Überlebensrate und den Prädiktoren. Interpretieren Sie auch diese Ergebnisse.

```{r}
gam_mod <- gam(Survived ~ Sex + s(Age) + Pclass,bs="ps", family="binomial", data = titanic)
summary(gam_mod)
```

Auch hier sehen wir wieder den negativen Zusammenhang der Überlebensrate und dem Geschlecht sowie der Passagierklasse. Für die Altersvariable sehen wir uns den Plot an.

```{r}
plot(gam_mod)
```

Hier sehen wir einen negativen Trend. Insbesondere Kinder hatten einen hohe Überlebenswahrscheinlichkeit. Für die sehr alten Personen sehen wir nochmal einen leichten Anstiegt, der aufgrund der geringen Datenlage allerdings nicht zu viel Gewicht bei der Interpretation haben sollte.\

Auch können wir uns den Zusammenhang mit den Ticketpreise durch P-Splines ansehen:

```{r}
gam_mod <- gam(Survived ~ Sex + s(Age) + s(Fare),bs="ps", family="binomial", data = titanic)
plot(gam_mod)
```

Für das Alter sehen wir einen ähnlichen Zusammenhang wie zuvor. Für die Ticketpreise erkennen wir, dass mit zunehmenden Ticketpreis (wodurch man eher bei der 1. Klasse ist) die Überlebenswahrscheinlichkeit steigt. Auch hier sollte aufgrund der geringen Datendichte bei \~250 nicht zu viel Wert auf die leichte Reduzierung der Überlebenswahrscheinlichkeit gelegt werden.

### Aufgabe g)

Erstellen Sie nun ein *logistisches Modell*, das das Überleben als Funktion von Geschlecht, Alter und Ticketklasse modelliert. Nutzen Sie `glm()` mit der Familie `binomial` für die Schätzung.

```{r}
glm_mod <- glm(Survived ~ Sex + Age + Pclass, data = titanic, family="binomial")
summary(glm_mod)
```

Wir erkennen wie bisher auch einen signifikaten und negativen Zusammenhang zwischen den Prädiktoren und der abhängigen Variable.

### Aufgabe h)

Überprüfen und interpretieren Sie die Ergebnisse des Modells. Welche Schlüsse können Sie über die Bedeutung der verschiedenen Variablen für das Überleben ziehen?

```{r}
coef(glm_mod)
exp(coef(glm_mod))
```

In der zweiten Zeile sehen wir die Odds-Ratio nach unserem Modell. Für Age verringern sich die Odds also um 0.9637, wenn eine Person ceteris paribus ein Jahr älter ist. Für die Verdeutlichung berechnen wir nun erstmal die Odds für eine 37-jährige Frau in der 2.Klasse. \

Zur Erinnerung hier nochmal das logistische Modell: \

$$
Y_i \sim Bern(\pi_i);\ \ \pi_i = \frac{e^{\eta_i}}{1+e^{\eta_i}};\ \ \eta_i = \beta_0 + \beta_1x_{i1}+...+\beta_p x_{ip}
$$

Unser $$\pi$$ ist also wie folgt

```{r}
exp(5.05600619 - 2.52213086*0 - 0.03692902*37 - 1.28854507*2)/
  (1 + exp(5.05600619 - 2.52213086*0 - 0.03692902*37 - 1.28854507*2))
```

Da die Odds als P(Survived) / P(NotSurvived) definiert sind, erhalten wir in unserem Fall folgende Odds:

```{r}
0.7526028 / (1 - 0.7526028)
```

Ändern wir nun die Age-Variable auf 38 erhalten wir:

```{r}
prob <- exp(5.05600619 - 2.52213086*0 - 0.03692902*38 - 1.28854507*2)/
        (1 + exp(5.05600619 - 2.52213086*0 - 0.03692902*38 - 1.28854507*2))
prob / (1-prob)
```

Allerdings könnten wir auch die Odds-Ratio nutzen. Hierfür multiplizieren wir die Odds für die 37-jährige Frau mit den entsprechenden Odds-Ratio von Age.

```{r}
3.042083 * 0.96374454
```

Und wir erhalten das gleiche Ergebnis. Analog dazu lässt sich das auch für die Odds-Ratio zum Geschlecht oder der Passagierklasse. Für z.B. 5 Jahre älter, kann die Rechnung einfach wie folgt ablaufen:
```{r}
3.042083 * (0.96374454^5)
```

