---
fontsize: 8pt
bibliography: 9_Referenzen.bib
citation_package: natbib
output:
  beamer_presentation:
    keep_tex: true
    includes:
      in_header: 9_header.tex
---


```{r, include = F}
source("9_R_common.R")
```

# {.plain} 
\center
```{r, echo = FALSE, out.width = "20%"}
knitr::include_graphics("9_Abbildungen/pds_9_otto.png")
```

\vspace{2mm}

\huge
Programmierung und Deskriptive Statistik
\vspace{6mm}

\large
BSc Psychologie WiSe 2021/22

\vspace{6mm}
\large
Prof. Dr. Dirk Ostwald

# {.plain}
\vfill
\huge
\begin{center}
(9) Maße der Zentralen Tendenz
\end{center}
\vfill

#
\large
\setstretch{2.4}
Mittelwert

Median

Modalwert

Visuelle Intuitionen

Übungen und Selbstkontrollfragen
\vfill

# Mittelwert
\small
\begin{definition}[Mittelwert]
$x = (x_1,...,x_n)$ sei ein Datensatz. Dann heißt
\begin{equation}
\bar{x} := \frac{1}{n}\sum_{i=1}^n x_i
\end{equation}
der \textit{Mittelwert} von $x$.
\end{definition}
Bemerkung

* Im Kontext der Inferenzstatistik heißt der Mittelwert *Stichprobenmittel*.
* Die Inferenzstatistik gibt der Mittelwertsbildung ihren Sinn.

# Mittelwert

Berechnung des Mittelwerts
\vspace{2mm}

\footnotesize
\setstretch{1.2}
```{r}
# Einlesen des Beispieldatensatzes und Abbildungsverzeichnisdefinition
fname    = file.path(getwd(), "9_Daten", "psychotherapie_datensatz.csv")
D        = read.table(fname, sep = ",")
fdir     = file.path(getwd(), "9_Abbildungen")

# Mittelwertberechnung
x 		= D$Pre.BDI 			# double Vektor der Pre-BDI Werte Werte
n 		= length(x)	    		# Anzahl der Werte
x_bar 	= (1/n)*sum(x)			# Mittelwertsberechnung
print(x_bar)                    # Ausgabe
```

\small
`mean()` zur Berechnung des Mittelwerts
\vspace{2mm}

\footnotesize
\setstretch{1.2}
```{r}
x_bar   = mean(x)				# Mittelwertsberechnung
print(x_bar)                    # Ausgabe
```

# Mittelwert
\footnotesize
\vspace{2mm}
\setstretch{1.3}
\begin{theorem}[Eigenschaften des Mittelwerts]
\justifying
\normalfont
$x = (x_1,...,x_n)$ und sei ein Datensatz und $\bar{x}$ sei der Mittelwert von $x$.
Dann gelten
\begin{enumerate}
\item[(1)] Die Summe der Abweichungen vom Mittelwert ist Null,
\begin{equation}
\sum_{i=1}^n (x_i - \bar{x}) = 0.
\end{equation}
\item[(2)] Die absoluten Summen negativer und positiver Abweichungen vom Mittelwert sind gleich, d.h. wenn $j = 1,...,n_j$ die
Datenpunktindizes mit $(x_j - \bar{x}) < 0$ und $k = 1,...,n_k$ die Datenpunktindizes mit $(x_k - \bar{x}) \ge$ bezeichnen, dann gilt
mit $n_j + n_k$
\begin{equation}
\vert\sum_{j = 1}^{n_j} (x_j - \bar{x})\vert = \vert\sum_{k = 1}^{n_k} (x_k - \bar{x})\vert.
\end{equation}
\item[(3)] Der Mittelwert der Summe zweier gleich großer Datensätze entspricht der Summe ihrer Mittelwerte, d.h.
für einen weiteren Datensatz $y = (y_1,...,y_n)$ mit Mittelwert $\bar{y}$ gilt
\begin{equation}
\overline{x + y} = \bar{x} + \bar{y}
\end{equation}
\item[(4)] Eine linear-affine Transformation eines Datensatz transformiert den Mittelwert des Datensatzes linear-affin,
d.h für $a,b \in \mathbb{R}$ gilt
\begin{equation*}
\overline{ax + b} = a\bar{x} + b
\end{equation*}
\end{enumerate}
\end{theorem}

# Mittelwert
\footnotesize
\underline{Beweis}

\noindent (1) Es gilt
\begin{equation*}
\sum_{i=1}^n (x_i - \bar{x})
= \sum_{i=1}^n x_i - \sum_{i=1}^n \bar{x}
= \sum_{i=1}^n x_i - n\bar{x}
= \sum_{i=1}^n x_i - \frac{n}{n}\sum_{i=1}^n x_i
= \sum_{i=1}^n x_i - \sum_{i=1}^n x_i
= 0.
\end{equation*}

\noindent (2) Seien $j = 1,...,n_j$ die Indizes mit $(x_j - \bar{x}) < 0$ und
$k = 1,...,n_k$ die Indizes mit $(x_k - \bar{x}) \ge 0$, so dass $n = n_j + n_k$.
Dann gilt
\begin{align*}
\begin{split}
\sum_{i=1}^n (x_i - \bar{x}) = 0
\Leftrightarrow
\sum_{j=1}^{n_j} (x_j - \bar{x})  + \sum_{k=1}^{n_k} (x_k - \bar{x}) = 0
\Leftrightarrow
\sum_{k=1}^{n_k} (x_k - \bar{x})  & =  - \sum_{j=1}^{n_j} (x_j - \bar{x})  \\
\Leftrightarrow
\vert\sum_{j = 1}^{n_j} (x_j - \bar{x})\vert & = \vert\sum_{k = 1}^{n_k} (x_k - \bar{x})\vert.
\end{split}
\end{align*}


# Mittelwert
\footnotesize
\underline{Beweis}

\noindent (3) Es gilt
\begin{equation*}
\overline{x + y}
:= \frac{1}{n}\sum_{i=1}^n (x_i + y_i)
 = \frac{1}{n}\sum_{i = 1}^n x_i + \frac{1}{n}\sum_{i = 1}^n y_i
 =: \bar{x} + \bar{y}
\end{equation*}

\noindent(4) Es gilt
\begin{align*}
\begin{split}
\overline{ax + b}
& := \frac{1}{n}\sum_{i=1}^n (ax_i + b) \\
& = \sum_{i=1}^n \left(\frac{1}{n}ax_i + \frac{1}{n}b\right) \\
& = \sum_{i=1}^n \left(\frac{1}{n}ax_i\right) + \sum_{i=1}^n \left(\frac{1}{n}b\right) \\
& = a\frac{1}{n}\sum_{i=1}^n x_i + \frac{1}{n} \sum_{i=1}^n b \\
& = a\bar{x} + b
\end{split}
\end{align*}

# Mittelwert
\small
Eigenschaften des Mittelwerts
\vspace{2mm}

\footnotesize
Summe der Abweichungen
\vspace{2mm}

\setstretch{1}
```{r}
x 		= D$Pre.BDI 					# double Vektor der  Werte
s	    = sum(x - mean(x))				# Summe der Abweichungen vom Mittelwert
print(s) 							    # Rundungsfehler
```
\vspace{4mm}

Beträge der positiven und negativen Abweichungen
\vspace{2mm}

```{r}
x 	= D$Pre.BDI 					    # double Vektor der  Werte
s_1 = sum(x[x <= mean(x)] - mean(x))	# Summe aller negativer Abweichungen
s_2 = sum(x[x > mean(x)]  - mean(x)) 	# Summe aller positiver Abweichungen
print(s_1)                              # Ausgabe
print(s_2)                              # Ausgabe
```

# Mittelwert
\vspace{2mm}
\footnotesize
\setstretch{0.9}

Summation von Datensätzen
\vspace{2mm}

```{r}
x 		= D$Pre.BDI 					# double Vektor der  Werte
x_bar   = mean(x)						# Mittelwert der  Werte
y 		= D$Post.BDI    			    # double Vektor der Post.BDI Werte
y_bar   = mean(y)					    # Mittelwert der Post.BDI Werte
z 		= x + y							# double Vektor der  und Post.BDI Werte
z_bar   = mean(z)						# Mittelwert der Summe der  und Post.BDI Werte
print(z_bar)                            # Ausgabe
xy_bar 	= x_bar + y_bar				    # Summe der Mittelwerte der  und Post.BDI Werte
print(xy_bar)                           # Ausgabe
```

Linear-affine Transformation
\vspace{2mm}

```{r}
x 		 = D$Pre.BDI 					# double Vektor der Pre.BDI Werte
x_bar    = mean(x)						# Mittelwert der Pre.BDI Werte
a 		 = 2							# Multiplikationskonstante
b 		 = 5 							# Additionskonstante
y 		 = a*x + b						# linear-affine Transformation der Pre.BDI Werte
y_bar    = mean(y)					    # Mittelwert der transfomierten Pre.BDI Werte
print(y_bar)                            # Ausgabe
ax_bar_b = a*x_bar + b      			# Transformation des TA1 Mittelwerts
print(ax_bar_b)                         # Ausgabe
```


#
\vfill
\large
\setstretch{2.4}
Mittelwert

**Median**

Modalwert

Visuelle Intuitionen

Übungen und Selbstkontrollfragen
\vfill


# Median
\small
\begin{definition}[Median]
$x = (x_1,...,x_n)$ sei ein Datensatz und $x_{s} = (x_{(1)}, ...,x_{(n)})$ der
zugehörige aufsteigend sortierte Datensatz. Dann ist der Median von $x$ definiert als
\renewcommand{\arraystretch}{1.5}
\begin{equation}
\tilde{x} :=
\begin{cases}
x_{((n+1)/2)}
& \mbox{ falls } n \mbox{ ungerade}
\\[5pt]
\frac{1}{2}\left(x_{(n/2)} + x_{(n/2 + 1)}\right)
& \mbox{ falls } n \mbox{ gerade}
\end{cases}
\end{equation}
\end{definition}

\small
Bemerkungen

* Der Median ist identisch mit dem 0.5-Quantil.
* Mindestens 50% aller $x_i$ sind kleiner oder gleich $\tilde{x}$ 
* Mindestens 50% aller $x_i$ sind größer oder gleich $\tilde{x}$.
* Anstelle eines Beweises verweisen wir auf untenstehende Abbildungen.


# Median
\vspace{1mm}
Beispiele

```{r, echo = FALSE, out.width = "85%"}
knitr::include_graphics("9_Abbildungen/pds_9_median.pdf")
```

# Median
\small
Berechnung des Medians
\vspace{2mm}

\footnotesize
\setstretch{1}
```{r}
x 			= D$Pre.BDI                   # double Vektor der Pre.BDI Werte
n 			= length(x)                   # Anzahl der Werte
x_s  		= sort(x)                     # aufsteigend sortierter Vektor
if(n %% 2 == 1){                          # n ungerade, n mod 2 == 1    
   x_tilde = x_s[(n+1)/2]
} else {                                  # n gerade, n mod 2 == 0
   x_tilde = (x_s[n/2] + x_s[n/2 + 1])/2
}
print(x_tilde)
```

\small
\vspace{2mm}
Berechnung des Medians mit `median()`
\vspace{2mm}

\footnotesize
```{r}
x_tilde 	= median(x)                  # Berechnung des Medians
print(x_tilde)                           # Ausgabe
```

# Median 
\small
Der Median ist weniger anfällig für Ausreißer als der Mittelwert
\vspace{2mm}

\footnotesize
\setstretch{1.1}
```{r}
x 		= D$Pre.BDI					# double Vektor der Pre.BDI Werte
x_bar 	= mean(x)					# Mittelwert der Pre.BDI Werte
x_tilde = median(x) 				# Median der Pre.BDI Werte
print(x_bar)                        # Ausgabe 
print(x_tilde)                      #  Ausgabe
y 		= x							# neuer Datensatz mit
y[1] 	= 10000 					# ... einem Extremwert
y_bar 	= mean(y)					# Mittelwert des neuen Datensatzes
print(y_bar)                        # Ausgabe
y_tilde = median(y) 				# Mittelwert des neuen Datensatzes
print(y_tilde)                      # Ausgabe
```



#
\vfill
\large
\setstretch{2.4}
Mittelwert

Median

**Modalwert**

Visuelle Intuitionen

Übungen und Selbstkontrollfragen
\vfill

# Modalwert
\footnotesize
\begin{definition}[Modalwert]
$x := (x_1,...,x_n)$ mit $x_i \in \mathbb{R}$ sei ein Datensatz, $A := \{a_1,...,a_k\}$ mit $k \le n$ seien die im Datensatz vorkommenden verschiedenen Zahlenwerte und
$h : A \to \mathbb{N}$ sei die absolute Häufigkeitsverteilung der Zahlwerte von $x$.
Dann ist der \textit{Modalwert (oder Modus)} von $x$ definiert als
\begin{equation}
\mbox{argmax}_{a \in A} h(a),
\end{equation}
also der am häufigsten im Datensatz vorkommende Wert.
\end{definition}
\footnotesize
Bemerkungen

* Modalwerte sind nur bei Datensätzen mit Datenpunktwiederholungen sinnvoll.

Bestimmung des Modalwertes
\setstretch{1}

```{r}
x        = D$Pre.BDI                # double Vektor der Pre.BDI Werte
n        = length(x)                # Anzahl der Datenwerte (100)
H        = as.data.frame(table(x))  # absolute Haeufigkeitsverteilung (dataframe)
names(H) = c("a", "h")              # Konsistente Benennung
mod      = H$a[which.max(H$h)]      # Modalwert
print(as.numeric(as.vector(mod)))   # Ausgabe als numeric vector, nicht factor

```

#
\vfill
\large
\setstretch{2.4}
Mittelwert

Median

Modalwert

**Visuelle Intuitionen**

Übungen und Selbstkontrollfragen
\vfill

# Visuelle Intuitionen
Visuelle Intuition zu Maßen zentraler Tendenz bei Normalverteilung

```{r, echo = F, eval = F}
set.seed(1)
dev.new()
fig     = par(
family     = "sans",
mfcol      = c(1,1),
pty        = "m",
bty        = "l",
lwd        = 1,
las        = 1,
mgp        = c(2,1,0),
xaxs       = "i",
yaxs       = "i",
cex        = 1.1,
font.main  = 1,
cex.main   = 1)
n           = 1e3
x           = round(rnorm(n, 50, 10))
H           = as.data.frame(table(x))
x_mean      = mean(x)
x_median    = median(x)
x_mode      = as.numeric(as.vector(H$x[which.max(H$Freq)]))
hist(
x,
breaks = 40,
col   = "gray90",
lwd   = 0.5,
prob  = TRUE,
ylim  = c(0,.06),
xlim  = c(0, 100),
xlab  = "x",
ylab  = "",
main  = sprintf("Mittelwert = %.1f, Median = %.1f, Modalwert = %.1f", x_mean, x_median, x_mode))
points(
c(x_mean, x_median, x_mode),
rep(0,3),
pch = 21,
col = "White",
bg = c("Blue", "Red", "Green"),
cex = 2,
xpd = TRUE)
legend(
"topleft",
c("Histogramm", "Mittelwert", "Median", "Modalwert"),
pch  = 16,
col  = c("gray90", "Blue", "Red", "Green"),
bty  = "n")
dev.copy2pdf(
file   = file.path(getwd(), "9_Abbildungen", "pds_9_normalverteilung.pdf"),
width  = 7,
height = 5)
```

\vspace{2mm}
```{r, echo = FALSE, out.width = "80%"}
knitr::include_graphics("9_Abbildungen/pds_9_normalverteilung.pdf")
```

# Visuelle Intuitionen
Visuelle Intuition zu Maßen zentraler Tendenz bei Gleichverteilung
```{r, echo = F, eval = F}
set.seed(1)
dev.new()
fig     = par(
family     = "sans",
mfcol      = c(1,1),
pty        = "m",
bty        = "l",
lwd        = 1,
las        = 1,
mgp        = c(2,1,0),
xaxs       = "i",
yaxs       = "i",
cex        = 1.1,
font.main  = 1,
cex.main   = 1)
n           = 1e3
x           = round(runif(n, 0, 100))
H           = as.data.frame(table(x))
x_mean      = mean(x)
x_median    = median(x)
x_mode      = as.numeric(as.vector(H$x[which.max(H$Freq)]))
hist(
x,
breaks = 40,
col   = "gray90",
lwd   = 0.5,
prob  = TRUE,
ylim  = c(0,.06),
xlim  = c(0, 100),
xlab  = "x",
ylab  = "",
main  = sprintf("Mittelwert = %.1f, Median = %.1f, Modalwert = %.1f", x_mean, x_median, x_mode))
points(
c(x_mean, x_median, x_mode),
rep(0,3),
pch = 21,
col = "White",
bg = c("Blue", "Red", "Green"),
cex = 2,
xpd = TRUE)
legend(
"topleft",
c("Histogramm", "Mittelwert", "Median", "Modalwert"),
pch  = 16,
col  = c("gray90", "Blue", "Red", "Green"),
bty  = "n")
dev.copy2pdf(
file   = file.path(getwd(), "9_Abbildungen", "pds_9_gleichverteilung.pdf"),
width  = 7,
height = 5)
```

\vspace{2mm}
```{r, echo = FALSE, out.width = "80%"}
knitr::include_graphics("9_Abbildungen/pds_9_gleichverteilung.pdf")
```

# Visuelle Intuitionen
Visuelle Intuition zu Maßen zentraler Tendenz bei bimodalen Verteilungen

```{r, echo = F, eval = F}
set.seed(1)
dev.new()
fig     = par(
family     = "sans",
mfcol      = c(1,1),
pty        = "m",
bty        = "l",
lwd        = 1,
las        = 1,
mgp        = c(2,1,0),
xaxs       = "i",
yaxs       = "i",
cex        = 1.1,
font.main  = 1,
cex.main   = 1)
n           = 1e3
x           = round(c(rnorm(n/2, 25, 10), rnorm(n/2,75, 10)))
H           = as.data.frame(table(x))
x_mean      = mean(x)
x_median    = median(x)
x_mode      = as.numeric(as.vector(H$x[which.max(H$Freq)]))
hist(
x,
breaks = 40,
col   = "gray90",
lwd   = 0.5,
prob  = TRUE,
ylim  = c(0,.06),
xlim  = c(0, 100),
xlab  = "x",
ylab  = "",
main  = sprintf("Mittelwert = %.1f, Median = %.1f, Modalwert = %.1f", x_mean, x_median, x_mode))
points(
c(x_mean, x_median, x_mode),
rep(0,3),
pch = 21,
col = "White",
bg = c("Blue", "Red", "Green"),
cex = 2,
xpd = TRUE)
legend(
"topleft",
c("Histogramm", "Mittelwert", "Median", "Modalwert"),
pch  = 16,
col  = c("gray90", "Blue", "Red", "Green"),
bty  = "n")
dev.copy2pdf(
file   = file.path(getwd(), "9_Abbildungen", "pds_9_bimodalverteilung.pdf"),
width  = 7,
height = 5)
```

\vspace{2mm}
```{r, echo = FALSE, out.width = "80%"}
knitr::include_graphics("9_Abbildungen/pds_9_bimodalverteilung.pdf")
```

# Visuelle Intuitionen
Visuelle Intuition zu Maßen zentraler Tendenz bei nicht-symmetrischen Verteilungen

```{r, echo = F, eval = F}
set.seed(1)
dev.new()
fig     = par(
family     = "sans",
mfcol      = c(1,1),
pty        = "m",
bty        = "l",
lwd        = 1,
las        = 1,
mgp        = c(2,1,0),
xaxs       = "i",
yaxs       = "i",
cex        = 1.1,
font.main  = 1,
cex.main   = 1)
n           = 1e3
x           = round(rgamma(n,2,2), digits = 2)
H           = as.data.frame(table(x))
x_mean      = mean(x)
x_median    = median(x)
x_mode      = as.numeric(as.vector(H$x[which.max(H$Freq)]))
hist(
x,
breaks = 50,
col   = "gray90",
lwd   = 0.5,
prob  = TRUE,
ylim  = c(0,0.9),
xlim  = c(0, 5),
xlab  = "x",
ylab  = "",
main  = sprintf("Mittelwert = %.1f, Median = %.1f, Modalwert = %.1f", x_mean, x_median, x_mode))
points(
c(x_mean, x_median, x_mode),
rep(0,3),
pch = 21,
col = "White",
bg = c("Blue", "Red", "Green"),
cex = 2,
xpd = TRUE)
legend(
"topright",
c("Histogramm", "Mittelwert", "Median", "Modalwert"),
pch  = 16,
col  = c("gray90", "Blue", "Red", "Green"),
bty  = "n")
dev.copy2pdf(
file   = file.path(getwd(), "9_Abbildungen", "pds_9_gammaverteilung.pdf"),
width  = 7,
height = 5)
```
```{r, echo = FALSE, out.width = "80%"}
knitr::include_graphics("9_Abbildungen/pds_9_gammaverteilung.pdf")
```

#
\large
\setstretch{2.4}
Mittelwert

Median

Modalwert

Visuelle Intuitionen

**Übungen und Selbstkontrollfragen**
\vfill

# Übungen und Selbskontrollfragen
\small
\begin{enumerate}
\justifying
\item Geben Sie die Definition des Mittelwertes eines Datensatzes wieder.
\item Berechnen Sie den Mittelwert der Post.BDI Daten.
\item Geben Sie das Theorem zu den Eigenschaften des Mittelwerts wieder.
\item Geben Sie die Definition des Median eines Datensatzes wieder.
\item Berechnen Sie den Median der Post.BDI Daten.
\item Wie verhalten sich Mittelwert und Median in Bezug auf Datenausreißer?
\item Geben Sie die Definition des Modalwertes eines Datensatzes wieder.
\item Berechnen Sie den Modalwert des Post.BDI Datensatzes.
\item Visualisieren Sie die Häufigkeitsverteilung des Post.BDI Datensatzes und
diskutieren Sie die berechneten Werte von Mittelwert, Median und Modalwert vor
dem Hintergrund dieser Häufigkeitsverteilung.
\end{enumerate}

```{r, echo = F, eval = F}

# Einlesen des Beispieldatensatzes und Abbildungsverzeichnisdefinition
fname    = file.path(getwd(), "9_Daten", "psychotherapie_datensatz.csv")
D        = read.table(fname, sep = ",")
fdir     = file.path(getwd(), "9_Abbildungen")
dev.new()
fig        = par(
family     = "sans",
mfcol      = c(1,1),
pty        = "m",
bty        = "l",
lwd        = 1,
las        = 1,
mgp        = c(2,1,0),
xaxs       = "i",
yaxs       = "i",
cex        = 1.1,
font.main  = 1,
cex.main   = 1)

# Maße zentraler Tendenz
x           = D$Post.BDI
H           = as.data.frame(table(x))
x_mean      = mean(x)
x_median    = median(x)
x_mode      = as.numeric(as.vector(H$x[which.max(H$Freq)]))
n 		    	= length(x)

# Häufigkeitsverteilung
H 		    	= as.data.frame(table(x))
names(H)    = c("a", "h")
h 		      = H$h
names(h)    = H$a

# Abbildung
dev.new()
hist(
D$Post.BDI,
main  = sprintf("Mittelwert = %.1f, Median = %.1f, Modalwert = %.1f", x_mean, x_median, x_mode))
points(
c(x_mean, x_median, x_mode),
rep(0,3),
pch = 21,
col = "White",
bg = c("Blue", "Red", "Green"),
cex = 2,
xpd = TRUE)
legend(
"topleft",
c("Absolute Häufigkeitsverteilung", "Mittelwert", "Median", "Modalwert"),
pch  = 16,
col  = c("gray90", "Blue", "Red", "Green"),
bty  = "n")
dev.copy2pdf(
file   = file.path(getwd(), "9_Abbildungen", "pds_9_postbdi.pdf"),
width  = 7,
height = 5)
```

