From 2c1e3321323cec48744c2d1fba195d348b5d404b Mon Sep 17 00:00:00 2001
From: Johannes Keyser <johannes.keyser@sport.uni-giessen.de>
Date: Mon, 25 Mar 2024 18:55:39 +0100
Subject: [PATCH] =?UTF-8?q?Anpassungen=20Modul=2001,=20keine=20inhaltliche?=
 =?UTF-8?q?=20=C3=84nderungen?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- Kosmetik: Pro Satz eine eigene Zeile im Markdown.
- Kosmetik: Externe URLs per `<URL>` markieren statt wiederholung mit `[URL](URL)`.
- Kosmetik: Inline Code-Ausgabe (`r ...`) in Markdown-Zellen verschieben oder löschen.
    - NOTE: Ggf. funktioniert das aber mit neueren JupyterLab-Versionen?
- Für Anpassung an Jupyter: Inkompatible Verwendung von R-Code in LaTeX-Gleichungen umgehen.
- Für PDF-Export: Konversion von HTML-Farben in LaTeX-Farben, z. B. `<blue>Gehalt</blue>` -> `$\color{blue}\text{Gehalt}$`
- Für PDF-Export: Anpassung von LaTeX-Formeln ohne inhaltliche Änderungen:
    - Tauschen von Hoch- und Niedrigstellung (mit `^{}` und `_{}`).
    - Farbwechsel von `color{green}` (sehr hell) zu `color{DarkGreen}` (dunkler) für bessere Lesbarkeit und Ähnlichkeit zum KI-Kurs-HTML.
    - Begrenzung der Farbanwendung mithilfe zusätzlicher Gruppierung (mit `{}`)
---
 CHANGELOG.md          |  11 ++
 Module/Modul_01.Rmd   | 116 ++++++-----
 Module/Modul_01.ipynb | 448 ++++++++++++++++++++++--------------------
 3 files changed, 316 insertions(+), 259 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9346afd..2d48af9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,4 +5,15 @@ Die exakten Änderungen sind den jeweiligen Git-Commits zu entnehmen.
 
 - Anpassen der Projkektinformationen in [README.md](README.md).
 - Text der Lizenz CC-BY-SA-4.0 in [LICENSE.txt](LICENSE.txt) gespeichtert.
+- Kosmetik: Pro Satz eine eigene Zeile im Markdown.
+- Kosmetik: Externe URLs per `<URL>` markieren statt wiederholung mit `[URL](URL)`.
+- Kosmetik: Inline Code-Ausgabe (`r ...`) in Markdown-Zellen verschieben oder löschen.
+    - NOTE: Ggf. funktioniert das aber mit neueren JupyterLab-Versionen?
+- Für Anpassung an Jupyter: Inkompatible Verwendung von R-Code in LaTeX-Gleichungen umgehen.
+- Für PDF-Export: Konversion von HTML-Farben in LaTeX-Farben, z. B. `<blue>Gehalt</blue>` -> `$\color{blue}\text{Gehalt}$`
+- Für PDF-Export: Anpassung von LaTeX-Formeln ohne inhaltliche Änderungen:
+    - Tauschen von Hoch- und Niedrigstellung (mit `^{}` und `_{}`).
+    - Farbwechsel von `color{green}` (sehr hell) zu `color{DarkGreen}` (dunkler) für bessere Lesbarkeit und Ähnlichkeit zum KI-Kurs-HTML.
+    - Begrenzung der Farbanwendung mithilfe zusätzlicher Gruppierung (mit `{}`).
 - ...
+
diff --git a/Module/Modul_01.Rmd b/Module/Modul_01.Rmd
index 8ff0a92..0300def 100644
--- a/Module/Modul_01.Rmd
+++ b/Module/Modul_01.Rmd
@@ -23,7 +23,7 @@ library(ggthemes)
 theme.fom <- theme_classic(22*1.04)
 theme.fom <- theme.fom
 theme_set(
-  theme.fom  
+  theme.fom
 )
 
 # deutsche Version von random_praise
@@ -79,22 +79,26 @@ Wie würden Sie für sich diesen **individuellen kausalen Effekt** der Teilnahme
 Eine mögliche Idee wäre es, einfach die Differenz des Gehaltes vor und nach der Schulung zu bilden: *Gehalt nach der Schulung minus Gehalt vor der Schulung*.
 Hier ergibt sich aber ein Problem, denn es ist natürlich gut möglich, dass unabhängig von der Schulung Ihr Gehalt mit der Zeit angestiegen wäre. 
 
-(Eine ganz ähnliche Situation ergibt sich, wenn man zum Beispiel rausfinden möchte, ob ein bestimmtes Medikament gegen eine Krankheit hilft: Einige Erkrankungen werden von alleine mit der Zeit besser und es wäre ein Fehler, diese Verbesserung spezifischen Maßnahmen zuzuschreiben. Daher spielen Kontrollgruppen in klinischen Studien eine so zentrale Rolle.)
+(Eine ganz ähnliche Situation ergibt sich, wenn man zum Beispiel rausfinden möchte, ob ein bestimmtes Medikament gegen eine Krankheit hilft:
+Einige Erkrankungen werden von alleine mit der Zeit besser und es wäre ein Fehler, diese Verbesserung spezifischen Maßnahmen zuzuschreiben.
+Daher spielen Kontrollgruppen in klinischen Studien eine so zentrale Rolle.)
 
 
 Eine andere Möglichkeit ist es, diesen Effekt als 
 
-$$\text{Gehalt mit Schulung} - \text{Gehalt ohne Schulung} $$
+$$\text{Gehalt mit Schulung} - \text{Gehalt ohne Schulung}$$
 
 zu definieren.
 
 Wenn Sie vor der Entscheidung stehen: *Nehme ich an der Schulung teil?* gibt es für Ihr Gehalt zwei **potenzielle Ergebnisse (englisch: Potential Outcomes)**:
 
-- <blue> Gehalt </blue> ohne <green> Schulung </green>: $\color{blue}{Y}^{\color{green}{X=0}}$
+- ${\color{blue}\text{Gehalt}}$ ohne ${\color{DarkGreen}\text{Schulung}}$: $\color{blue}{Y}^{\color{DarkGreen}{X=0}}$
 
-- <blue> Gehalt </blue> mit <green> Schulung </green>: $\color{blue}{Y}^{\color{green}{X=1}}$
+- ${\color{blue}\text{Gehalt}}$ mit ${\color{DarkGreen}\text{Schulung}}$: $\color{blue}{Y}^{\color{DarkGreen}{X=1}}$
 
-$\color{blue}{Y}$ ist die *Wirkung*, das Ergebnis, also hier das <blue> Gehalt </blue>. Das hochgestellte $\color{green}{X}$ soll symbolisieren für welche Wert der *Ursache* das Ergebnis betrachtet wird. Ohne <green> Schulung </green> nimmt $\color{green}{X}$ den Wert 0 an, mit <green> Schulung </green> den Wert 1. 
+$\color{blue}{Y}$ ist die *Wirkung*, das Ergebnis, also hier das ${\color{blue}\text{Gehalt}}$.
+Das hochgestellte $\color{DarkGreen}{X}$ soll symbolisieren für welche Wert der *Ursache* das Ergebnis betrachtet wird.
+Ohne ${\color{DarkGreen}\text{Schulung}}$ nimmt $\color{DarkGreen}{X}$ den Wert 0 an, mit ${\color{DarkGreen}\text{Schulung}}$ den Wert 1.
 
 ![](images/Weggabel.png){width="65%"}
 
@@ -102,15 +106,15 @@ $\color{blue}{Y}$ ist die *Wirkung*, das Ergebnis, also hier das <blue> Gehalt <
 
 Der **individuelle kausale Effekt** $\color{orange}{\Delta}_i$ (griechisch: Delta) der Schulung ergibt sich dann als die Differenz zwischen diesen beiden potenziellen Ergebnissen:
 
-$${\color{orange}{\Delta}}_i = {\color{blue}{Y}}_{i}^{{\color{green}{X=1}}} - {\color{blue}{Y}}_{i}^{{\color{green}{X=0}}}$$
+$${\color{orange}{\Delta}}_i = {\color{blue}{Y}}_{i}^{{\color{DarkGreen}{X=1}}} - {\color{blue}{Y}}_{i}^{{\color{DarkGreen}{X=0}}}$$
 
 Wobei
 
 - $i$ für die einzelne Beobachtung, hier die einzelne Person, steht;
 
-- $\color{blue}{Y}_i$ für das <blue> Gehalt </blue> von $i$;
+- ${\color{blue}{Y}}_i$ für das ${\color{blue}\text{Gehalt}}$ von $i$;
 
-- $\color{green}{X}$ für die Teilnahme an der <green> Schulung</green>; dabei ist $\color{green}{X_i=1}$ wenn $i$ teilnimmt und  $\color{green}{X_i=0}$ wenn $i$ nicht teilnimmt.
+- $\color{DarkGreen}{X}$ für die Teilnahme an der ${\color{DarkGreen}\text{Schulung}}$; dabei ist $\color{DarkGreen}{X_i=1}$ wenn $i$ teilnimmt und  $\color{DarkGreen}{X_i=0}$ wenn $i$ nicht teilnimmt.
 
 
 ## Ein fiktives Beispiel
@@ -119,9 +123,9 @@ Schauen wir uns einmal eine fiktive Gehaltstabelle mit potenziellen Ergebnissen
 
 - `i`: Nummer der Person;
 
-- `gehalt1`: $\color{blue}{Y}^{\color{green}{X=1}}$, Gehalt mit Schulung;
+- `gehalt1`: $\color{blue}{Y}^{\color{DarkGreen}{X=1}}$, Gehalt mit Schulung;
 
-- `gehalt0`: $\color{blue}{Y}^{\color{green}{X=0}}$, Gehalt ohne Schulung.
+- `gehalt0`: $\color{blue}{Y}^{\color{DarkGreen}{X=0}}$, Gehalt ohne Schulung.
 
 ```{r gehaltstabelle, echo=FALSE}
 Schulung %>%
@@ -130,11 +134,14 @@ Schulung %>%
 ```
 
 
-Der individuelle kausale Effekt $\color{orange}{\Delta}_i$ lässt sich dann innerhalb der Datentabelle `Schulung` berechnen als `gehalt1 - gehalt0` (hier in `R`):
+Der individuelle kausale Effekt ${\color{orange}{\Delta}}_i$ lässt sich dann innerhalb der Datentabelle `Schulung` berechnen als `gehalt1 - gehalt0` (hier in `R`):
 
 ***
 
-*Anmerkung:* `R` ist eine freie Software für die Datenanalyse. Sie kann von der Seite [https://cran.r-project.org/](https://cran.r-project.org/) für gängige Betriebssysteme heruntergeladen werden. Ergänzend ist die Nutzung des `RStudio Desktop` empfehlenswert ([https://www.rstudio.com/products/rstudio/download/](https://www.rstudio.com/products/rstudio/download/)). Im Rahmen dieser Module wird außerdem u.a. das Paket `mosaic` ([https://cran.r-project.org/package=mosaic)](https://cran.r-project.org/package=mosaic)) verwendet.
+*Anmerkung:* `R` ist eine freie Software für die Datenanalyse.
+Sie kann von der Seite <https://cran.r-project.org/> für gängige Betriebssysteme heruntergeladen werden.
+Ergänzend ist die Nutzung des `RStudio Desktop` empfehlenswert <https://www.rstudio.com/products/rstudio/download/>.
+Im Rahmen dieser Module wird außerdem u.a. das Paket `mosaic` <https://cran.r-project.org/package=mosaic> verwendet.
 
 ***
 
@@ -185,15 +192,18 @@ Sie sehen: häufig sind die individuellen kausalen Effekte positiv &ndash; sie k
 
 ## Das fundamentale Problem der kausalen Inferenz
 
-Das fundamentale Problem der kausalen Inferenz ist, dass wir den individuellen kausalen Effekt $\color{orange}{\Delta}_i = \color{blue}{Y}^{\color{green}{X=1}}_i - \color{blue}{Y}^{\color{green}{X=0}}_i$ **nicht** beobachten können. Es liegt je Beobachtung $i$ immer nur eines der beiden Potential Outcomes vor: Entweder $\color{blue}{Y}^{\color{green}{X=1}}$ (<blue>Gehalt</blue> mit <green>Schulung</green>) **oder** $\color{blue}{Y}^{\color{green}{X=0}}$ (<blue>Gehalt</blue> ohne <green>Schulung</green>).
+Das fundamentale Problem der kausalen Inferenz ist, dass wir den individuellen kausalen Effekt ${\color{orange}{\Delta}}_i = {\color{blue}{Y}}_{i}^{{\color{DarkGreen}{X=1}}} - {\color{blue}{Y}}_{i}^{{\color{DarkGreen}{X=0}}}$ **nicht** beobachten können.
+Es liegt je Beobachtung $i$ immer nur eines der beiden Potential Outcomes vor:
+Entweder $\color{blue}{Y}^{\color{DarkGreen}{X=1}}$ ($\color{blue}\text{Gehalt}$ mit $\color{DarkGreen}\text{Schulung}$) **oder** $\color{blue}{Y}^{\color{DarkGreen}{X=0}}$ ($\color{blue}\text{Gehalt}$ ohne $\color{DarkGreen}\text{Schulung}$).
 
-- Wenn Person $i$ an der Schulung teilnimmt, liegt uns das Gehalt mit Schulung vor, $\color{blue}{Y}^{\color{green}{X=1}}_i$, und nicht $\color{blue}{Y}^{\color{green}{X=0}}_i$
+- Wenn Person $i$ an der Schulung teilnimmt, liegt uns das Gehalt mit Schulung vor, ${\color{blue}{Y}}_{i}^{{\color{DarkGreen}{X=1}}}$, und nicht ${\color{blue}{Y}}_{i}^{{\color{DarkGreen}{X=0}}}$
 
-- Wenn Person $i$ nicht an der Schulung teilnimmt, liegt uns das Gehalt ohne Schulung vor, $\color{blue}{Y}^{\color{green}{X=0}}_i$, und nicht $\color{blue}{Y}^{\color{green}{X=1}}_i$
+- Wenn Person $i$ nicht an der Schulung teilnimmt, liegt uns das Gehalt ohne Schulung vor, ${\color{blue}{Y}}_{i}^{{\color{DarkGreen}{X=0}}}$, und nicht ${\color{blue}{Y}}_{i}^{{\color{DarkGreen}{X=1}}}$
 
 Der Wert, der nicht beobachtet wird, wird jeweils als **Counterfactual** bezeichnet; er ist kontrafaktisch in dem Sinne, dass er in der Realität nicht vorliegt. 
 
-Für jemanden, der nicht an der Schulung teilgenommen hat, ist das Counterfactual die Antwort auf die Frage: *Wie hoch wäre mein Gehalt, wenn ich an der Schulung teilgenommen hätte?* Für jemanden der teilgenommen hat, ist das Counterfactual die Antwort auf die Frage: *Wie hoch wäre mein Gehalt, wenn ich nicht an der Schulung teilgenommen hätte?*
+Für jemanden, der nicht an der Schulung teilgenommen hat, ist das Counterfactual die Antwort auf die Frage: *Wie hoch wäre mein Gehalt, wenn ich an der Schulung teilgenommen hätte?*
+Für jemanden der teilgenommen hat, ist das Counterfactual die Antwort auf die Frage: *Wie hoch wäre mein Gehalt, wenn ich nicht an der Schulung teilgenommen hätte?*
 
 ```{r cf, echo=FALSE}
 question("Kann das Counterfactual beobachtet werden?",
@@ -207,8 +217,8 @@ question("Kann das Counterfactual beobachtet werden?",
 
 ```{r cfi, echo=FALSE}
 question("Person $i$ nimmt an der Schulung teil. Was ist dann das Counterfactual?",
-         answer("$\\color{blue}{Y}^{\\color{green}{X=0}}_i$", correct = TRUE, message = "Teilnahme an der Schulung bedeutet $X=1$, d. h. für das Counterfactual $X=0$."),
-         answer("$\\color{blue}{Y}^{\\color{green}{X=1}}_i$"),
+         answer("$\\color{blue}{Y}^{\\color{DarkGreen}{X=0}}_i$", correct = TRUE, message = "Teilnahme an der Schulung bedeutet $X=1$, d. h. für das Counterfactual $X=0$."),
+         answer("$\\color{blue}{Y}^{\\color{DarkGreen}{X=1}}_i$"),
          allow_retry = TRUE,
          correct = random_praise(),
          incorrect = random_encouragement()
@@ -221,7 +231,7 @@ question("Person $i$ nimmt an der Schulung teil. Was ist dann das Counterfactual
 Mal angenommen, wir würden die individuellen kausalen Effekte $\color{orange}{\Delta}_i$ aber doch kennen (Variable `effekt` in unserem `R`-Beispiel).
 Dann könnten wir aus ihnen weitere Größen ableiten, beispielsweise den *durchschnittlichen* kausalen Effekt $\bar{\color{orange}{\Delta}}$, indem wir alle $i$ individuellen kausalen Effekte addieren und diese Summe ($\sum$) durch die Anzahl der Beobachtungen ($n$) dividieren: 
 
-$$\bar{\color{orange}{\Delta}}=\frac{\sum_{i=1}^n \color{orange}{\Delta}_i}{n}=\frac{\sum_{i=1}^n(\color{blue}{Y}^{\color{green}{X=1}}_i - \color{blue}{Y}^{\color{green}{X=0}}_i)}{n} =\frac{\sum_{i=1}^n\color{blue}{Y}^{\color{green}{X=1}}_i - \sum_{i=1}^n\color{blue}{Y}^{\color{green}{X=0}}_i}{n}=\overline{\color{blue}{Y}}^{\color{green}{X=1}}-\overline{\color{blue}{Y}}^{\color{green}{X=0}}.$$
+$$\bar{\color{orange}{\Delta}} = \frac{\sum_{i=1}^n {\color{orange}{\Delta}}_i}{n} = \frac{\sum_{i=1}^n({\color{blue}{Y}}_{i}^{{\color{DarkGreen}{X=1}}} - {\color{blue}{Y}}_{i}^{{\color{DarkGreen}{X=0}}})}{n} = \frac{\sum_{i=1}^n{\color{blue}{Y}}_{i}^{{\color{DarkGreen}{X=1}}} - \sum_{i=1}^n{\color{blue}{Y}}_{i}^{{\color{DarkGreen}{X=0}}}}{n} = \overline{\color{blue}{Y}}^{{\color{DarkGreen}{X=1}}} - \overline{\color{blue}{Y}}^{\color{DarkGreen}{X=0}}.$$
 
 Die `R`-Funktion, die diesen arithmetischen Mittelwert berechnet, lautet `mean()`.
 
@@ -234,19 +244,17 @@ mean( ~ effekt, data = Schulung)
 
 ***
 
-*Anmerkung:* In `mosaic` ist die `R` Syntax vereinheitlicht:
+*Anmerkung:* In `mosaic` ist die `R`-Syntax vereinheitlicht:
+
+`analyse(y ~ x, data = Daten)`
 
-```{r mosaic1, eval=FALSE}
-analyse(y ~ x, data = Daten)
-```
 
 Analysiere die Variable `y` in Abhängigkeit der Variable `x` aus der Datentabelle `Daten`. Welche Funktion `analyse()` zur Anwendung kommt, hängt vom Ziel unser Analyse ab. 
 
 Sollte es, wie im vorliegenden Fall, nur eine Variable geben, die zusammengefasst werden soll, kann auch kurz geschrieben werden:
 
-```{r mosaic2, eval=FALSE}
-analyse( ~ y, data = Daten)
-```
+`analyse( ~ y, data = Daten)`
+
 
 ***
 
@@ -254,14 +262,15 @@ Beachten Sie: Der durchschnittliche kausale Effekt ist positiv, auf Individualeb
 
 ##
 
-Das fundamentale Problem der kausalen Inferenz ist, dass nur eines der Potential Outcomes vorliegt und das nicht vorliegende ein Counterfactual ist. Daher kennen wir in der Praxis weder den individuellen noch den durchschnittlichen kausalen Effekt. Letzterer liegt in unserem Beispiel bei
-
+Das fundamentale Problem der kausalen Inferenz ist, dass nur eines der Potential Outcomes vorliegt und das nicht vorliegende ein Counterfactual ist.
+Daher kennen wir in der Praxis weder den individuellen noch den durchschnittlichen kausalen Effekt.
+Letzterer liegt in unserem Beispiel bei $\bar{\color{orange}{\Delta}}=\frac{\sum_{i=1}^n \color{orange}{\Delta}_i}{n}$ = `mean(~ effekt, data = Schulung)`.
 
-$$\bar{\color{orange}{\Delta}}=\frac{\sum_{i=1}^n \color{orange}{\Delta}_i}{n}=`r mean(~ effekt, data = Schulung)`.$$
 
 ## Fehlende Werte
 
-In der Praxis kennen wir zwar nicht beide Potential Outcomes, aber wir wissen innerhalb einer Beobachtungsgruppe, wer an der Schulung teilgenommen hat und wer nicht. Daraus ergibt sich, welches der beiden Potential Outcomes beobachtet ist und welches uns fehlt (das Counterfactual). 
+In der Praxis kennen wir zwar nicht beide Potential Outcomes, aber wir wissen innerhalb einer Beobachtungsgruppe, wer an der Schulung teilgenommen hat und wer nicht.
+Daraus ergibt sich, welches der beiden Potential Outcomes beobachtet ist und welches uns fehlt (das Counterfactual).
 
 In der Praxis sähe unsere fiktive Gehaltstabelle also anders aus -- fehlende Werte werden in `R` als `NA` (engl.: not available, nicht verfügbar) dargestellt.
 
@@ -293,25 +302,23 @@ question("Die Teilnahme an der Schulung war freiwillig. Können Sie davon ausgeh
 
 ## Schätzung des kausalen Effektes
 
-Anhand der tatsächlich beobachteten Daten können wir zwei Durchschnittsgehälter berechnen: Das Durchschnittsgehalt derjenigen, die teilgenommen haben, und das Durchschnittsgehalt derjenigen, die nicht teilgenommen haben.
+Anhand der tatsächlich beobachteten Daten können wir zwei Durchschnittsgehälter berechnen:
+Das Durchschnittsgehalt derjenigen, die teilgenommen haben, und das Durchschnittsgehalt derjenigen, die nicht teilgenommen haben.
 
 ```{r gehaltteilnahme}
-mean(gehalt ~ teilnahme, data = Schulung)
+round( mean(gehalt ~ teilnahme, data = Schulung), 2)
 ```
 
-- $\bar{\color{blue}{y}}^{\color{green}{x=1}} = `r round(mean(gehalt ~ teilnahme, data = Schulung)[1],2)`$
+<!-- NOTE: Is it possible to use inline code eval here? -->
 
-- $\bar{\color{blue}{y}}^{\color{green}{x=0}} = `r round(mean(gehalt ~ teilnahme, data = Schulung)[2],2)`$
+- $\bar{\color{blue}{y}}^{\color{DarkGreen}{x=1}}$ = `round(mean(gehalt ~ teilnahme, data = Schulung)[1], 2)`
 
-***
+- $\bar{\color{blue}{y}}^{\color{DarkGreen}{x=0}}$ = `round(mean(gehalt ~ teilnahme, data = Schulung)[2], 2)`
 
-*Anmerkung*: 
+***
 
-```{r pseudo, eval=FALSE}
-mean(gehalt ~ teilnahme, data = Schulung)
-```
 
-Bedeutet aus `R mosaic` *übersetzt*:
+*Anmerkung*: `round( mean(gehalt ~ teilnahme, data = Schulung), 2)` bedeutet aus `R mosaic` *übersetzt*:
 
 Berechne den arithmetischen Mittelwert (Funktion `mean()`) der Variable `gehalt` ($y$) in Abhängigkeit der Variable `teilnahme` ($x$). Die dazugehörigen Daten sind in der Datentabelle `Schulung`.
 
@@ -319,21 +326,25 @@ Berechne den arithmetischen Mittelwert (Funktion `mean()`) der Variable `gehalt`
 
 Nun könnte man versuchen, den durchschnittlichen kausalen Effekt mithilfe dieser beobachteten Werte zu schätzen:
 
-$$\bar{\color{blue}{y}}^{\color{green}{x=1}} - \bar{\color{blue}{y}}^{\color{green}{x=0}} = `r round(mean(gehalt ~ teilnahme, data = Schulung)[1],2)` - `r round(mean(gehalt ~ teilnahme, data = Schulung)[2],2)` = `r round(-diffmean(gehalt ~ teilnahme, data = Schulung),2)`$$
+$\bar{\color{blue}{y}}^{\color{DarkGreen}{x=1}} - \bar{\color{blue}{y}}^{\color{DarkGreen}{x=0}}$ = `round(mean(gehalt ~ teilnahme, data = Schulung)[1],2)` - `round(mean(gehalt ~ teilnahme, data = Schulung)[2],2)` = `round(-diffmean(gehalt ~ teilnahme, data = Schulung),2)`
 
-Dieser Wert weicht aber substanziell vom wahren durchschnittlichen kausalen Effekt ab, den wir zuvor mithilfe der Potential Outcomes berechnet hatten: $\bar{\color{orange}{\Delta}} =`r round(mean(~ effekt, data = Schulung),2)`$.
+Dieser Wert weicht aber substanziell vom wahren durchschnittlichen kausalen Effekt ab, den wir zuvor mithilfe der Potential Outcomes berechnet hatten: $\bar{\color{orange}{\Delta}}$ = `round(mean(~ effekt, data = Schulung),2)`.
 Bei dieser Abweichung handelt es sich um eine systematische Verzerrung, die auch als **Bias** bezeichnet wird.
 
 
-Der naive Vergleich der Mittelwerte überschätzt hier den wahren durchschnittlichen Effekt. In unserem fiktiven Beispiel liegt das daran, dass Personen mit einem höherem Gehaltsinteresse eher an der Schulung teilgenommen haben als die mit einem niedrigeren Interesse. 
+Der naive Vergleich der Mittelwerte überschätzt hier den wahren durchschnittlichen Effekt.
+In unserem fiktiven Beispiel liegt das daran, dass Personen mit einem höherem Gehaltsinteresse eher an der Schulung teilgenommen haben als die mit einem niedrigeren Interesse.
 
-Erstere hätten aber so oder so, also unabhängig von der Schulung, ein höheres Gehalt erhalten. Hier sind unterschiedliche inhaltliche Erklärungen denkbar (z.B. ein höheres Interesse am Gehalt und damit auch ein anderes Auftreten in Gehaltsverhandlungen).
+Erstere hätten aber so oder so, also unabhängig von der Schulung, ein höheres Gehalt erhalten.
+Hier sind unterschiedliche inhaltliche Erklärungen denkbar (z.B. ein höheres Interesse am Gehalt und damit auch ein anderes Auftreten in Gehaltsverhandlungen).
 
-Kontrollieren Sie diese Aussage, indem Sie den Code so abändern, dass Sie die Mittelwerte der, auch unbeobachteten, Potential Outcomes berechnen. Diese befinden sich in der gleichen Datentabelle und tragen die Namen `gehalt0` und `gehalt1`:
+Kontrollieren Sie diese Aussage, indem Sie den Code so abändern, dass Sie die Mittelwerte der, auch unbeobachteten, Potential Outcomes berechnen.
+Diese befinden sich in der gleichen Datentabelle und tragen die Namen `gehalt0` und `gehalt1`:
 
-*Tipp*: Einen Lösungshinweis erhalten Sie über den `Hinweise`-Button über dem R Code. Anschließend `Nächster Tipp` und Sie sehen die Lösung.
+*Tipp*: Einen Lösungshinweis erhalten Sie über den `Hinweise`-Button über dem R Code.
+Anschließend `Nächster Tipp` und Sie sehen die Lösung.
 
-```{r po, exercise = TRUE}
+```{r po, exercise=TRUE}
 mean(gehalt ~ teilnahme, data = Schulung)
 ```
 
@@ -353,15 +364,18 @@ mean(gehalt1 ~ teilnahme, data = Schulung)
 
 ##
 
-Das fundamentale Problem der kausalen Inferenz ist universell. In vielen Situationen kann es dazu führen, dass die Daten uns in die Irre führen: Vielleicht vermuten wir einen kausalen Effekt, wo es nicht wirklich einen gibt, oder wir erkennen real existierende Effekte nicht. 
+Das fundamentale Problem der kausalen Inferenz ist universell.
+In vielen Situationen kann es dazu führen, dass die Daten uns in die Irre führen: Vielleicht vermuten wir einen kausalen Effekt, wo es nicht wirklich einen gibt, oder wir erkennen real existierende Effekte nicht. 
 
-Die Gefahr solcher Fehlschlüsse verringert sich aber, wenn wir uns darüber Gedanken machen, wie unsere Daten überhaupt entstanden sind. In unserem fiktiven Beispiel kann man die zusätzliche Information heranziehen, dass Personen sich frei auswählen konnten, ob sie teilnehmen oder nicht. Dann erkennt man schnell, dass der naive Mittelwertvergleich kein angemessener Weg ist, den durchschnittlichen kausalen Effekt zu schätzen. 
+Die Gefahr solcher Fehlschlüsse verringert sich aber, wenn wir uns darüber Gedanken machen, wie unsere Daten überhaupt entstanden sind.
+In unserem fiktiven Beispiel kann man die zusätzliche Information heranziehen, dass Personen sich frei auswählen konnten, ob sie teilnehmen oder nicht.
+Dann erkennt man schnell, dass der naive Mittelwertvergleich kein angemessener Weg ist, den durchschnittlichen kausalen Effekt zu schätzen.
 
 In den folgenden Modulen werden Sie verschiedene datengenerierende Mechanismen kennenlernen und erfahren, wie diese kausale Schlüsse beeinflussen.
 
 ## Hinweis
 
-<red> **Dieser Kurs ist aktuell noch in der Entwicklung!** </red>
+**Dieser Kurs ist aktuell noch in der Entwicklung!**
 
 Bitte melden Sie Fehler, Unklarheiten und Verbesserungsvorschläge [hier](https://github.com/luebby/WWWEKI/issues).
 
diff --git a/Module/Modul_01.ipynb b/Module/Modul_01.ipynb
index 337a0d1..3658abb 100644
--- a/Module/Modul_01.ipynb
+++ b/Module/Modul_01.ipynb
@@ -2,7 +2,7 @@
  "cells": [
   {
    "cell_type": "raw",
-   "id": "071a010c",
+   "id": "615d6c50",
    "metadata": {},
    "source": [
     "---\n",
@@ -19,7 +19,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "964bcee0",
+   "id": "3c8c56a9",
    "metadata": {},
    "source": [
     "<a href=\"https://ki-campus.org/\">\n",
@@ -29,8 +29,8 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 12,
-   "id": "74d17979",
+   "execution_count": 2,
+   "id": "a65669bf",
    "metadata": {
     "name": "setup",
     "tags": [
@@ -48,7 +48,7 @@
     "theme.fom <- theme_classic(22*1.04)\n",
     "theme.fom <- theme.fom\n",
     "theme_set(\n",
-    "  theme.fom  \n",
+    "  theme.fom\n",
     ")\n",
     "\n",
     "# deutsche Version von random_praise\n",
@@ -77,7 +77,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "9f49b447",
+   "id": "a45240ca",
    "metadata": {},
    "source": [
     "## Lernziele\n",
@@ -109,27 +109,31 @@
     "Eine mögliche Idee wäre es, einfach die Differenz des Gehaltes vor und nach der Schulung zu bilden: *Gehalt nach der Schulung minus Gehalt vor der Schulung*.\n",
     "Hier ergibt sich aber ein Problem, denn es ist natürlich gut möglich, dass unabhängig von der Schulung Ihr Gehalt mit der Zeit angestiegen wäre. \n",
     "\n",
-    "(Eine ganz ähnliche Situation ergibt sich, wenn man zum Beispiel rausfinden möchte, ob ein bestimmtes Medikament gegen eine Krankheit hilft: Einige Erkrankungen werden von alleine mit der Zeit besser und es wäre ein Fehler, diese Verbesserung spezifischen Maßnahmen zuzuschreiben. Daher spielen Kontrollgruppen in klinischen Studien eine so zentrale Rolle.)"
+    "(Eine ganz ähnliche Situation ergibt sich, wenn man zum Beispiel rausfinden möchte, ob ein bestimmtes Medikament gegen eine Krankheit hilft:\n",
+    "Einige Erkrankungen werden von alleine mit der Zeit besser und es wäre ein Fehler, diese Verbesserung spezifischen Maßnahmen zuzuschreiben.\n",
+    "Daher spielen Kontrollgruppen in klinischen Studien eine so zentrale Rolle.)"
    ]
   },
   {
    "cell_type": "markdown",
-   "id": "8fd8251a",
+   "id": "b4bc5d1d",
    "metadata": {},
    "source": [
     "Eine andere Möglichkeit ist es, diesen Effekt als \n",
     "\n",
-    "$$\\text{Gehalt mit Schulung} - \\text{Gehalt ohne Schulung} $$\n",
+    "$$\\text{Gehalt mit Schulung} - \\text{Gehalt ohne Schulung}$$\n",
     "\n",
     "zu definieren.\n",
     "\n",
     "Wenn Sie vor der Entscheidung stehen: *Nehme ich an der Schulung teil?* gibt es für Ihr Gehalt zwei **potenzielle Ergebnisse (englisch: Potential Outcomes)**:\n",
     "\n",
-    "- <blue> Gehalt </blue> ohne <green> Schulung </green>: $\\color{blue}{Y}^{\\color{green}{X=0}}$\n",
+    "- ${\\color{blue}\\text{Gehalt}}$ ohne ${\\color{DarkGreen}\\text{Schulung}}$: $\\color{blue}{Y}^{\\color{DarkGreen}{X=0}}$\n",
     "\n",
-    "- <blue> Gehalt </blue> mit <green> Schulung </green>: $\\color{blue}{Y}^{\\color{green}{X=1}}$\n",
+    "- ${\\color{blue}\\text{Gehalt}}$ mit ${\\color{DarkGreen}\\text{Schulung}}$: $\\color{blue}{Y}^{\\color{DarkGreen}{X=1}}$\n",
     "\n",
-    "$\\color{blue}{Y}$ ist die *Wirkung*, das Ergebnis, also hier das <blue> Gehalt </blue>. Das hochgestellte $\\color{green}{X}$ soll symbolisieren für welche Wert der *Ursache* das Ergebnis betrachtet wird. Ohne <green> Schulung </green> nimmt $\\color{green}{X}$ den Wert 0 an, mit <green> Schulung </green> den Wert 1. \n",
+    "$\\color{blue}{Y}$ ist die *Wirkung*, das Ergebnis, also hier das ${\\color{blue}\\text{Gehalt}}$.\n",
+    "Das hochgestellte $\\color{DarkGreen}{X}$ soll symbolisieren für welche Wert der *Ursache* das Ergebnis betrachtet wird.\n",
+    "Ohne ${\\color{DarkGreen}\\text{Schulung}}$ nimmt $\\color{DarkGreen}{X}$ den Wert 0 an, mit ${\\color{DarkGreen}\\text{Schulung}}$ den Wert 1.\n",
     "\n",
     "![](images/Weggabel.png){width=\"65%\"}\n",
     "\n",
@@ -137,20 +141,20 @@
     "\n",
     "Der **individuelle kausale Effekt** $\\color{orange}{\\Delta}_i$ (griechisch: Delta) der Schulung ergibt sich dann als die Differenz zwischen diesen beiden potenziellen Ergebnissen:\n",
     "\n",
-    "$${\\color{orange}{\\Delta}}_i = {\\color{blue}{Y}}_{i}^{{\\color{green}{X=1}}} - {\\color{blue}{Y}}_{i}^{{\\color{green}{X=0}}}$$\n",
+    "$${\\color{orange}{\\Delta}}_i = {\\color{blue}{Y}}_{i}^{{\\color{DarkGreen}{X=1}}} - {\\color{blue}{Y}}_{i}^{{\\color{DarkGreen}{X=0}}}$$\n",
     "\n",
     "Wobei\n",
     "\n",
     "- $i$ für die einzelne Beobachtung, hier die einzelne Person, steht;\n",
     "\n",
-    "- $\\color{blue}{Y}_i$ für das <blue> Gehalt </blue> von $i$;\n",
+    "- ${\\color{blue}{Y}}_i$ für das ${\\color{blue}\\text{Gehalt}}$ von $i$;\n",
     "\n",
-    "- $\\color{green}{X}$ für die Teilnahme an der <green> Schulung</green>; dabei ist $\\color{green}{X_i=1}$ wenn $i$ teilnimmt und  $\\color{green}{X_i=0}$ wenn $i$ nicht teilnimmt."
+    "- $\\color{DarkGreen}{X}$ für die Teilnahme an der ${\\color{DarkGreen}\\text{Schulung}}$; dabei ist $\\color{DarkGreen}{X_i=1}$ wenn $i$ teilnimmt und  $\\color{DarkGreen}{X_i=0}$ wenn $i$ nicht teilnimmt."
    ]
   },
   {
    "cell_type": "markdown",
-   "id": "7a55e59e",
+   "id": "98fa67dd",
    "metadata": {},
    "source": [
     "## Ein fiktives Beispiel\n",
@@ -159,15 +163,15 @@
     "\n",
     "- `i`: Nummer der Person;\n",
     "\n",
-    "- `gehalt1`: $\\color{blue}{Y}^{\\color{green}{X=1}}$, Gehalt mit Schulung;\n",
+    "- `gehalt1`: $\\color{blue}{Y}^{\\color{DarkGreen}{X=1}}$, Gehalt mit Schulung;\n",
     "\n",
-    "- `gehalt0`: $\\color{blue}{Y}^{\\color{green}{X=0}}$, Gehalt ohne Schulung."
+    "- `gehalt0`: $\\color{blue}{Y}^{\\color{DarkGreen}{X=0}}$, Gehalt ohne Schulung."
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
-   "id": "70dd5339",
+   "execution_count": 3,
+   "id": "87b960c5",
    "metadata": {
     "lines_to_next_cell": 2,
     "name": "gehaltstabelle",
@@ -175,7 +179,30 @@
      "remove_input"
     ]
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "\n",
+       "\n",
+       "|  i| gehalt1| gehalt0|\n",
+       "|--:|-------:|-------:|\n",
+       "|  1|    2300|    2200|\n",
+       "|  2|    2200|    2000|\n",
+       "|  3|    2100|    2000|\n",
+       "|  4|    2500|    2100|\n",
+       "|  5|    2500|    2100|\n",
+       "|  6|    2100|    2100|\n",
+       "|  7|    2200|    2100|\n",
+       "|  8|    2000|    2100|\n",
+       "|  9|    2000|    2000|\n",
+       "| 10|    2100|    2100|"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
    "source": [
     "Schulung %>%\n",
     "  select(i, gehalt1, gehalt0) %>%\n",
@@ -184,22 +211,25 @@
   },
   {
    "cell_type": "markdown",
-   "id": "7a61b2a6",
+   "id": "83f7954d",
    "metadata": {},
    "source": [
-    "Der individuelle kausale Effekt $\\color{orange}{\\Delta}_i$ lässt sich dann innerhalb der Datentabelle `Schulung` berechnen als `gehalt1 - gehalt0` (hier in `R`):\n",
+    "Der individuelle kausale Effekt ${\\color{orange}{\\Delta}}_i$ lässt sich dann innerhalb der Datentabelle `Schulung` berechnen als `gehalt1 - gehalt0` (hier in `R`):\n",
     "\n",
     "***\n",
     "\n",
-    "*Anmerkung:* `R` ist eine freie Software für die Datenanalyse. Sie kann von der Seite [https://cran.r-project.org/](https://cran.r-project.org/) für gängige Betriebssysteme heruntergeladen werden. Ergänzend ist die Nutzung des `RStudio Desktop` empfehlenswert ([https://www.rstudio.com/products/rstudio/download/](https://www.rstudio.com/products/rstudio/download/)). Im Rahmen dieser Module wird außerdem u.a. das Paket `mosaic` ([https://cran.r-project.org/package=mosaic)](https://cran.r-project.org/package=mosaic)) verwendet.\n",
+    "*Anmerkung:* `R` ist eine freie Software für die Datenanalyse.\n",
+    "Sie kann von der Seite <https://cran.r-project.org/> für gängige Betriebssysteme heruntergeladen werden.\n",
+    "Ergänzend ist die Nutzung des `RStudio Desktop` empfehlenswert <https://www.rstudio.com/products/rstudio/download/>.\n",
+    "Im Rahmen dieser Module wird außerdem u.a. das Paket `mosaic` <https://cran.r-project.org/package=mosaic> verwendet.\n",
     "\n",
     "***\n"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
-   "id": "06117e3e",
+   "execution_count": 4,
+   "id": "657baaf2",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -212,7 +242,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "f17fcf0f",
+   "id": "da2e5d29",
    "metadata": {},
    "source": [
     "Und damit:"
@@ -220,8 +250,8 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
-   "id": "138c73e8",
+   "execution_count": 5,
+   "id": "4a752d2a",
    "metadata": {
     "name": "gehaltstabelleeffekt",
     "tags": [
@@ -260,8 +290,8 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 8,
-   "id": "28e50ff1",
+   "execution_count": 6,
+   "id": "be7415e2",
    "metadata": {
     "lines_to_next_cell": 2,
     "name": "visualisierung",
@@ -303,35 +333,15 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 9,
-   "id": "3953f868",
+   "execution_count": null,
+   "id": "864b8063",
    "metadata": {
     "name": "ike",
     "tags": [
      "remove_input"
     ]
    },
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "Question: \"Können Sie diese individuellen kausalen Effekte in der Realität beobachten?\"\n",
-       "  type: \"learnr_radio\"\n",
-       "  allow_retry: TRUE\n",
-       "  random_answer_order: FALSE\n",
-       "  answers:\n",
-       "    X: \"Ja\"\n",
-       "    ✔: \"Nein\"; \"Für jede Beobachtung \\(i\\) liegt nur ein Gehaltswert vor: der mit Schulung oder der ohne Schulung, aber niemals beide gleichzeitig, da Personen entweder teilnehmen oder nicht. \\(\\Delta_i\\) kann daher nicht beobachtet werden.\"\n",
-       "  messages:\n",
-       "    correct: \"Stimmt!\"\n",
-       "    incorrect: \"Probieren Sie nochmal. Sie schaffen das!\"\n",
-       "    try_again: \"Probieren Sie nochmal. Sie schaffen das!\" "
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "question(\"Können Sie diese individuellen kausalen Effekte in der Realität beobachten?\",\n",
     "         answer(\"Ja\"),\n",
@@ -344,55 +354,38 @@
   },
   {
    "cell_type": "markdown",
-   "id": "320d4f3e",
+   "id": "1227f3f4",
    "metadata": {},
    "source": [
     "Sie sehen: häufig sind die individuellen kausalen Effekte positiv &ndash; sie können aber auch neutral oder sogar negativ sein.\n",
     "\n",
     "## Das fundamentale Problem der kausalen Inferenz\n",
     "\n",
-    "Das fundamentale Problem der kausalen Inferenz ist, dass wir den individuellen kausalen Effekt $\\color{orange}{\\Delta}_i = \\color{blue}{Y}^{\\color{green}{X=1}}_i - \\color{blue}{Y}^{\\color{green}{X=0}}_i$ **nicht** beobachten können. Es liegt je Beobachtung $i$ immer nur eines der beiden Potential Outcomes vor: Entweder $\\color{blue}{Y}^{\\color{green}{X=1}}$ (<blue>Gehalt</blue> mit <green>Schulung</green>) **oder** $\\color{blue}{Y}^{\\color{green}{X=0}}$ (<blue>Gehalt</blue> ohne <green>Schulung</green>).\n",
+    "Das fundamentale Problem der kausalen Inferenz ist, dass wir den individuellen kausalen Effekt ${\\color{orange}{\\Delta}}_i = {\\color{blue}{Y}}_{i}^{{\\color{DarkGreen}{X=1}}} - {\\color{blue}{Y}}_{i}^{{\\color{DarkGreen}{X=0}}}$ **nicht** beobachten können.\n",
+    "Es liegt je Beobachtung $i$ immer nur eines der beiden Potential Outcomes vor:\n",
+    "Entweder $\\color{blue}{Y}^{\\color{DarkGreen}{X=1}}$ ($\\color{blue}\\text{Gehalt}$ mit $\\color{DarkGreen}\\text{Schulung}$) **oder** $\\color{blue}{Y}^{\\color{DarkGreen}{X=0}}$ ($\\color{blue}\\text{Gehalt}$ ohne $\\color{DarkGreen}\\text{Schulung}$).\n",
     "\n",
-    "- Wenn Person $i$ an der Schulung teilnimmt, liegt uns das Gehalt mit Schulung vor, $\\color{blue}{Y}^{\\color{green}{X=1}}_i$, und nicht $\\color{blue}{Y}^{\\color{green}{X=0}}_i$\n",
+    "- Wenn Person $i$ an der Schulung teilnimmt, liegt uns das Gehalt mit Schulung vor, ${\\color{blue}{Y}}_{i}^{{\\color{DarkGreen}{X=1}}}$, und nicht ${\\color{blue}{Y}}_{i}^{{\\color{DarkGreen}{X=0}}}$\n",
     "\n",
-    "- Wenn Person $i$ nicht an der Schulung teilnimmt, liegt uns das Gehalt ohne Schulung vor, $\\color{blue}{Y}^{\\color{green}{X=0}}_i$, und nicht $\\color{blue}{Y}^{\\color{green}{X=1}}_i$\n",
+    "- Wenn Person $i$ nicht an der Schulung teilnimmt, liegt uns das Gehalt ohne Schulung vor, ${\\color{blue}{Y}}_{i}^{{\\color{DarkGreen}{X=0}}}$, und nicht ${\\color{blue}{Y}}_{i}^{{\\color{DarkGreen}{X=1}}}$\n",
     "\n",
     "Der Wert, der nicht beobachtet wird, wird jeweils als **Counterfactual** bezeichnet; er ist kontrafaktisch in dem Sinne, dass er in der Realität nicht vorliegt. \n",
     "\n",
-    "Für jemanden, der nicht an der Schulung teilgenommen hat, ist das Counterfactual die Antwort auf die Frage: *Wie hoch wäre mein Gehalt, wenn ich an der Schulung teilgenommen hätte?* Für jemanden der teilgenommen hat, ist das Counterfactual die Antwort auf die Frage: *Wie hoch wäre mein Gehalt, wenn ich nicht an der Schulung teilgenommen hätte?*"
+    "Für jemanden, der nicht an der Schulung teilgenommen hat, ist das Counterfactual die Antwort auf die Frage: *Wie hoch wäre mein Gehalt, wenn ich an der Schulung teilgenommen hätte?*\n",
+    "Für jemanden der teilgenommen hat, ist das Counterfactual die Antwort auf die Frage: *Wie hoch wäre mein Gehalt, wenn ich nicht an der Schulung teilgenommen hätte?*"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 10,
-   "id": "2f74bdbd",
+   "execution_count": null,
+   "id": "e8506bd9",
    "metadata": {
     "name": "cf",
     "tags": [
      "remove_input"
     ]
    },
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "Question: \"Kann das Counterfactual beobachtet werden?\"\n",
-       "  type: \"learnr_radio\"\n",
-       "  allow_retry: TRUE\n",
-       "  random_answer_order: FALSE\n",
-       "  answers:\n",
-       "    X: \"Ja\"; \"Je Beobachtung \\(i\\) liegt nur ein Wert vor: der mit Schulung oder der ohne Schulung, nicht beide gleichzeitig. Das Counterfactual ist das nicht beobachtete der Potential Outcomes.\"\n",
-       "    ✔: \"Nein\"; \"Das Counterfactual ist das nicht Beobachtete der Potential Outcomes.\"\n",
-       "  messages:\n",
-       "    correct: \"Sehr schön\"\n",
-       "    incorrect: \"Versuchen Sie es noch einmal. Ausdauer ist der Schlüssel zum Erfolg!\"\n",
-       "    try_again: \"Versuchen Sie es noch einmal. Ausdauer ist der Schlüssel zum Erfolg!\" "
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "question(\"Kann das Counterfactual beobachtet werden?\",\n",
     "         answer(\"Ja\", message = \"Je Beobachtung $i$ liegt nur ein Wert vor: der mit Schulung oder der ohne Schulung, nicht beide gleichzeitig. Das Counterfactual ist das nicht beobachtete der Potential Outcomes.\"),\n",
@@ -406,7 +399,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "7e2f77d9",
+   "id": "190c0f1a",
    "metadata": {
     "lines_to_next_cell": 2,
     "name": "cfi",
@@ -417,8 +410,8 @@
    "outputs": [],
    "source": [
     "question(\"Person $i$ nimmt an der Schulung teil. Was ist dann das Counterfactual?\",\n",
-    "         answer(\"$\\\\color{blue}{Y}^{\\\\color{green}{X=0}}_i$\", correct = TRUE, message = \"Teilnahme an der Schulung bedeutet $X=1$, d. h. für das Counterfactual $X=0$.\"),\n",
-    "         answer(\"$\\\\color{blue}{Y}^{\\\\color{green}{X=1}}_i$\"),\n",
+    "         answer(\"$\\\\color{blue}{Y}^{\\\\color{DarkGreen}{X=0}}_i$\", correct = TRUE, message = \"Teilnahme an der Schulung bedeutet $X=1$, d. h. für das Counterfactual $X=0$.\"),\n",
+    "         answer(\"$\\\\color{blue}{Y}^{\\\\color{DarkGreen}{X=1}}_i$\"),\n",
     "         allow_retry = TRUE,\n",
     "         correct = random_praise(),\n",
     "         incorrect = random_encouragement()\n",
@@ -427,7 +420,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "f6a611b3",
+   "id": "301dffc3",
    "metadata": {},
    "source": [
     "## Durchschnittlicher kausaler Effekt\n",
@@ -435,7 +428,7 @@
     "Mal angenommen, wir würden die individuellen kausalen Effekte $\\color{orange}{\\Delta}_i$ aber doch kennen (Variable `effekt` in unserem `R`-Beispiel).\n",
     "Dann könnten wir aus ihnen weitere Größen ableiten, beispielsweise den *durchschnittlichen* kausalen Effekt $\\bar{\\color{orange}{\\Delta}}$, indem wir alle $i$ individuellen kausalen Effekte addieren und diese Summe ($\\sum$) durch die Anzahl der Beobachtungen ($n$) dividieren: \n",
     "\n",
-    "$$\\bar{\\color{orange}{\\Delta}}=\\frac{\\sum_{i=1}^n \\color{orange}{\\Delta}_i}{n}=\\frac{\\sum_{i=1}^n(\\color{blue}{Y}^{\\color{green}{X=1}}_i - \\color{blue}{Y}^{\\color{green}{X=0}}_i)}{n} =\\frac{\\sum_{i=1}^n\\color{blue}{Y}^{\\color{green}{X=1}}_i - \\sum_{i=1}^n\\color{blue}{Y}^{\\color{green}{X=0}}_i}{n}=\\overline{\\color{blue}{Y}}^{\\color{green}{X=1}}-\\overline{\\color{blue}{Y}}^{\\color{green}{X=0}}.$$\n",
+    "$$\\bar{\\color{orange}{\\Delta}} = \\frac{\\sum_{i=1}^n {\\color{orange}{\\Delta}}_i}{n} = \\frac{\\sum_{i=1}^n({\\color{blue}{Y}}_{i}^{{\\color{DarkGreen}{X=1}}} - {\\color{blue}{Y}}_{i}^{{\\color{DarkGreen}{X=0}}})}{n} = \\frac{\\sum_{i=1}^n{\\color{blue}{Y}}_{i}^{{\\color{DarkGreen}{X=1}}} - \\sum_{i=1}^n{\\color{blue}{Y}}_{i}^{{\\color{DarkGreen}{X=0}}}}{n} = \\overline{\\color{blue}{Y}}^{{\\color{DarkGreen}{X=1}}} - \\overline{\\color{blue}{Y}}^{\\color{DarkGreen}{X=0}}.$$\n",
     "\n",
     "Die `R`-Funktion, die diesen arithmetischen Mittelwert berechnet, lautet `mean()`.\n",
     "\n",
@@ -444,67 +437,64 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
-   "id": "a079d2f6",
+   "execution_count": 7,
+   "id": "789e2f17",
    "metadata": {
     "exercise": true,
     "lines_to_next_cell": 2,
     "name": "ate"
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "120"
+      ],
+      "text/latex": [
+       "120"
+      ],
+      "text/markdown": [
+       "120"
+      ],
+      "text/plain": [
+       "[1] 120"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
    "source": [
     "mean( ~ effekt, data = Schulung)"
    ]
   },
   {
    "cell_type": "markdown",
-   "id": "ef482be4",
+   "id": "695a23c5",
    "metadata": {},
    "source": [
     "***\n",
     "\n",
-    "*Anmerkung:* In `mosaic` ist die `R` Syntax vereinheitlicht:"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "a2ab5e6c",
-   "metadata": {
-    "eval": false,
-    "name": "mosaic1"
-   },
-   "outputs": [],
-   "source": [
-    "analyse(y ~ x, data = Daten)"
+    "*Anmerkung:* In `mosaic` ist die `R`-Syntax vereinheitlicht:\n",
+    "\n",
+    "`analyse(y ~ x, data = Daten)`"
    ]
   },
   {
    "cell_type": "markdown",
-   "id": "5dd7abbf",
+   "id": "5b5a0100",
    "metadata": {},
    "source": [
     "Analysiere die Variable `y` in Abhängigkeit der Variable `x` aus der Datentabelle `Daten`. Welche Funktion `analyse()` zur Anwendung kommt, hängt vom Ziel unser Analyse ab. \n",
     "\n",
-    "Sollte es, wie im vorliegenden Fall, nur eine Variable geben, die zusammengefasst werden soll, kann auch kurz geschrieben werden:"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "61c8d129",
-   "metadata": {
-    "eval": false,
-    "name": "mosaic2"
-   },
-   "outputs": [],
-   "source": [
-    "analyse( ~ y, data = Daten)"
+    "Sollte es, wie im vorliegenden Fall, nur eine Variable geben, die zusammengefasst werden soll, kann auch kurz geschrieben werden:\n",
+    "\n",
+    "`analyse( ~ y, data = Daten)`"
    ]
   },
   {
    "cell_type": "markdown",
-   "id": "40ab62d5",
+   "id": "0fe135e7",
    "metadata": {},
    "source": [
     "***\n",
@@ -513,34 +503,58 @@
     "\n",
     "##\n",
     "\n",
-    "Das fundamentale Problem der kausalen Inferenz ist, dass nur eines der Potential Outcomes vorliegt und das nicht vorliegende ein Counterfactual ist. Daher kennen wir in der Praxis weder den individuellen noch den durchschnittlichen kausalen Effekt. Letzterer liegt in unserem Beispiel bei"
+    "Das fundamentale Problem der kausalen Inferenz ist, dass nur eines der Potential Outcomes vorliegt und das nicht vorliegende ein Counterfactual ist.\n",
+    "Daher kennen wir in der Praxis weder den individuellen noch den durchschnittlichen kausalen Effekt.\n",
+    "Letzterer liegt in unserem Beispiel bei $\\bar{\\color{orange}{\\Delta}}=\\frac{\\sum_{i=1}^n \\color{orange}{\\Delta}_i}{n}$ = `mean(~ effekt, data = Schulung)`."
    ]
   },
   {
    "cell_type": "markdown",
-   "id": "25eaf69d",
+   "id": "15710625",
    "metadata": {},
    "source": [
-    "$$\\bar{\\color{orange}{\\Delta}}=\\frac{\\sum_{i=1}^n \\color{orange}{\\Delta}_i}{n}=`r mean(~ effekt, data = Schulung)`.$$\n",
-    "\n",
     "## Fehlende Werte\n",
     "\n",
-    "In der Praxis kennen wir zwar nicht beide Potential Outcomes, aber wir wissen innerhalb einer Beobachtungsgruppe, wer an der Schulung teilgenommen hat und wer nicht. Daraus ergibt sich, welches der beiden Potential Outcomes beobachtet ist und welches uns fehlt (das Counterfactual). \n",
+    "In der Praxis kennen wir zwar nicht beide Potential Outcomes, aber wir wissen innerhalb einer Beobachtungsgruppe, wer an der Schulung teilgenommen hat und wer nicht.\n",
+    "Daraus ergibt sich, welches der beiden Potential Outcomes beobachtet ist und welches uns fehlt (das Counterfactual).\n",
     "\n",
     "In der Praxis sähe unsere fiktive Gehaltstabelle also anders aus -- fehlende Werte werden in `R` als `NA` (engl.: not available, nicht verfügbar) dargestellt."
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
-   "id": "822e5b41",
+   "execution_count": 9,
+   "id": "02185248",
    "metadata": {
     "name": "teilnahme",
     "tags": [
      "remove_input"
     ]
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "\n",
+       "\n",
+       "|  i|teilnahme | gehalt0| gehalt1|\n",
+       "|--:|:---------|-------:|-------:|\n",
+       "|  1|Ja        |      NA|    2300|\n",
+       "|  2|Ja        |      NA|    2200|\n",
+       "|  3|Ja        |      NA|    2100|\n",
+       "|  4|Nein      |    2100|      NA|\n",
+       "|  5|Ja        |      NA|    2500|\n",
+       "|  6|Ja        |      NA|    2100|\n",
+       "|  7|Ja        |      NA|    2200|\n",
+       "|  8|Nein      |    2100|      NA|\n",
+       "|  9|Nein      |    2000|      NA|\n",
+       "| 10|Nein      |    2100|      NA|"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
    "source": [
     "Schulung %>%\n",
     "  select(i, teilnahme, gehalt0, gehalt1) %>%\n",
@@ -551,7 +565,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "4f590cc8",
+   "id": "afc8b5fd",
    "metadata": {},
    "source": [
     "In der Regel strukturiert man die Daten so, dass nur eine Gehaltsvariable -- das beobachtete `gehalt` -- sowie eine Variable zur `teilnahme` existiert."
@@ -559,15 +573,38 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
-   "id": "d598bcc4",
+   "execution_count": 10,
+   "id": "907d761c",
    "metadata": {
     "name": "gehalt",
     "tags": [
      "remove_input"
     ]
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "\n",
+       "\n",
+       "|  i|teilnahme | gehalt|\n",
+       "|--:|:---------|------:|\n",
+       "|  1|Ja        |   2300|\n",
+       "|  2|Ja        |   2200|\n",
+       "|  3|Ja        |   2100|\n",
+       "|  4|Nein      |   2100|\n",
+       "|  5|Ja        |   2500|\n",
+       "|  6|Ja        |   2100|\n",
+       "|  7|Ja        |   2200|\n",
+       "|  8|Nein      |   2100|\n",
+       "|  9|Nein      |   2000|\n",
+       "| 10|Nein      |   2100|"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
    "source": [
     "Schulung %>%\n",
     "  select(i, teilnahme, gehalt) %>%\n",
@@ -577,7 +614,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "96fd77fb",
+   "id": "2ae1f46f",
    "metadata": {
     "name": "bias",
     "tags": [
@@ -597,59 +634,78 @@
   },
   {
    "cell_type": "markdown",
-   "id": "3a48c943",
+   "id": "df873538",
    "metadata": {},
    "source": [
     "## Schätzung des kausalen Effektes\n",
     "\n",
-    "Anhand der tatsächlich beobachteten Daten können wir zwei Durchschnittsgehälter berechnen: Das Durchschnittsgehalt derjenigen, die teilgenommen haben, und das Durchschnittsgehalt derjenigen, die nicht teilgenommen haben."
+    "Anhand der tatsächlich beobachteten Daten können wir zwei Durchschnittsgehälter berechnen:\n",
+    "Das Durchschnittsgehalt derjenigen, die teilgenommen haben, und das Durchschnittsgehalt derjenigen, die nicht teilgenommen haben."
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
-   "id": "a852abb3",
+   "execution_count": 18,
+   "id": "c53a460a",
    "metadata": {
     "name": "gehaltteilnahme"
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<style>\n",
+       ".dl-inline {width: auto; margin:0; padding: 0}\n",
+       ".dl-inline>dt, .dl-inline>dd {float: none; width: auto; display: inline-block}\n",
+       ".dl-inline>dt::after {content: \":\\0020\"; padding-right: .5ex}\n",
+       ".dl-inline>dt:not(:first-of-type) {padding-left: .5ex}\n",
+       "</style><dl class=dl-inline><dt>Ja</dt><dd>2233.33</dd><dt>Nein</dt><dd>2075</dd></dl>\n"
+      ],
+      "text/latex": [
+       "\\begin{description*}\n",
+       "\\item[Ja] 2233.33\n",
+       "\\item[Nein] 2075\n",
+       "\\end{description*}\n"
+      ],
+      "text/markdown": [
+       "Ja\n",
+       ":   2233.33Nein\n",
+       ":   2075\n",
+       "\n"
+      ],
+      "text/plain": [
+       "     Ja    Nein \n",
+       "2233.33 2075.00 "
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
    "source": [
-    "mean(gehalt ~ teilnahme, data = Schulung)"
+    "round( mean(gehalt ~ teilnahme, data = Schulung), 2)"
    ]
   },
   {
    "cell_type": "markdown",
-   "id": "082f7b58",
+   "id": "d5113505",
    "metadata": {},
    "source": [
-    "- $\\bar{\\color{blue}{y}}^{\\color{green}{x=1}} = `r round(mean(gehalt ~ teilnahme, data = Schulung)[1],2)`$\n",
+    "<!-- NOTE: Is it possible to use inline code eval here? -->\n",
     "\n",
-    "- $\\bar{\\color{blue}{y}}^{\\color{green}{x=0}} = `r round(mean(gehalt ~ teilnahme, data = Schulung)[2],2)`$\n",
+    "- $\\bar{\\color{blue}{y}}^{\\color{DarkGreen}{x=1}}$ = `round(mean(gehalt ~ teilnahme, data = Schulung)[1], 2)`\n",
     "\n",
-    "***\n",
+    "- $\\bar{\\color{blue}{y}}^{\\color{DarkGreen}{x=0}}$ = `round(mean(gehalt ~ teilnahme, data = Schulung)[2], 2)`\n",
     "\n",
-    "*Anmerkung*: "
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "40e22c4f",
-   "metadata": {
-    "eval": false,
-    "name": "pseudo"
-   },
-   "outputs": [],
-   "source": [
-    "mean(gehalt ~ teilnahme, data = Schulung)"
+    "***"
    ]
   },
   {
    "cell_type": "markdown",
-   "id": "1b7b9f02",
+   "id": "4e977a16",
    "metadata": {},
    "source": [
-    "Bedeutet aus `R mosaic` *übersetzt*:\n",
+    "*Anmerkung*: `round( mean(gehalt ~ teilnahme, data = Schulung), 2)` bedeutet aus `R mosaic` *übersetzt*:\n",
     "\n",
     "Berechne den arithmetischen Mittelwert (Funktion `mean()`) der Variable `gehalt` ($y$) in Abhängigkeit der Variable `teilnahme` ($x$). Die dazugehörigen Daten sind in der Datentabelle `Schulung`.\n",
     "\n",
@@ -657,66 +713,39 @@
     "\n",
     "Nun könnte man versuchen, den durchschnittlichen kausalen Effekt mithilfe dieser beobachteten Werte zu schätzen:\n",
     "\n",
-    "$$\\bar{\\color{blue}{y}}^{\\color{green}{x=1}} - \\bar{\\color{blue}{y}}^{\\color{green}{x=0}} = `r round(mean(gehalt ~ teilnahme, data = Schulung)[1],2)` - `r round(mean(gehalt ~ teilnahme, data = Schulung)[2],2)` = `r round(-diffmean(gehalt ~ teilnahme, data = Schulung),2)`$$\n",
+    "$\\bar{\\color{blue}{y}}^{\\color{DarkGreen}{x=1}} - \\bar{\\color{blue}{y}}^{\\color{DarkGreen}{x=0}}$ = `round(mean(gehalt ~ teilnahme, data = Schulung)[1],2)` - `round(mean(gehalt ~ teilnahme, data = Schulung)[2],2)` = `round(-diffmean(gehalt ~ teilnahme, data = Schulung),2)`\n",
     "\n",
-    "Dieser Wert weicht aber substanziell vom wahren durchschnittlichen kausalen Effekt ab, den wir zuvor mithilfe der Potential Outcomes berechnet hatten: $\\bar{\\color{orange}{\\Delta}} =`r round(mean(~ effekt, data = Schulung),2)`$.\n",
+    "Dieser Wert weicht aber substanziell vom wahren durchschnittlichen kausalen Effekt ab, den wir zuvor mithilfe der Potential Outcomes berechnet hatten: $\\bar{\\color{orange}{\\Delta}}$ = `round(mean(~ effekt, data = Schulung),2)`.\n",
     "Bei dieser Abweichung handelt es sich um eine systematische Verzerrung, die auch als **Bias** bezeichnet wird."
    ]
   },
   {
    "cell_type": "markdown",
-   "id": "a064b861",
+   "id": "71362f14",
    "metadata": {},
    "source": [
-    "Der naive Vergleich der Mittelwerte überschätzt hier den wahren durchschnittlichen Effekt. In unserem fiktiven Beispiel liegt das daran, dass Personen mit einem höherem Gehaltsinteresse eher an der Schulung teilgenommen haben als die mit einem niedrigeren Interesse. \n",
+    "Der naive Vergleich der Mittelwerte überschätzt hier den wahren durchschnittlichen Effekt.\n",
+    "In unserem fiktiven Beispiel liegt das daran, dass Personen mit einem höherem Gehaltsinteresse eher an der Schulung teilgenommen haben als die mit einem niedrigeren Interesse.\n",
     "\n",
-    "Erstere hätten aber so oder so, also unabhängig von der Schulung, ein höheres Gehalt erhalten. Hier sind unterschiedliche inhaltliche Erklärungen denkbar (z.B. ein höheres Interesse am Gehalt und damit auch ein anderes Auftreten in Gehaltsverhandlungen).\n",
+    "Erstere hätten aber so oder so, also unabhängig von der Schulung, ein höheres Gehalt erhalten.\n",
+    "Hier sind unterschiedliche inhaltliche Erklärungen denkbar (z.B. ein höheres Interesse am Gehalt und damit auch ein anderes Auftreten in Gehaltsverhandlungen).\n",
     "\n",
-    "Kontrollieren Sie diese Aussage, indem Sie den Code so abändern, dass Sie die Mittelwerte der, auch unbeobachteten, Potential Outcomes berechnen. Diese befinden sich in der gleichen Datentabelle und tragen die Namen `gehalt0` und `gehalt1`:\n",
+    "Kontrollieren Sie diese Aussage, indem Sie den Code so abändern, dass Sie die Mittelwerte der, auch unbeobachteten, Potential Outcomes berechnen.\n",
+    "Diese befinden sich in der gleichen Datentabelle und tragen die Namen `gehalt0` und `gehalt1`:\n",
     "\n",
-    "*Tipp*: Einen Lösungshinweis erhalten Sie über den `Hinweise`-Button über dem R Code. Anschließend `Nächster Tipp` und Sie sehen die Lösung."
+    "*Tipp*: Einen Lösungshinweis erhalten Sie über den `Hinweise`-Button über dem R Code.\n",
+    "Anschließend `Nächster Tipp` und Sie sehen die Lösung."
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 11,
-   "id": "5055353e",
+   "execution_count": null,
+   "id": "c3a88e91",
    "metadata": {
     "exercise": true,
     "name": "po"
    },
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<style>\n",
-       ".dl-inline {width: auto; margin:0; padding: 0}\n",
-       ".dl-inline>dt, .dl-inline>dd {float: none; width: auto; display: inline-block}\n",
-       ".dl-inline>dt::after {content: \":\\0020\"; padding-right: .5ex}\n",
-       ".dl-inline>dt:not(:first-of-type) {padding-left: .5ex}\n",
-       "</style><dl class=dl-inline><dt>Ja</dt><dd>2233.33333333333</dd><dt>Nein</dt><dd>2075</dd></dl>\n"
-      ],
-      "text/latex": [
-       "\\begin{description*}\n",
-       "\\item[Ja] 2233.33333333333\n",
-       "\\item[Nein] 2075\n",
-       "\\end{description*}\n"
-      ],
-      "text/markdown": [
-       "Ja\n",
-       ":   2233.33333333333Nein\n",
-       ":   2075\n",
-       "\n"
-      ],
-      "text/plain": [
-       "      Ja     Nein \n",
-       "2233.333 2075.000 "
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "mean(gehalt ~ teilnahme, data = Schulung)"
    ]
@@ -724,7 +753,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "18d03655",
+   "id": "706bccb7",
    "metadata": {
     "name": "po-solution"
    },
@@ -741,7 +770,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "e53426cb",
+   "id": "95df3eb8",
    "metadata": {
     "lines_to_next_cell": 2,
     "name": "po-hint"
@@ -753,20 +782,23 @@
   },
   {
    "cell_type": "markdown",
-   "id": "833f4eb1",
+   "id": "5f5d9e76",
    "metadata": {},
    "source": [
     "##\n",
     "\n",
-    "Das fundamentale Problem der kausalen Inferenz ist universell. In vielen Situationen kann es dazu führen, dass die Daten uns in die Irre führen: Vielleicht vermuten wir einen kausalen Effekt, wo es nicht wirklich einen gibt, oder wir erkennen real existierende Effekte nicht. \n",
+    "Das fundamentale Problem der kausalen Inferenz ist universell.\n",
+    "In vielen Situationen kann es dazu führen, dass die Daten uns in die Irre führen: Vielleicht vermuten wir einen kausalen Effekt, wo es nicht wirklich einen gibt, oder wir erkennen real existierende Effekte nicht. \n",
     "\n",
-    "Die Gefahr solcher Fehlschlüsse verringert sich aber, wenn wir uns darüber Gedanken machen, wie unsere Daten überhaupt entstanden sind. In unserem fiktiven Beispiel kann man die zusätzliche Information heranziehen, dass Personen sich frei auswählen konnten, ob sie teilnehmen oder nicht. Dann erkennt man schnell, dass der naive Mittelwertvergleich kein angemessener Weg ist, den durchschnittlichen kausalen Effekt zu schätzen. \n",
+    "Die Gefahr solcher Fehlschlüsse verringert sich aber, wenn wir uns darüber Gedanken machen, wie unsere Daten überhaupt entstanden sind.\n",
+    "In unserem fiktiven Beispiel kann man die zusätzliche Information heranziehen, dass Personen sich frei auswählen konnten, ob sie teilnehmen oder nicht.\n",
+    "Dann erkennt man schnell, dass der naive Mittelwertvergleich kein angemessener Weg ist, den durchschnittlichen kausalen Effekt zu schätzen.\n",
     "\n",
     "In den folgenden Modulen werden Sie verschiedene datengenerierende Mechanismen kennenlernen und erfahren, wie diese kausale Schlüsse beeinflussen.\n",
     "\n",
     "## Hinweis\n",
     "\n",
-    "<red> **Dieser Kurs ist aktuell noch in der Entwicklung!** </red>\n",
+    "**Dieser Kurs ist aktuell noch in der Entwicklung!**\n",
     "\n",
     "Bitte melden Sie Fehler, Unklarheiten und Verbesserungsvorschläge [hier](https://github.com/luebby/WWWEKI/issues).\n",
     "\n",
@@ -775,7 +807,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "df67a1b8",
+   "id": "d18bda47",
    "metadata": {},
    "source": [
     "![](images/csm_Logo-BMBF.jpg)\n",
-- 
GitLab