---
fontsize: 8pt
format:
  beamer:
    include-in-header: ../ALM_Header.tex
bibliography: ../ALM_Referenzen.bib
---


# {.plain}
<!-- Vorlesungstitel -->
\center
```{r, echo = F, out.width = "20%"}
knitr::include_graphics("../OvGU_Logo.png")
```

\vspace{2mm}
\huge
Allgemeines Lineares Modell

\vspace{6mm}
\large
BSc Psychologie, SoSe 2026

\vspace{5mm}
Joram Soch


<!-- Sitzung 10: Zweistichproben-T-Tests -->
# {.plain}

\vfill
\center
\huge
\textcolor{black}{(10) Zweistichproben-T-Tests}
\vfill


<!-- Inhaltsverzeichnis -->
#

\large
\setstretch{2}
\vfill

Anwendungsszenario

Modellformulierung

Modellschätzung

Modellevaluation

Anwendung/Praxis

Selbstkontrollfragen

Anhang/Details

\vfill


<!-- Abschnitt 1: Anwendungsszenario -->
#

\large
\setstretch{2}
\vfill

**Anwendungsszenario**

Modellformulierung

Modellschätzung

Modellevaluation

Anwendung/Praxis

Selbstkontrollfragen

Anhang/Details

\vfill


<!-- Anwendungsszenario -->
# Anwendungsszenario {.t}

\vspace{2mm}
\setstretch{2}
\textbf{\textcolor{darkblue}{Zwei Gruppen}} (Stichproben) randomisierter experimenteller Einheiten.

Annahme unabhängiger identischer Normalverteilungen $N(\mu_1,\sigma^2)$ und $N(\mu_2,\sigma^2)$.

$\mu_1,\mu_2$ und $\sigma^2$ unbekannt.

Annahme eines identischen Varianzparameters für beide Gruppen.

Quantifizieren der Unsicherheit beim inferentiellen Vergleich von $\mu_1$ mit $\mu_2$ beabsichtigt.


<!-- Anwendungsszenario -->
# Anwendungsszenario {.t}

\vspace{2mm}
\setstretch{1.8}
\textcolor{darkblue}{Anwendungsbeispiele}

\small
BDI-Differenzwert-Datenanalyse bei zwei Gruppen von Patient:innen
\vspace{-2mm}

* Gruppe 1: Face-to-Face-Therapie; Gruppe 2: Online-Therapie
* $\mu_1 \neq \mu_2 \Leftrightarrow$ Unterscheiden sich die Therapiewirksamkeiten?

Forcierte Schwimmtest-Datenanalyse bei zwei Gruppen genmanipulierter Mäuse
\vspace{-2mm}

* Gruppe 1: Wildtyp; Gruppe 2: Serotoninrezeptormutation
* $\mu_1 \neq \mu_2 \Leftrightarrow$ Trägt Serotoninrezeptor zum Schwimmtestverhalten bei?

Analyse von fMRT-Daten in den klinischen Neurowissenschaften
\vspace{-2mm}

* Gruppe 1: Alzheimer-Patienten; Gruppe 2: gesunde Kontrollen
* $\mu_1 \neq \mu_2 \Leftrightarrow$ Verändert Alzheimer-Erkrankung Hirnaktivität bei Enkodierung ins Gedächtnis?


<!-- Anwendungsszenario -->
# Anwendungsszenario {.t}

\vspace{2mm}
\textcolor{darkblue}{Anwendungsbeispiel}

```{r, echo = F, out.width = "90%", fig.align = "center"}
knitr::include_graphics("Abbildungen/beispielstudie_zweistichproben-t-test.pdf")
```

\small
Wir nehmen an, dass die Datenpunkte der Face-to-Face-Therapiegruppe u.i.v. Realisierungen von ZVen $y_{1j} \sim N(\mu_1,\sigma^2)$ und dass die Datenpunkte der Online-Therapiegruppe u.i.v. Realisierungen von ZVen $y_{2j} \sim N(\mu_2,\sigma^2)$ sind ($j = 1,...,40$). Wir nehmen weiter an, dass wir an der Quantifizierung der Unsicherheit beim inferentiellen Vergleich der wahren, aber unbekannten Erwartungswertparameter $\mu_1$ und $\mu_2$ im Sinne eines Hypothesentests interessiert sind.


<!-- Abschnitt 2: Modellformulierung -->
#

\large
\setstretch{2}
\vfill

Anwendungsszenario

**Modellformulierung**

Modellschätzung

Modellevaluation

Anwendung/Praxis

Selbstkontrollfragen

Anhang/Details

\vfill


<!-- Definition: Zweistichproben-T-Test-Modell -->
# Modellformulierung

\footnotesize
\begin{definition}[Zweistichproben-T-Test-Modell]

\justifying
$y_{ij}$ mit $i = 1,2$ und $j = 1,...,n_i$ seien Zufallsvariablen, die die Datenpunkte eines Anwendungsszenarios für den Zweistichproben-T-Test modellieren. Dann hat das \textit{Zweistichproben-T-Test-Modell} die strukturelle Form
\begin{equation}
y_{ij} = \mu_i + \varepsilon_{ij}
\quad \mbox{mit} \quad
\varepsilon_{ij} \sim N(0,\sigma^2)
\quad \mbox{u.i.v. für} \quad
i = 1,2, j = 1,...,n_i
\quad \mbox{mit} \quad
\mu_i \in \mathbb{R}
\quad \mbox{und} \quad
\sigma^2 > 0,
\end{equation}

die Datenverteilungsform
\begin{equation}
y_{ij} \sim N(\mu_i,\sigma^2)
\quad \mbox{u.i.v. für} \quad
i = 1,2, j = 1,...,n_i
\quad \mbox{mit} \quad
\mu_i \in \mathbb{R}
\quad \mbox{und} \quad
\sigma^2 > 0,
\end{equation}

und für den Datenvektor $y = (y_{11}, ...,y_{1n_1}, y_{21}, ...,y_{2n_2})^\mathrm{T}$ und $n := n_1 + n_2$ die Designmatrixform
\begin{equation}
y      = X\beta + \varepsilon
\quad \mbox{mit} \quad
X     := \begin{pmatrix} 1_{n_1} & 0_{n_1} \\ 0_{n_2} & 1_{n_2} \end{pmatrix} \in \mathbb{R}^{n \times 2}, \quad
\beta := \begin{pmatrix} \mu_1 \\ \mu_2 \end{pmatrix} \in \mathbb{R}^2, \quad
\varepsilon \sim N(0_n,\sigma^2I_n),
\quad \mbox{und} \quad
\sigma^2 > 0.
\end{equation}

\end{definition}

Bemerkungen

* $i$ indiziert die Gruppen, $j$ indiziert die experimentellen Einheiten in jeder Gruppe.
* $n_1$ und $n_2$ sind die Gruppengrößen, $n$ repräsentiert die Gesamtanzahl an Datenpunkten.
* Die Äquivalenz der drei Modellformen ergibt sich mit der Modellformulierung des ALM (vgl. Einheit (5) in *Allgemeines Lineares Modell*) und aus den Regeln der Matrixmultiplikation.
* Die Anzahl der Betaparameter ist $p = 2$.


<!-- Designmatrix des Modells -->
# Modellformulierung

Designmatrix des Zweistichproben-T-Test-Modells ($n = 20$, $p = 2$)

```{r, echo = F, eval = F}
# Designmatrixerzeugung
n_1    = 10                                  # Anzahl von Datenpunkten Gruppe 1
n_2    = 10                                  # Anzahl von Datenpunkten Gruppe 2
n      = n_1 + n_2                           # Gesamtanzahl der Datenpunkte
p      = 2                                   # Anzahl von Betaparametern
X      = matrix(c(rep(1,n_1), rep(0,n_1),    # n x p Designmatrix
                  rep(0,n_2), rep(1,n_2)),
                nrow  = n)
Xp     = X

# Abbildungsparameter
library(plot.matrix)
graphics.off()
dev.new()
par(
    family    = "sans",
    mar       = c(1,1,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  = 2)

# Designmatrix
plot(Xp,
    col       = gray(seq(0, 1, length.out = 256)),
    border    = "black",
    xlab      = '',
    ylab      = '',
    main      = '',
    breaks    = seq(-2, 1, length.out = 257),
    key       = NULL,
    axis.col  = NULL,
    axis.row  = NULL,
    asp       = 1)

# Speichern
dev.copy2pdf(
    file      = "Abbildungen/designmatrix_zweistichproben-t-test.pdf",
    width     = 10,
    height    = 10)
```

\vspace{2mm}
```{r, echo = F, out.width = "60%", fig.align = "center"}
knitr::include_graphics("Abbildungen/designmatrix_zweistichproben-t-test.pdf")
```


<!-- Datensimulation -->
# Modellformulierung

\normalsize
Datensimulation (vgl. Einheit (5) in *Allgemeines Lineares Modell*)

\vspace{4mm}

\footnotesize
\setstretch{1.2}

```{r, echo = T}
# Modellformulierung
library(MASS)                                # multivariate Normalverteilung
n_1    = 10                                  # Anzahl von Datenpunkten Gruppe 1
n_2    = 10                                  # Anzahl von Datenpunkten Gruppe 2
n      = n_1 + n_2                           # Gesamtanzahl der Datenpunkte
p      = 2                                   # Anzahl von Betaparametern
X      = matrix(c(rep(1,n_1), rep(0,n_1),    # n x p Designmatrix
                  rep(0,n_2), rep(1,n_2)),
                nrow  = n)
I_n    = diag(n)                             # n x n Einheitsmatrix
beta   = matrix(c(1,2), nrow = p)            # wahre,  aber unbekannte  Betaparameter
sigsqr = 14                                  # wahrer, aber unbekannter Varianzparameter

# Datenrealisierung
y      = mvrnorm(1, X %*% beta, sigsqr*I_n)  # eine Realisierung des n-dimensionalen ZVs y
print(y)
```


<!-- Abschnitt 3: Modellschätzung -->
#

\large
\setstretch{2}
\vfill

Anwendungsszenario

Modellformulierung

**Modellschätzung**

Modellevaluation

Anwendung/Praxis

Selbstkontrollfragen

Anhang/Details

\vfill


<!-- Theorem: Parameterschätzung im Zweistichproben-T-Test-Modell -->
# Modellschätzung

\footnotesize
\begin{theorem}[Parameterschätzung im Zweistichproben-T-Test-Modell]

\normalfont
\justifying
Gegeben sei die Designmatrixform des Zweistichproben-T-Test-Modells. Dann ergeben sich für den Betaparameterschätzer
\begin{equation}
\hat{\beta}
= \begin{pmatrix}
\frac{1}{n_1}\sum_{j=1}^{n_1} y_{1j} \\
\frac{1}{n_2}\sum_{j=1}^{n_2} y_{2j}
\end{pmatrix}
=: \begin{pmatrix}
\bar{y}_1 \\
\bar{y}_2
\end{pmatrix}
\end{equation}

und für den Varianzparameterschätzer
\begin{equation}
\hat{\sigma}^2
= \frac{\sum_{j=1}^{n_1} (y_{1j} - \bar{y}_1)^2 + \sum_{j=1}^{n_2} (y_{2j} - \bar{y}_2)^2}{n_1+n_2-2}
=: s_{12}^2
\end{equation}

\end{theorem}

Bemerkungen

* \justifying $\bar{y}_1$ und $\bar{y}_2$ bezeichnen die gruppenspezifischen Stichprobenmittel.
* $s_{12}^2$ wird als *gebündelte Stichprobenvarianz* oder *pooled sample variance* bezeichnet.
* Für einen Datensatz $y = \left( y_1^\mathrm{T}, \, y_2^\mathrm{T} \right)^\mathrm{T}$ gilt im Allgemeinen, dass $s_y^2 \neq s_{12}^2$. Die gebündelte Stichprobenvarianz und die Stichprobenvarianz eines zusammengefügten ("konkatenierten") Datensatzes sind im Allgemeinen also nicht identisch. Das Konzept der gebündelten Stichprobenvarianz wird uns im Kontext der einfaktoriellen Varianzanalyse erneut begegnen (siehe Einheit (11) in *Allgemeines Lineares Modell*).


<!-- Beweis -->
# Modellschätzung

\footnotesize
\underline{Beweis}

Für $i = 1,2$ sei $y_i := (y_{i1}, ..., y_{in_i})^\mathrm{T}$. Dann ergibt sich für den Betaparameterschätzer
\begin{align}
\begin{split}
\hat{\beta}
& = (X^\mathrm{T} X)^{-1}X^\mathrm{T} y \\
& = \left(
\begin{pmatrix} 1_{n_1} & 0_{n_2} \\ 0_{n_1} & 1_{n_2} \end{pmatrix}^\mathrm{T}
\begin{pmatrix} 1_{n_1} & 0_{n_1} \\ 0_{n_2} & 1_{n_2} \end{pmatrix}
\right)^{-1}
\begin{pmatrix} 1_{n_1} & 0_{n_2} \\ 0_{n_1} & 1_{n_2} \end{pmatrix}^\mathrm{T}
\begin{pmatrix} y_1 \\ y_2 \end{pmatrix} \\
& =
\begin{pmatrix}
n_1 & 0	  \\
0 	& n_2 \\
\end{pmatrix}^{-1}
\begin{pmatrix}
\sum_{j=1}^{n_1} y_{1j} \\
\sum_{j=1}^{n_2} y_{2j} \\
\end{pmatrix} \\
& = \begin{pmatrix}
1/n_1 & 0     \\
0 	  & 1/n_2 \\
\end{pmatrix}
\begin{pmatrix}
\sum_{j=1}^{n_1} y_{1j} \\
\sum_{j=1}^{n_2} y_{2j} \\
\end{pmatrix} \\
& =\begin{pmatrix}
\frac{1}{n_1}\sum_{j=1}^{n_1} y_{1j} \\
\frac{1}{n_2}\sum_{j=1}^{n_2} y_{2j} \\
\end{pmatrix} \\
& =: \begin{pmatrix} \bar{y}_1 \\ \bar{y}_2 \end{pmatrix}.
\end{split}
\end{align}


<!-- Beweis -->
# Modellschätzung

\footnotesize
\underline{Beweis (fortgeführt)}

Gleichsam ergibt sich für den Varianzparameterschätzer mit $n = n_1 + n_2$ und $p = 2$
\begin{align}
\begin{split}
\hat{\sigma}^{2}
& =
\frac{(y-X\hat{\beta})^\mathrm{T}(y - X\hat{\beta})}{n - p} \\
& =
\frac{1}{n_1+n_2-2}
\left(
\begin{pmatrix}
y_1 \\
y_2
\end{pmatrix} -
\begin{pmatrix}
1_{n_1} & 0_{n_1} \\
0_{n_2} & 1_{n_2}
\end{pmatrix}
\begin{pmatrix}
\bar{y}_{1} \\
\bar{y}_{2} \\
\end{pmatrix}
\right)^\mathrm{T}
\left(
\begin{pmatrix}
y_1 \\
y_2
\end{pmatrix} -
\begin{pmatrix}
1_{n_1} & 0_{n_1} \\
0_{n_2} & 1_{n_2}
\end{pmatrix}
\begin{pmatrix}
\bar{y}_{1} \\
\bar{y}_{2} \\
\end{pmatrix} \right) \\
& =\frac{1}{n_1+n_2-2}
\begin{pmatrix}
y_{11}-\bar{y}_{1}   \\
\vdots               \\
y_{1n_1}-\bar{y}_{1} \\
y_{21}-\bar{y}_{2}   \\
\vdots               \\
y_{2n_2}-\bar{y}_{2} \\
\end{pmatrix}^\mathrm{T}
\begin{pmatrix}
y_{11}-\bar{y}_{1}   \\
\vdots               \\
y_{1n_1}-\bar{y}_{1} \\
y_{21}-\bar{y}_{2}   \\
\vdots               \\
y_{2n_2}-\bar{y}_{2} \\
\end{pmatrix} \\
& = \frac{\sum_{j=1}^{n_1} (y_{1j}-\bar{y}_{1})^{2} +
          \sum_{j=1}^{n_2} (y_{2j}-\bar{y}_{2})^{2}}
         {n_1+n_2-2} \\
& =: s_{12}^2.
\end{split}
\end{align}
$\hfill\Box$


<!-- Modellschätzung -->
# Modellschätzung

\tiny
\setstretch{1}
```{r, echo = T}
# Daten einlesen
fname      = "Daten/T-Tests_Daten.csv"                            # Dateiname
D          = read.table(fname, sep = ",", header = TRUE)          # Dataframe
y_1        = D$dBDI[D$Setting == "F2F"]                           # BDI-Differenzwerte in der F2F-Gruppe
y_2        = D$dBDI[D$Setting == "ONL"]                           # BDI-Differenzwerte in der ONL-Gruppe

# Modellformulierung
n_1        = length(y_1)                                          # Anzahl Datenpunkte Gruppe 1 (F2F)
n_2        = length(y_1)                                          # Anzahl Datenpunkte Gruppe 2 (ONL)
n          = n_1 + n_2                                            # Gesamtanzahl Datenpunkte
p          = 2                                                    # Anzahl Betaparameter
y          = matrix(c(y_1, y_2), nrow = n)                        # Datenvektor
X          = matrix(c(rep(1,n_1), rep(0,n_1),                     # Designmatrix
                      rep(0,n_2), rep(1,n_2)),
                    nrow  = n)

# Modellschätzung
beta_hat   = solve(t(X) %*% X) %*% t(X) %*% y                     # Betaparameterschätzer
eps_hat    = y - X %*% beta_hat                                   # Residuenvektor
sigsqr_hat = (t(eps_hat) %*% eps_hat) /(n-p)                      # Varianzparameterschätzer
s_sqr_12   = ((n_1-1)*var(y_1) + (n_2-1)*var(y_2))/(n_1+n_2-2)    # gebündelte Stichprobenvarianz

# Ausgabe
cat(  "hat{beta}          : ", round(beta_hat,    digits = 3),    # Betaparameterschätzer
    "\nbar{y_1}, bar{y_2} : ", round(c(mean(y_1), mean(y_2)),     # Stichprobenmittel
                                                  digits = 3),    
    "\nhat{sigsqr}        : ", round(sigsqr_hat,  digits = 3),    # Varianzparameterschätzer
    "\ns_12^2             : ", round(s_sqr_12,    digits = 3),    # gebündelte Stichprobenvarianz
    "\ns_y^2              : ", round(var(y),      digits = 3))    # Stichprobenvarianz des konkatenierten Datensatzes
```


<!-- Abschnitt 4: Modellevaluation -->
#

\large
\setstretch{2}
\vfill

Anwendungsszenario

Modellformulierung

Modellschätzung

**Modellevaluation**

Anwendung/Praxis

Selbstkontrollfragen

Anhang/Details

\vfill


<!-- Überblick -->
# Modellevaluation

\small
\setstretch{1.5}
Überblick

\footnotesize
* Wir gruppieren frequentistische Konfidenzintervalle und Hypothesentests unter Modellevaluation.
* Wir verzichten an dieser Stelle auf eine Diskussion von Konfidenzintervallen.
* In der Praxis zielt die Evaluation von Zweistichproben-T-Tests-Designs meist auf einen Hypothesentest.
* Die Theorie der Zweistichproben-T-Tests ist umfangreich.
* Ein gutes Verständnis von Hypothesentests wird im Folgenden vorausgesetzt.
* (vgl. Einheit (12) in *Wahrscheinlichkeitstheorie und Frequentistische Inferenz*)

Im Zweistichproben-T-Test ALM Design ergeben sich folgende Hypothesenszenarien:
\vspace{-2mm}

* $H_0:\mu_1 - \mu_2  =  \mu_0$ und $H_1: \mu_1 - \mu_2 \neq \mu_0$
* $H_0:\mu_1 - \mu_2 \le \mu_0$ und $H_1: \mu_1 - \mu_2 >    \mu_0$
* $H_0:\mu_1 - \mu_2 \ge \mu_0$ und $H_1: \mu_1 - \mu_2 <    \mu_0$

Wir betrachten hier exemplarisch nur $H_0:\mu_1 - \mu_2 = \mu_0$ und $H_1: \mu_1 - \mu_2 \neq \mu_0$.

Für $\mu_0 := 0$ gelten dabei insbesondere:
\vspace{-2mm}

* $H_0:\mu_1 - \mu_2 =    0 \Leftrightarrow H_0: \mu_1 =    \mu_2$
* $H_1:\mu_1 - \mu_2 \neq 0 \Leftrightarrow H_1: \mu_1 \neq \mu_2$


<!-- Modellevaluation -->
# Modellevaluation

\small
\setstretch{2}
\textcolor{darkblue}{Gliederung} (vgl. [\textcolor{darkblue}{Einheit (12), um 01:58:00}](https://youtu.be/GJsS-AZe9zI?si=9kldNuX_I3bgjUFE&t=7080) in \textit{Wahrscheinlichkeitstheorie und Frequentistische Inferenz})

(1) Statistisches Modell $\checkmark$

(2) Testhypothesen $\checkmark$

(3) Teststatistik

(4) Test

(5) Analyse der Testgütefunktion

(6) Testumfangkontrolle

(7) p-Wert

(8) Analyse der Powerfunktion


<!-- Theorem: T-Teststatistik des Zweistichproben-T-Tests -->
# Modellevaluation (3) Teststatistik

\footnotesize
\begin{theorem}[T-Teststatistik des Zweistichproben-T-Tests]

\justifying
\normalfont
Gegeben sei die Designmatrixform des Zweistichproben-T-Test-Modells. Dann ergibt sich für die T-Teststatistik mit
\begin{equation}
c := (1,-1)^\mathrm{T}
\quad \mbox{und} \quad
c^\mathrm{T}\beta_0 =: \mu_0,
\end{equation}

dass
\begin{equation}
T = \sqrt{\frac{n_1n_2}{n_1+n_2}}\left(\frac{\bar{y}_1-\bar{y}_2 - \mu_0}{s_{12}}\right)
\end{equation}

und es gilt
\begin{equation}
T \sim t(\delta, n_1 + n_2 - 2)
\quad \mbox{mit} \quad
\delta = \sqrt{\frac{n_1n_2}{n_1+n_2}}\left(\frac{\mu_1-\mu_2-\mu_0}{\sigma}\right).
\end{equation}

\end{theorem}

Bemerkungen

* Das Theorem basiert auf der T-Statistik im Rahmen des ALM.
* Wir erinnern an das verwandte populäre und von der Stichprobengröße unabhängige Effekstärke-Maß *Cohen's* $d$ bei Zweistichproben-T-Test-Designs,
\begin{equation}
d := \frac{\bar{y}_1-\bar{y}_2}{s_{12}}.
\end{equation}
* Offenbar gilt für dieses *Cohen's* $d$, dass mit $\mu_0 := 0$
\begin{equation}
T = \sqrt{\frac{n_1n_2}{n_1+n_2}}d
\quad \Leftrightarrow \quad
d = T/\sqrt{\frac{n_1n_2}{n_1+n_2}}.
\end{equation}


<!-- Beweis -->
# Modellevaluation (3) Teststatistik

\footnotesize
\underline{Beweis}

Mit dem Theorem zur Verteilung der T-Statistik (siehe Einheit (7) in *Allgemeines Lineares Modell*) gilt zunächst für die Zähler von $T$ und $\delta$, dass
\begin{equation}
c^\mathrm{T}\hat{\beta} - c^\mathrm{T}\beta_0
= \begin{pmatrix} 1         &  -1        \end{pmatrix}
  \begin{pmatrix} \bar{y}_1 \\ \bar{y}_2 \end{pmatrix} -
  \mu_0
= \bar{y}_1 - \bar{y}_2 - \mu_0
\end{equation}

und
\begin{equation}
c^\mathrm{T}\beta - c^\mathrm{T}\beta_0
= \begin{pmatrix} 1     &  -1     \end{pmatrix}
  \begin{pmatrix} \mu_1 \\ \mu_2  \end{pmatrix} -
  \mu_0
= \mu_1 - \mu_2 - \mu_0 \; .
\end{equation}

Weiterhin gilt für die Nenner von  $T$ und $\delta$, dass
\begin{equation}
c^\mathrm{T}(X^\mathrm{T}X)^{-1}c =
\begin{pmatrix} 1 & -1 \end{pmatrix}
\begin{pmatrix}
1/n_1 & 0     \\
0 	  & 1/n_2 \\
\end{pmatrix}
\begin{pmatrix} 1 \\ -1 \end{pmatrix}
=
\begin{pmatrix} \frac{1}{n_1} &  -\frac{1}{n_2} \end{pmatrix}
\begin{pmatrix} 1             \\ -1             \end{pmatrix}
= \frac{1}{n_1} + \frac{1}{n_2} \; .
\end{equation}

Außerdem gilt
\begin{equation}
  \left(\frac{1}{n_1} + \frac{1}{n_2}\right)^{-\frac{1}{2}}
= \left(\frac{n_2}{n_1n_2} + \frac{n_1}{n_1n_2}\right)^{-\frac{1}{2}}
= \left(\frac{n_1 + n_2}{n_1n_2}\right)^{-\frac{1}{2}}
= \left(\frac{n_1n_2}{n_1+n_2}\right)^{\frac{1}{2}} \; .
\end{equation}

Zusammengenommen folgt dann, dass
\begin{equation}
T = \sqrt{\frac{n_1n_2}{n_1+n_2}}\left(\frac{\bar{y}_1-\bar{y}_2 - \mu_0}{s_{12}}\right)
\quad \mbox{und} \quad
\delta = \sqrt{\frac{n_1n_2}{n_1+n_2}}\left(\frac{\mu_1-\mu_2-\mu_0}{\sigma}\right) \; .
\end{equation}
$\hfill\Box$


<!-- Definition: Zweiseitiger Zweistichproben-T-Test -->
# Modellevaluation (4) Test

\footnotesize
\begin{definition}[Zweiseitiger Zweistichproben-T-Test]

\justifying
Gegeben sei das Zweistichproben-T-Test-Modell. Für ein $\mu_0 \in \mathbb{R}$ seien die Nullhypothese und die Alternativhypothese gegeben durch
\begin{equation}
H_0 : \mu_1 - \mu_2 = \mu_0
\end{equation}
und
\begin{equation}
H_1 : \mu_1 - \mu_2 \neq \mu_0 \; .
\end{equation}

Weiterhin sei die T-Teststatistik definiert durch
\begin{equation}
T := \sqrt{\frac{n_1n_2}{n_1+n_2}}\left(\frac{\bar{y}_1-\bar{y}_2 - \mu_0}{s_{12}}\right)
\end{equation}

Dann ist der \textit{zweiseitige Zweistichproben-T-Test} definiert als der kritische-Wert-basierte Test
\begin{equation}
\phi(y) := 1_{\{|T| \ge k\}} =
{\begin{cases}
1 & |T| \ge k \\
0 & |T|  <  k
\end{cases}} \; .
\end{equation}

\end{definition}

Bemerkungen

* Ausführlicher handelt es sich um den *zweiseitigen Zweistichproben-T-Test mit ungerichteter Hypothese*.


<!-- Modellevaluation -->
# Modellevaluation

\small
\setstretch{2}
\textcolor{darkblue}{Gliederung} (vgl. [\textcolor{darkblue}{Einheit (12), um 01:58:00}](https://youtu.be/GJsS-AZe9zI?si=9kldNuX_I3bgjUFE&t=7080) in \textit{Wahrscheinlichkeitstheorie und Frequentistische Inferenz})

(1) Statistisches Modell $\checkmark$

(2) Testhypothesen $\checkmark$

(3) Teststatistik $\checkmark$

(4) Test $\checkmark$

\textcolor{lightgray}{(5) Analyse der Testgütefunktion}

\textcolor{lightgray}{(6) Testumfangkontrolle}

\textcolor{lightgray}{(7) p-Wert}

\textcolor{lightgray}{(8) Analyse der Powerfunktion}


<!-- Theorem: Testumfangkontrolle -->
# Modellevaluation (6) Testumfangkontrolle

\small
\begin{theorem}[Testumfangkontrolle]

\justifying
\normalfont
$\phi$ sei der im obigen Testszenario definierte Test. Dann ist $\phi$ ein Level-$\alpha_0$-Test mit Testumfang $\alpha_0$, wenn der kritische Wert definiert ist durch
\begin{equation}
k_{\alpha_0} := \psi^{-1}\left(1 - \frac{\alpha_0}{2}; n_1 + n_2 - 2 \right),
\end{equation}

wobei $\psi^{-1}(\cdot; n_1+n_2-2)$ die inverse KVF der $t$-Verteilung mit $n_1+n_2-2$ Freiheitsgraden ist.

\end{theorem}

Bemerkungen

* Das Resultat folgt in Analogie zum Einstichproben-T-Test.
* Im Vergleich zum Einstichproben-T-Testfall gilt lediglich
\begin{equation}
n - 1 \hookrightarrow n_1 + n_2 - 2.
\end{equation}


<!-- Praktisches Vorgehen -->
# Modellevaluation (6) Testumfangkontrolle

Praktisches Vorgehen
\footnotesize

\begin{itemize}
\justifying

\item Man nimmt an, dass die Daten zweier Gruppen $y_{11},...,y_{1n_1}$ und $y_{21},...,y_{2n_2}$ Realisationen von $y_{1j} \sim N(\mu_1,\sigma^2) \mbox{ u.i.v. für } j = 1,...,n_1$ und $y_{2j} \sim N(\mu_2,\sigma^2) \mbox{ u.i.v. für } j = 1,...,n_2$ mit unbekannten Parametern $\mu_1,\mu_2$ und $\sigma^2$ sind.

\item Man möchte entscheiden, ob eher $H_0: \mu_1 - \mu_2 = \mu_0$ oder $H_1: \mu_1 - \mu_2 \neq \mu_0$ zutrifft.

\item Man wählt ein Signifikanzniveau $\alpha_0$ und bestimmt den zugehörigen Freiheitsgradparameter-abhängigen kritischen Wert $k_{\alpha_0}$. Zum Beispiel gilt bei Wahl von $\alpha_0 := 0.05$ und $n_1 = 12, n_2 = 12$, dass $k_{0.05}=\psi^{-1}(1-0.05/2; 12+12-2) \approx 2.07$ ist.

\item Anhand von $n_1,n_2,\bar{y}_1,\bar{y}_2$ und der gebündelten Stichprobenstandardabweichung $s_{12}$ berechnet man die Realisierung der Zweistichproben-T-Teststatistik
\begin{equation}
t := \sqrt{\frac{n_1n_2}{n_1+n_2}}\left(\frac{\bar{y}_1-\bar{y}_2 - \mu_0}{s_{12}}\right)
\end{equation}

\item Wenn $t$ größer-gleich $k_{\alpha_0}$ ist oder wenn $t$ kleiner-gleich $-k_{\alpha_0}$ ist, lehnt man die Nullhypothese ab, andernfalls lehnt man sie nicht ab.

\item Die oben entwickelte Theorie des Zweistichproben-T-Tests garantiert dann, dass man in höchstens $\alpha_0 \cdot 100$ von $100$ Fällen die Nullhypothese fälschlicherweise ablehnt.

\end{itemize}


<!-- Abschnitt 5: Anwendung/Praxis -->
#

\large
\setstretch{2}
\vfill

Anwendungsszenario

Modellformulierung

Modellschätzung

Modellevaluation

**Anwendung/Praxis**

Selbstkontrollfragen

Anhang/Details

\vfill


<!-- Anwendungsszenario -->
# Anwendung/Praxis

\small
\vspace{2mm}
\textcolor{darkblue}{Daten einlesen:} $j = 1,...,15$ für jede Gruppe

\tiny
\setstretch{0.6}

\vspace{1mm}
```{r, echo = T}
fname       = "Daten/T-Tests_Daten.csv"
D           = read.table(fname, sep = ",", header = TRUE)
```

\vspace{-1mm}
```{r, echo = F}
knitr::kable(D[c(1:15, 41:55),],
             align = "ccc",
             "pipe")
```


<!-- Anwendungsszenario -->
# Anwendung/Praxis

\vspace{1mm}

\tiny
\setstretch{0.5}

```{r, echo = T, eval = F}
# Histogrammparameter
h           = 1                                 # gewünschte Klassenbreite
b_0         = min(D$dBDI)                       # b_0
b_k         = max(D$dBDI)                       # b_0
k           = ceiling((b_k - b_0)/h)            # Anzahl der Klassen
b           = seq(b_0, b_k, by = h)             # Klassen [b_0, ..., b_k]
ylimits     = c(0,.2)                           # y-Achsenlimits
xlimits     = c(-2,14)                          # x-Achsenlimits
therapie    = c("F2F" , "ONL")                  # Therapiebedingungen
labs        = c("Face-to-Face", "Online")       # Abbildungslabel

# Abbildungsparameter
par(                                            # für Details siehe ?par
    mfcol       = c(1,2),                       # 1 x 2 Panelstruktur
    family      = "sans",                       # Serif-freier Fonttyp
    pty         = "m",                          # maximale Abbildungsregion
    bty         = "l",                          # L-förmige Box
    las         = 1,                            # horizontale Achsenbeschriftung
    xaxs        = "i",                          # x-Achse bei y = 0
    yaxs        = "i",                          # y-Achse bei x = 0
    font.main   = 1,                            # Titel nicht fett
    cex         = 1,                            # Textvergrößerungsfaktor
    cex.main    = 1)                            # Titeltextvergrößerungsfaktor

# Iteration über Therapiebedingungen
for(i in 1:2){
    hist(
    D$dBDI[D$Setting == therapie[i]],           # Delta-BDI-Werte von Therapiebedingung i
    breaks    = b,                              # Histogrammklassen
    freq      = F,                              # normierte relative Häufigkeit
    xlim      = xlimits,                        # x-Achsenlimits
    ylim      = ylimits,                        # y-Achsenlimits
    xlab      = TeX("$\\Delta BDI$"),           # x-Achsenbeschriftung
    ylab      = "geschätzte Wahrscheinlichkeit",# y-Achsenbeschriftung
    main      = labs[i])                        # Titelbeschriftung
}

# Speichern
dev.copy2pdf(
    file      = "Abbildungen/F2F_ONL_histogramme.pdf",
    width     = 8,
    height    = 4)
```


<!-- Anwendungsszenario -->
# Anwendung/Praxis

\vspace{2mm}

\tiny
\setstretch{1}

```{r, echo = T, eval = T}
# Initialisierung eines Dataframes
tp            = c("F2F", "ONL")                     # Therapiebedingungen
ntp           = length(tp)                          # Anzahl Therapiebedingungen
S             = data.frame(                         # Dataframeerzeugung
                    n         = rep(NaN,ntp),       # Stichprobengrößen
                    Max       = rep(NaN,ntp),       # Maxima
                    Min       = rep(NaN,ntp),       # Minima
                    Median    = rep(NaN,ntp),       # Mediane
                    Mean      = rep(NaN,ntp),       # Mittelwerte
                    Var       = rep(NaN,ntp),       # Varianzen
                    Std       = rep(NaN,ntp),       # Standardabweichungen
                    row.names = tp)                 # Therapiebedingungen

# Iterationen über Therapiebedingungen
for(i in 1:ntp){
    data        = D$dBDI[D$Setting == tp[i]]        # Daten
    S$n[i]      = length(data)                      # Stichprobengröße
    S$Max[i]    = max(data)                         # Maxima
    S$Min[i]    = min(data)                         # Minima
    S$Median[i] = median(data)                      # Mediane
    S$Mean[i]   = mean(data)                        # Mittelwerte
    S$Var[i]    = var(data)                         # Varianzen
    S$Std[i]    = sd(data)                          # Standardabweichungen
}
```


<!-- Anwendungsszenario -->
# Anwendung/Praxis

\vspace{2mm}

\small
\textcolor{darkblue}{Deskriptive Statistiken der PostBDI-PreBDI-Differenzen bei Face-to-Face- und Online-Therapie}

\vspace{1mm}
```{r, echo = F, out.width = "100%"}
knitr::include_graphics("Abbildungen/F2F_ONL_histogramme.pdf")
```

\footnotesize
\setstretch{1}
```{r, echo = T}
# Ausgabe
print.AsIs(S)
```


<!-- Datenanalyse -->
# Anwendung/Praxis

\vspace{3mm}

\tiny
\setstretch{0.7}

```{r, echo = T}
# Modellevaluation
fname      = "Daten/T-Tests_Daten.csv"                            # Dateiname
D          = read.table(fname, sep = ",", header = TRUE)          # Dataframe
y_1        = D$dBDI[D$Setting == "F2F"]                           # BDI-Differenzwerte in der F2F-Gruppe
y_2        = D$dBDI[D$Setting == "ONL"]                           # BDI-Differenzwerte in der ONL-Gruppe
n_1        = length(y_1)                                          # Anzahl Datenpunkte Gruppe 1 (F2F)
n_2        = length(y_1)                                          # Anzahl Datenpunkte Gruppe 2 (ONL)
n          = n_1 + n_2                                            # Gesamtanzahl Datenpunkte
p          = 2                                                    # Anzahl Betaparameter
y          = matrix(c(y_1, y_2), nrow = n)                        # Datenvektor
X          = matrix(c(rep(1,n_1), rep(0,n_2),                     # Designmatrix
                      rep(0,n_1), rep(1,n_2)), nrow  = n)
beta_hat   = solve(t(X) %*% X) %*% t(X) %*% y                     # Betaparameterschätzer
eps_hat    = y - X %*% beta_hat                                   # Residuenvektor
sigsqr_hat = (t(eps_hat) %*% eps_hat) /(n-p)                      # Varianzparameterschätzer
delta      = 0.95                                                 # Konfidenzbedingung
t_delta    = qt((1+delta)/2,n-1)                                  # \Psi^{-1}((1+\delta)/2,n-1)
lambda     = diag(solve(t(X) %*% X))                              # \lambda_j Werte
kappa      = matrix(rep(NaN,p*2), nrow = p)                       # \beta_j Konfidenintervall-Array
for(j in 1:p){                                                    # Iteration über \beta_j
    kappa[j,1]  = beta_hat[j]-sqrt(sigsqr_hat*lambda[j])*t_delta  # untere KI Grenze
    kappa[j,2]  = beta_hat[j]+sqrt(sigsqr_hat*lambda[j])*t_delta  # obere  KI Grenze
}
c          = matrix(c(1,-1), nrow = 2)                            # Kontrastgewichtsvektor
mu_0       = 0                                                    # Nullhypothese H_0
alpha_0    = 0.05                                                 # Signifikanzniveau
k_alpha_0  = qt(1 - (alpha_0/2), n-1)                             # kritischer Wert
t_num      = t(c) %*% beta_hat - mu_0                             # T-Teststatistik Zähler
t_den      = sqrt(sigsqr_hat*t(c) %*% solve(t(X) %*% X)%*%c)      # T-Teststatistik Nenner
t          = t_num/t_den                                          # T-Teststatistik
if(abs(t) >= k_alpha_0){phi = 1} else {phi = 0}                   # Test 1_{|T(X) >= k_alpha_0|}
pval       = 2*(1-pt(abs(t), n_1+n_2-2))                          # p-Wert
d          = t/sqrt((n_1*n_2)/(n_1 + n_2))                        # Cohen's d 
```

\vspace{-1mm}
```{r, echo = F}
cat(  "hat{beta} = ", beta_hat,
    "\nfg        = ", n_1 + n_2 - 2,
    "\nkappa_1   = ", kappa[1,],
    "\nkappa_2   = ", kappa[2,],
    "\nt         = ", t,
    "\nalpha_0   = ", alpha_0,
    "\nk_alpha_0 = ", k_alpha_0,
    "\nphi       = ", phi,
    "\np-Wert    = ", pval,
    "\nCohen's d = ", d)
```


<!-- Datenanalyse -->
# Anwendung/Praxis

\small
\textcolor{darkblue}{Anwendungszenario}

\vspace{2mm}

\scriptsize
\setstretch{0.9}
```{r, echo = T}
# automatischer Zweistichproben-T-Test
varphi    = t.test(y_1, y_2,                      # Datensatz
                var.equal   = TRUE,               # \sigma_1^2 = \sigma_2^2
                alternative = c("two.sided"),     # H_1: \mu_1 \neq \mu_2
                conf.level  = 1-alpha_0)          # \delta = 1 - \alpha_0

# Ausgabe
print(varphi)

# genauere Ausgabe von t
paste(varphi[1]$statistic)

# genauere Ausgabe von p
paste(varphi[3]$p.value)
```

\setstretch{1.5}
* R nutzt hier eine alternative Parameterisierung des Zweistichproben-T-Test Szenarios, die sogenannten *Effektdarstellung*.
* Wir werden die Effektdarstellung im Kontext der einfaktoriellen Varianzanalyse ausführlich diskutieren.


<!-- Datensatz: Great 10k -->
# Anwendung/Praxis

\small
Datensatz: erste vs. zweite 5 km beim Great 10k (08.10.2017), alle Teilnehmer ($n = 4883$)

```{r, echo = F, eval = T}
# Daten einlesen
filename = "Daten/great_10k.csv"
D        = read.csv(filename)

# Daten reduzieren
excl     = c("FU14", "FU16", "FU18", "FU20", "FU23", "F70", "F75", "F80", "MU14", "MU16", "MU18", "MU20", "MU23", "M70", "M75", "M80")
incl     = c("FE", "FH", "F30", "F35", "F40", "F45", "F50", "F55", "F60", "F65", "ME", "MH", "M30", "M35", "M40", "M45", "M50", "M55", "M60", "M65")
D        = D[!(D$AgeGroup %in% excl),]
D        = D[!(D$X5kTime  == "NaN:NaN:NaN"),]
D        = D[!(D$X10kTime == "NaN:NaN:NaN"),]
n        = nrow(D)

# Daten umsortieren
D$AgeGroup = factor(D$AgeGroup, levels = incl)

# Daten umrechnen
t5_hms   = D$X5kTime
t5_min   = rep(0, n)
t10_hms  = D$X10kTime
t10_min  = rep(0, n)
for(i in 1:n){
    t5         = t5_hms[i]
    t10        = t10_hms[i]
    t5_min[i]  = as.numeric(substr(t5,1,2))*60  + as.numeric(substr(t5,4,5))  + as.numeric(substr(t5,7,8))/60
    t10_min[i] = as.numeric(substr(t10,1,2))*60 + as.numeric(substr(t10,4,5)) + as.numeric(substr(t10,7,8))/60
}
D$T5k1   = t5_min
D$T5k2   = t10_min-t5_min
D$T10k   = t10_min
D$Tdiff  = D$T5k2 - D$T5k1
```

\vspace{2mm}
```{r, echo = F, out.width = "60%", fig.align = "center"}
knitr::include_graphics("Abbildungen/great_10k_streudiagramm.pdf")
```


<!-- Zweistichproben-T-Test (falsch) -->
# Anwendung/Praxis

\small
Zweistichproben-T-Test: erste vs. zweite 5 km, alle Teilnehmer ($n_1 = n_2 = 4883$)

\vspace{2mm}
```{r, echo = T, eval = T}
# Zweistichproben-T-Test (falsch)
y1     = D$T5k1                                             # "Gruppe" 1
y2     = D$T5k2                                             # "Gruppe" 2
n1     = length(y1)                                         # Anzahl Gruppe 1
n2     = length(y2)                                         # Anzahl Gruppe 2
n      = n1 + n2                                            # Anzahl Datenpunkte
p      = 2                                                  # Anzahl Regressoren
y      = matrix(c(y1,y2), nrow = n)                         # Datenvektor
X      = matrix(c(rep(1,n1), rep(0,n2),                     # Designmatrix
                  rep(0,n1), rep(1,n2)), ncol = p)
```

```{r, echo = F, eval = T}
# Zweistichproben-T-Test (falsch)
b_hat  = solve(t(X) %*% X) %*% t(X) %*% y                   # Betaparameterschätzer
e_hat  = y - X %*% b_hat                                    # Residuenvektor
s2_hat = (t(e_hat) %*% e_hat)/(n-p)                         # Varianzparameterschätzer
c      = matrix(c(1,-1), nrow = p)                          # Kontrastvektor
cTb0   = 0                                                  # Nullhypothese
t      = (t(c)%*%b_hat - cTb0)/sqrt(s2_hat * t(c)%*%solve(t(X) %*% X)%*%c)  # T-Statistik
d      = t/sqrt(n)                                          # Cohen's d 
pval   = 2*(1 - pt(abs(t), n-1))                            # p-Wert
cat(  "Datenpunkte pro Gruppe          : ", round(c(n1,n2), digits = 3),
    "\nBetaparameterschätzer           : ", round(b_hat,    digits = 3),
    "\nVarianzparameterschätzer        : ", round(s2_hat,   digits = 3),
    "\nZweistichproben-T-Teststatistik : ", round(t,        digits = 3),
    "\nCohen's d                       : ", round(d,        digits = 3),
    "\np-Wert                          : ", round(pval,     digits = 3), "\n\n")
```


<!-- Zweistichproben-T-Test (richtig) -->
# Anwendung/Praxis

\small
Zweistichproben-T-Test: Differenz 5-km-Strecken, Frauen vs. Männer ($n_1 = 1921$, $n_2 = 2962$)

\vspace{2mm}
```{r, echo = T, eval = T}
# Zweistichproben-T-Test (richtig)
y1     = D$Tdiff[D$Sex=="F"]                                # Gruppe 1
y2     = D$Tdiff[D$Sex=="M"]                                # Gruppe 2
n1     = length(y1)                                         # Anzahl Gruppe 1
n2     = length(y2)                                         # Anzahl Gruppe 2
n      = n1 + n2                                            # Anzahl Datenpunkte
p      = 2                                                  # Anzahl Regressoren
y      = matrix(c(y1,y2), nrow = n)                         # Datenvektor
X      = matrix(c(rep(1,n1), rep(0,n2),                     # Designmatrix
                  rep(0,n1), rep(1,n2)), ncol = p)
```

```{r, echo = F, eval = T}
# Zweistichproben-T-Test (richtig)
b_hat  = solve(t(X) %*% X) %*% t(X) %*% y                   # Betaparameterschätzer
e_hat  = y - X %*% b_hat                                    # Residuenvektor
s2_hat = (t(e_hat) %*% e_hat)/(n-p)                         # Varianzparameterschätzer
c      = matrix(c(1,-1), nrow = p)                          # Kontrastvektor
cTb0   = 0                                                  # Nullhypothese
t      = (t(c)%*%b_hat - cTb0)/sqrt(s2_hat * t(c)%*%solve(t(X) %*% X)%*%c)  # T-Statistik
d      = t/sqrt(n)                                          # Cohen's d 
pval   = 2*(1 - pt(abs(t), n-1))                            # p-Wert
cat(  "Datenpunkte pro Gruppe          : ", round(c(n1,n2), digits = 3),
    "\nBetaparameterschätzer           : ", round(b_hat,    digits = 3),
    "\nVarianzparameterschätzer        : ", round(s2_hat,   digits = 3),
    "\nZweistichproben-T-Teststatistik : ", round(t,        digits = 3),
    "\nCohen's d                       : ", round(d,        digits = 3),
    "\np-Wert                          : ", round(pval,     digits = 3), "\n\n")
```


<!-- Datensatz: Küchenrollen -->
# Anwendung/Praxis

\small
Beispiel: Induzieren Bewegungen im Uhrzeigersinn Offenheit für neue Erfahrungen (= "psychische Zustände zeitlichen Fortschreitens und eine Orientierung auf die Zukunft und Neuartigkeit")? (@wagenmakers_turning_2015)

\vspace{2mm}
\begin{minipage}{0.58\textwidth}
  \includegraphics[width=\linewidth]{Abbildungen/kitchen_rolls_abstract.png}
\end{minipage}
\hfill
\begin{minipage}{0.40\textwidth}
  \includegraphics[width=\linewidth]{Abbildungen/kitchen_rolls_experiment.png}
\end{minipage}


<!-- Datensatz: Küchenrollen -->
# Anwendung/Praxis

\small
Datensatz: mittlere NEO-PI-R-Scores, getrennt nach Rotationsrichtung ($n = 102$)

```{r, echo = F, eval = T}
# Daten einlesen
filename = "Daten/kitchen_rolls.csv"
D        = read.csv(filename)

# Daten aufräumen
levs       = c("clock", "counter")
D$Rotation = factor(D$Rotation, levels = levs)
```

```{r, echo = F, eval = F}
# Daten visualisieren
library(vioplot)
par(
    family      = "sans",
    mar         = c(3,3,1,1),
    pty         = "m",
    bty         = "l",
    lwd         = 1,
    las         = 1,
    mgp         = c(2,1,0),
    xaxs        = "i",
    yaxs        = "i",
    font.main   = 1.5,
    cex         = 1.5)

# Violinplot
vioplot(D$mean_NEO ~ D$Rotation, D,
    col         = "gray80",
    rectCol     = "black",
    lineCol     = "white",
    colMed      = "black",
    border      = "black",
    pchMed      = 16,
    plotCentre  = "lines",
    xlab        = "rotation",
    ylab        = "mean NEO",
    ylim        = c(-1,2.5),
    drawRect    = FALSE)

# Datenpunkte
stripchart(D$mean_NEO ~ D$Rotation, D,
    method      = "jitter",
    xaxt        = "n",
    vertical    = TRUE,
    pch         = 19,
    col         = "black",
    add         = TRUE,
    cex         = 1)

# Mittelwerte
dx = 0.3
for (i in 1:length(levs)) {
    segments(
        x0      = i - dx,
        x1      = i + dx,
        y0      = median(D$mean_NEO[D$Rotation==levs[i]]),
        y1      = median(D$mean_NEO[D$Rotation==levs[i]]),
        col     = "black",
        lwd     = 2)
}

# Speichern
dev.copy2pdf(
    file        = "Abbildungen/kitchen_rolls_violin_plot.pdf",
    width       = 9,
    height      = 9)
```

\vspace{2mm}
```{r, echo = F, out.width = "60%", fig.align = "center"}
knitr::include_graphics("Abbildungen/kitchen_rolls_violin_plot.pdf")
```


<!-- Zweistichproben-T-Test -->
# Anwendung/Praxis

\small
Zweistichproben-T-Test: mittlere NEO-PI-R-Scores, im UZS vs. gegen den UZS ($n_1 = 48$, $n_2 = 54$)

\vspace{2mm}
```{r, echo = T, eval = T}
# Zweistichproben-T-Test
y1     = D$mean_NEO[D$Rotation=="clock"]                    # Gruppe 1
y2     = D$mean_NEO[D$Rotation=="counter"]                  # Gruppe 2
n1     = length(y1)                                         # Anzahl Gruppe 1
n2     = length(y2)                                         # Anzahl Gruppe 2
n      = n1 + n2                                            # Anzahl Datenpunkte
p      = 2                                                  # Anzahl Regressoren
y      = matrix(c(y1,y2), nrow = n)                         # Datenvektor
X      = matrix(c(rep(1,n1), rep(0,n2),                     # Designmatrix
                  rep(0,n1), rep(1,n2)), ncol = p)
```

```{r, echo = F, eval = T}
# Zweistichproben-T-Test
b_hat  = solve(t(X) %*% X) %*% t(X) %*% y                   # Betaparameterschätzer
e_hat  = y - X %*% b_hat                                    # Residuenvektor
s2_hat = (t(e_hat) %*% e_hat)/(n-p)                         # Varianzparameterschätzer
c      = matrix(c(1,-1), nrow = p)                          # Kontrastvektor
cTb0   = 0                                                  # Nullhypothese
t      = (t(c)%*%b_hat - cTb0)/sqrt(s2_hat * t(c)%*%solve(t(X) %*% X)%*%c)  # T-Statistik
d      = t/sqrt(n)                                          # Cohen's d 
pval   = 2*(1 - pt(abs(t), n-1))                            # p-Wert
cat(  "Datenpunkte pro Gruppe          : ", round(c(n1,n2), digits = 3),
    "\nBetaparameterschätzer           : ", round(b_hat,    digits = 3),
    "\nVarianzparameterschätzer        : ", round(s2_hat,   digits = 3),
    "\nZweistichproben-T-Teststatistik : ", round(t,        digits = 3),
    "\nCohen's d                       : ", round(d,        digits = 3),
    "\np-Wert                          : ", round(pval,     digits = 3), "\n\n")
```


<!-- Zweistichproben-T-Test -->
# Anwendung/Praxis

\small
Zweistichproben-T-Test: mittlere NEO-PI-R-Scores, Frauen vs. Männer ($n_1 = 77$, $n_2 = 25$)

\vspace{2mm}
```{r, echo = T, eval = T}
# Zweistichproben-T-Test
y1     = D$mean_NEO[D$Sex=="F"]                             # Gruppe 1
y2     = D$mean_NEO[D$Sex=="M"]                             # Gruppe 2
n1     = length(y1)                                         # Anzahl Gruppe 1
n2     = length(y2)                                         # Anzahl Gruppe 2
n      = n1 + n2                                            # Anzahl Datenpunkte
p      = 2                                                  # Anzahl Regressoren
y      = matrix(c(y1,y2), nrow = n)                         # Datenvektor
X      = matrix(c(rep(1,n1), rep(0,n2),                     # Designmatrix
                  rep(0,n1), rep(1,n2)), ncol = p)
```

```{r, echo = F, eval = T}
# Zweistichproben-T-Test
b_hat  = solve(t(X) %*% X) %*% t(X) %*% y                   # Betaparameterschätzer
e_hat  = y - X %*% b_hat                                    # Residuenvektor
s2_hat = (t(e_hat) %*% e_hat)/(n-p)                         # Varianzparameterschätzer
c      = matrix(c(1,-1), nrow = p)                          # Kontrastvektor
cTb0   = 0                                                  # Nullhypothese
t      = (t(c)%*%b_hat - cTb0)/sqrt(s2_hat * t(c)%*%solve(t(X) %*% X)%*%c)  # T-Statistik
d      = t/sqrt(n)                                          # Cohen's d 
pval   = 2*(1 - pt(abs(t), n-1))                            # p-Wert
cat(  "Datenpunkte pro Gruppe          : ", round(c(n1,n2), digits = 3),
    "\nBetaparameterschätzer           : ", round(b_hat,    digits = 3),
    "\nVarianzparameterschätzer        : ", round(s2_hat,   digits = 3),
    "\nZweistichproben-T-Teststatistik : ", round(t,        digits = 3),
    "\nCohen's d                       : ", round(d,        digits = 3),
    "\np-Wert                          : ", round(pval,     digits = 3), "\n\n")
```


<!-- Anhang: Selbstkontrollfragen -->
#

\large
\setstretch{2}
\vfill

Anwendungsszenario

Modellformulierung

Modellschätzung

Modellevaluation

Anwendung/Praxis

**Selbstkontrollfragen**

Anhang/Details

\vfill


<!-- Selbstkontrollfragen -->
# Selbstkontrollfragen

\footnotesize
\setstretch{2}
\begin{enumerate}

\item Erläutern Sie das Anwendungsszenario eines Zweistichproben-T-Tests.
\item Geben Sie die Definition des Zweistichproben-T-Test-Modells wieder.
\item Geben Sie das Theorem zur Parameterschätzung im Zweistichproben-T-Test-Modell wieder.
\item Geben Sie das Theorem zur T-Teststatistik des Zweistichproben-T-Tests wieder.
\item Erläutern Sie mögliche Hypothesenszenarien eines Zweistichproben-T-Tests.
\item Geben Sie die Definition des zweiseitigen Zweistichproben-T-Tests mit ungerichteter Alternativypothese wieder.
\item Erläutern Sie das praktische Vorgehen bei Durchführung eines zweiseitigen Level-$\alpha_0$-Zweistichproben-T-Tests.
\item Gegeben seien zwei Datenvektoren $y_1$ und $y_2$. Unter welchen Bedingungen dürfen diese zu einem Zweistichproben-T-Test herangezogen werden? Unter welchen Bedingungen nicht?

\end{enumerate}


<!-- Anhang: Details -->
#

\large
\setstretch{2}
\vfill

Anwendungsszenario

Modellformulierung

Modellschätzung

Modellevaluation

Anwendung/Praxis

Selbstkontrollfragen

**Anhang/Details**

\vfill


<!-- Theorem: Testgütefunktion -->
# Anhang/Details

\footnotesize
\begin{theorem}[Testgütefunktion]

\justifying
\normalfont
Es sei $\phi$ der im obigen Modell formulierte Zweistichproben-T-Test. Dann ist die Testgütefunktion von $\phi$ gegeben durch
\begin{align}
\begin{split}
q_{\phi} : \mathbb{R}^2 \to [0,1],
(\mu_1, \mu_2) \mapsto q_{\phi}(\mu_1, \mu_2)
:= 1 &- \psi(k;\delta,n_1+n_2-2) \\
     &+ \psi(-k;\delta,n_1+n_2-2) \; ,
\end{split}
\end{align}

wobei $\psi(\cdot; \delta, n_1+n_2-2)$ die KVF der nichtzentralen $t$-Verteilung mit Nichtzentralitätsparameter
\begin{equation}
\delta = \sqrt{\frac{n_1n_2}{n_1+n_2}}\left(\frac{\mu_1-\mu_2-\mu_0}{\sigma}\right)
\end{equation}

und Freiheitsgradparameter $n_1+n_2-2$ bezeichnet.

\end{theorem}

Bemerkungen

* $q_{\phi}$ ist eine bivariate reellwertige Funktion.
* $q_{\phi}$ kann alternativ als univariate reellwertige Funktion von $\Delta := \mu_1 - \mu_2$ konzipiert werden.
* Im Vergleich zum Einstichprobenszenario gelten
\begin{equation}
n-1 \hookrightarrow n_1+n_2-2, \quad\quad
\sqrt{n} \hookrightarrow \sqrt{\frac{n_1n_2}{n_1 + n_2}}, \quad\quad
\mu - \mu_0 \hookrightarrow \mu_1 - \mu_2 -\mu_0
\end{equation}
* Wir verzichten auf einen Beweis. Für einen Beweisansatz, siehe @degroot2012, Seite 591.


<!-- Analyse der Testgütefunktion -->
# Anhang/Details

\small
\center
Testgütefunktion $q_\phi$ für $\sigma^2 = 9, \mu_0 = 0, n_1 = 12, n_2 = 12$ und $k = 1,2,3$.
\vspace{2mm}
\begin{equation*}
q_{\phi}\mu_1,\mu_2) = \mathbb{P}_{\mu_1,\mu_2}(\phi = 1)
\end{equation*}

```{r, eval = F, echo = F}
# Abbildungsparameter
graphics.off()
dev.new()
par(
    family      = "sans",
    mfcol       = c(1,3),
    pty         = "m",
    bty         = "l",
    lwd         = 1,
    las         = 1,
    xaxs        = "i",
    yaxs        = "i",
    font.main   = 1,
    cex         = .4,
    cex.main    = 2)

# Visualisierung
k_all        = c(1,2,3)                                             # kritische Werte
n_1         = 12                                                    # Stichprobengröße n_1
n_2         = 12                                                    # Stichprobengröße n_2
sigsqr      = 9                                                     # Varianzparameter
mu_min      = -5                                                    # Minimum   \mu_1,\mu_2
mu_max      = 5                                                     # Minimum   \mu_1,\mu_2
mu_res      = 2e1                                                   # Auflösung \mu_1,\mu_2
mu_1        = seq(mu_min, mu_max, len = mu_res)                     # \mu_1
mu_2        = seq(mu_min, mu_max, len = mu_res)                     # \mu_2

# Iterationen über kritische Werte
for(k in k_all){
    q_phi       = matrix(rep(NaN, mu_res*mu_res), nrow = mu_res)    # q_\phi Array
    for(i in seq_along(mu_1)){                                      # \mu_1 Iterationen
        for(j in seq_along(mu_2)){                                  # \mu_2 Iterationen
            d           = (mu_1[i] - mu_2[j])/sqrt(sigsqr)          # Nichtzentralitätsparameter \delta
            df          = n_1 + n_2 - 2                             # Freiheitsgradparameter n_1+n_2-2
            q_phi[i,j]  = 1-pt(k,df,d)+pt(-k,df,d)                  # q_\phi
        }
    }
    persp(mu_1, mu_2, q_phi,
        d           = 1,
        col         = "gray90",
        theta       = 20,
        phi         = 30,
        lwd         = .5,
        scale       = T,
        ticktype    = "detailed",
        r           = 1.5,
        zlim        = c(0,1),
        main        = paste("k =", k))
}

# Speichern
dev.copy2pdf(
    file    = "Abbildungen/t_test_zweistichproben_q_phi.pdf",
    width   = 6,
    height  = 2)
```

```{r, echo = F, out.width = "100%"}
knitr::include_graphics("Abbildungen/t_test_zweistichproben_q_phi.pdf")
```


<!-- Theorem: Testumfangkontrolle -->
# Anhang/Details

\small
\begin{theorem}[Testumfangkontrolle]

\justifying
\normalfont
$\phi$ sei der im obigen Testszenario definierte Test. Dann ist $\phi$ ein Level-$\alpha_0$-Test mit Testumfang $\alpha_0$, wenn der kritische Wert definiert ist durch
\begin{equation}
k_{\alpha_0} := \psi^{-1}\left(1 - \frac{\alpha_0}{2}; n_1 + n_2 - 2 \right),
\end{equation}

wobei $\psi^{-1}(\cdot; n_1+n_2-2)$ die inverse KVF der $t$-Verteilung mit $n_1+n_2-2$ Freiheitsgraden ist.

\end{theorem}

Bemerkungen

* Das Resultat folgt in Analogie zum Einstichproben-T-Test.
* Im Vergleich zum Einstichproben-T-Testfall gilt lediglich
\begin{equation}
n - 1 \hookrightarrow n_1 + n_2 - 2.
\end{equation}


<!-- Praktisches Vorgehen -->
# Anhang/Details

Praktisches Vorgehen
\footnotesize

\begin{itemize}
\justifying

\item Man nimmt an, dass die Daten zweier Gruppen $y_{11},...,y_{1n_1}$ und $y_{21},...,y_{2n_2}$ Realisationen von $y_{1j} \sim N(\mu_1,\sigma^2) \mbox{ u.i.v. für } j = 1,...,n_1$ und $y_{2j} \sim N(\mu_2,\sigma^2) \mbox{ u.i.v. für } j = 1,...,n_2$ mit unbekannten Parametern $\mu_1,\mu_2$ und $\sigma^2$ sind.

\item Man möchte entscheiden, ob eher $H_0: \mu_1 - \mu_2 = \mu_0$ oder $H_1: \mu_1 - \mu_2 \neq \mu_0$ zutrifft.

\item Man wählt ein Signifikanzniveau $\alpha_0$ und bestimmt den zugehörigen Freiheitsgradparameter-abhängigen kritischen Wert $k_{\alpha_0}$. Zum Beispiel gilt bei Wahl von $\alpha_0 := 0.05$ und $n_1 = 12, n_2 = 12$, dass $k_{0.05}=\psi^{-1}(1-0.05/2; 12+12-2) \approx 2.07$ ist.

\item Anhand von $n_1,n_2,\bar{y}_1,\bar{y}_2$ und der gebündelten Stichprobenstandardabweichung $s_{12}$ berechnet man die Realisierung der Zweistichproben-T-Teststatistik
\begin{equation}
t := \sqrt{\frac{n_1n_2}{n_1+n_2}}\left(\frac{\bar{y}_1-\bar{y}_2 - \mu_0}{s_{12}}\right)
\end{equation}

\item Wenn $t$ größer-gleich $k_{\alpha_0}$ ist oder wenn $t$ kleiner-gleich $-k_{\alpha_0}$ ist, lehnt man die Nullhypothese ab, andernfalls lehnt man sie nicht ab.

\item Die oben entwickelte Theorie des Zweistichproben-T-Tests garantiert dann, dass man in höchstens $\alpha_0 \cdot 100$ von $100$ Fällen die Nullhypothese fälschlicherweise ablehnt.

\end{itemize}


<!-- Bestimmung des p-Werts -->
# Anhang/Details

Bestimmung des p-Wertes
\footnotesize

* \justifying \small Per Definition ist der p-Wert das kleinste Signifikanzlevel $\alpha_0$, bei welchem man die Nullhypothese basierend auf einem vorliegendem Wert der Teststatistik ablehnen würde.

* Bei $T = t$ würde $H_0$ für jedes $\alpha_0$ mit $|t|\ge\psi^{-1}(1-\alpha_0/2; n_1 + n_2-2)$ abgelehnt werden. Für diese $\alpha_0$ gilt, wie bereits mehrfach gezeigt,
\begin{equation}
\alpha_0 \ge 2 \mathbb{P}(T \ge |t|).
\end{equation}

* Das kleinste $\alpha_0 \in [0,1]$ mit $\alpha_0 \ge 2 \mathbb{P}(T \ge |t|)$ ist dann $\alpha_0 = 2 \mathbb{P}(T \ge |t|)$, also folgt
\begin{equation}
\mbox{p-Wert} =  2 \mathbb{P}(T \ge |t|) = 2(1 - \psi(|t|;n_1 + n_2 - 2)).
\end{equation}

* Im Vergleich zum Einstichprobenfall gilt lediglich $n-1 \hookrightarrow n_1+n_2-2$.


<!-- Analyse der Powerfunktion -->
# Anhang/Details

Analyse der Powerfunktion
\small

Wir betrachten die Testgütefunktion
\begin{align}
\begin{split}
q_{\phi} : \mathbb{R}^2 \to [0,1],
(\mu_1, \mu_2) \mapsto q_{\phi}(\mu_1, \mu_2)
:= 1 &- \psi(k;\delta,n_1+n_2-2) \\
     &+ \psi(-k;\delta,n_1+n_2-2)
\end{split}
\end{align}

als Funktion des Nichtzentralitätsparameters $\delta := \sqrt{\frac{n_1n_2}{n_1+n_2}}\left(\frac{\mu_1-\mu_2-\mu_0}{\sigma}\right)$ und der Summe der Stichprobenumfänge $n := n_1 + n_2$ bei kontrolliertem Testumfang, also für $k_{\alpha_0} := \psi^{-1}(1-\alpha_0/2;n-2)$ mit festem $\alpha_0$.

Es ergibt sich die multivariate reellwertige Funktion
\begin{equation}
\pi : \mathbb{R} \times \mathbb{N} \to [0,1],
(\delta,n) \mapsto \pi(\delta,n) := 1-\psi(k_{\alpha_0};\delta,n-2)+\psi(-k_{\alpha_0}; \delta,n-2) \; .
\end{equation}

Bei festgelegten $\alpha_0$ hängt die Powerfunktion des zweiseitigen T-Tests mit einfacher Nullhypothese also vom unbekannten Wert $\delta$ und von der Summe der Stichprobengrößen $n$ ab. De facto handelt es sich also um die gleiche Powerfunktion wie beim zweiseitigen Einstichproben-T-Test mit dem einzigen Unterschied, dass für den Freiheitsgradparameter $n-2$ anstelle von $n-1$ gilt. Wir verzichten auf eine erneute Visualisierung.


<!-- Praktisches Vorgehen -->
# Anhang/Details

Praktisches Vorgehen
\small

\vspace{1mm}
Mit größerem $n = n_1 + n_2$ steigt die Powerfunktion des Tests an:

* Ein großer Stichprobenumfang ist besser als ein kleiner Stichprobenumfang.

* Kosten für die Erhöhung des Stichprobenumfangs werden aber nicht berücksichtigt.

* \justifying Ungleichgewichte zwischen $n_1$ und $n_2$ werden durch die Tatsache ausglichen, dass Datenpunkte einer Stichprobe auch zur Varianzschätzung in der anderen Stichprobe beitragen, da eine identische Varianz vorausgesetzt wurde.

\vspace{1mm}
Die Powerfunktion hängt vom wahren, aber unbekannten, Wert $\delta = \sqrt{\frac{n_1n_2}{n_1+n_2}}\left(\frac{\mu_1-\mu_2-\mu_0}{\sigma}\right)$ ab.

$\Rightarrow$ Wenn man $\delta$ schon kennen würde, würde man den Test nicht durchführen.

\vspace{1mm}
Generell wird folgendes Vorgehen favorisiert:

* Man legt das Signifikanzniveau $\alpha_0$ fest und evaluiert die Powerfunktion.

* Man wählt einen Mindestparameterwert $\delta^*$, den man mit $\pi(\delta,n) = b$ detektieren möchte.

* Ein konventioneller Wert ist $b= 0.8$.

* Man liest die für $\pi(\delta = \delta^*,n) = b$ nötige Stichprobengröße $n$ ab.


<!-- Visualisierung -->
# Anhang/Details

Praktisches Vorgehen

\vspace{4mm}
```{r, echo = F, eval = F}
# Szenariospezifikation
sigma     = 1                                                       # bekanntes \sigma
mu_0      = 0                                                       # einfache Nullhypothese
n_min     = 3                                                       # n = n_1 + n_2 Minimum
n_max     = 20                                                      # n = n_1 + n_2 Maximum
n_res     = 1e2                                                     # n Auflösung
n         = seq(n_min,n_max, len = n_res)                           # n Raum
alpha_0   = 0.05                                                    # Signifikanzniveau

# Poweranalyse
d_fix     = 3                                                       # fester Nichtzentralitätsparameter
k_alpha_0 = qt(1-alpha_0/2,n-2)                                     # kritische Werte
pi_n      = 1-pt(k_alpha_0,n-2, d_fix)+pt(-k_alpha_0,n-2,d_fix)     # Powerfunktion
beta      = 0.8                                                     # gewünschter Powerfunktionswert
i         = 1                                                       # Indexinitialisierung
n_min     = NaN                                                     # Initialisierung von minimalem n
while(pi_n[i] < beta){                                              # Solange \pi(\delta*,n) < \beta
    n_min = n[i]                                                    # Aufnahme des minimal nötigen n
    i     = i + 1                                                   # und Erhöhung des Indexes
}
cat("minimal nötiges n =", ceiling(n_min))                          # Ausgabe
```

```{r, echo = F, eval = F}
# Visualisierung
library(latex2exp)
par(
    family      = "sans",
    mfcol       = c(1,1),
    pty         = "m",
    bty         = "l",
    lwd         = 1,
    las         = 1,
    xaxs        = "i",
    yaxs        = "i",
    font.main   = 1,
    cex         = 1.2,
    cex.main    = 1.2)
plot(n, pi_n,
    type        = "l",
    lwd         = 2,
    ylab        = " ",
    ylim        = c(0,1),
    xlab        = TeX("$n$"),
    main        = TeX("$\\pi(\\delta = 3,n)\\, für \\,\\alpha_0 = 0.05"))
lines(3, beta,
    type        = "p",
    pch         = 16,
    xpd         = TRUE)
lines(n_min, 0,
    type        = "p",
    pch         = 16,
    xpd         = TRUE)
arrows(
    x0          = min(n),
    y0          = beta,
    x1          = n_min,
    y1          = beta,
    col         = "darkorange",
    angle       = 20,
    length      = .1)
arrows(
    x0          = n_min,
    y0          = beta,
    x1          = n_min,
    y1          = 0,
    col         = "darkorange",
    angle       = 20,
    length      = .1)
text(3.5, 0.85, TeX("$b$"),      xpd = TRUE, cex = 1.2)
text(18 , 0.05, TeX("$n_{opt}"), xpd = TRUE, cex = 1.2)

# Speichern
dev.copy2pdf(
    file        = "Abbildungen/t_test_zweistichproben_umfang.pdf",
    width       = 7,
    height      = 5)
```

```{r, echo = F, out.width = "80%", fig.align = "center"}
knitr::include_graphics("Abbildungen/t_test_zweistichproben_umfang.pdf")
```


<!-- Literatur -->
# Referenzen
