Updated statistics chapter

This commit is contained in:
2015-11-04 23:52:29 +01:00
parent be13ea7610
commit 3216086642
18 changed files with 251 additions and 607 deletions

View File

@@ -5,9 +5,6 @@ for i = [1:length(nrolls)]
% plain hist:
%hist(d)
% check bin counts of plain hist:
% h = hist(d)
% force 6 bins:
%hist(d, 6)

View File

@@ -13,14 +13,3 @@ bar(b2,h2, 'facecolor', 'r' )
xlabel('x')
ylabel('Frequency')
hold off
% normalize:
hn1 = h1/sum(h1)/db1;
hn2 = h2/sum(h2)/db2;
subplot( 1, 2, 2 )
bar(b1,hn1)
hold on
bar(b2,hn2, 'facecolor', 'r' )
xlabel('x')
ylabel('Probability density')
hold off

View File

@@ -0,0 +1,9 @@
hn1 = h1/sum(h1)/db1;
hn2 = h2/sum(h2)/db2;
subplot( 1, 2, 2 )
bar(b1,hn1)
hold on
bar(b2,hn2, 'facecolor', 'r' )
xlabel('x')
ylabel('Probability density')
hold off

View File

@@ -1,9 +1,8 @@
import numpy as np
import matplotlib.pyplot as plt
#x = np.random.randn( 40, 10 )
#np.save('boxwhiskerdata', x )
x = np.load('boxwhiskerdata.npy')
rng = np.random.RandomState(981)
x = rng.randn( 40, 10 )
plt.xkcd()
fig = plt.figure( figsize=(6,4) )
@@ -16,27 +15,27 @@ ax.set_xlabel('Experiment')
ax.set_ylabel('x')
ax.set_ylim( -4.0, 4.0)
ax.annotate('Median',
xy=(3.9, 0.1), xycoords='data',
xytext=(3.5, -2.5), textcoords='data', ha='right',
xy=(3.9, 0.0), xycoords='data',
xytext=(3.5, -2.7), textcoords='data', ha='right',
arrowprops=dict(arrowstyle="->", relpos=(0.8,1.0),
connectionstyle="angle3,angleA=-110,angleB=60") )
ax.annotate('1. quartile',
xy=(5.8, -0.7), xycoords='data',
xytext=(5.5, -3.5), textcoords='data', ha='right',
arrowprops=dict(arrowstyle="->", relpos=(0.5,1.0),
xy=(5.8, -0.9), xycoords='data',
xytext=(5.5, -3.4), textcoords='data', ha='right',
arrowprops=dict(arrowstyle="->", relpos=(0.9,1.0),
connectionstyle="angle3,angleA=30,angleB=70") )
ax.annotate('3. quartile',
xy=(6.1, 0.6), xycoords='data',
xy=(6.1, 1.1), xycoords='data',
xytext=(6.5, 3.0), textcoords='data', ha='left',
arrowprops=dict(arrowstyle="->", relpos=(0.0,0.0),
connectionstyle="angle3,angleA=30,angleB=70") )
ax.annotate('minimum',
xy=(6.1, -2.3), xycoords='data',
xy=(6.1, -1.9), xycoords='data',
xytext=(7.2, -3.3), textcoords='data', ha='left',
arrowprops=dict(arrowstyle="->", relpos=(0.0,0.5),
connectionstyle="angle3,angleA=10,angleB=100") )
ax.annotate('maximum',
xy=(5.9, 2.8), xycoords='data',
xy=(5.9, 2.7), xycoords='data',
xytext=(4.9, 3.5), textcoords='data', ha='right',
arrowprops=dict(arrowstyle="->", relpos=(1.0,0.5),
connectionstyle="angle3,angleA=0,angleB=120") )

View File

@@ -2,11 +2,12 @@ import numpy as np
import matplotlib.pyplot as plt
plt.xkcd()
fig = plt.figure( figsize=(6,5) )
fig = plt.figure( figsize=(6,4.6) )
rng = np.random.RandomState(2981)
n = 200
for k, r in enumerate( [ 1.0, 0.6, 0.0, -0.9 ] ) :
x = np.random.randn( n )
y = r*x + np.sqrt(1.0-r*r)*np.random.randn( n )
x = rng.randn( n )
y = r*x + np.sqrt(1.0-r*r)*rng.randn( n )
ax = fig.add_subplot( 2, 2, k+1 )
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
@@ -25,7 +26,7 @@ for k, r in enumerate( [ 1.0, 0.6, 0.0, -0.9 ] ) :
ax.set_ylabel('y')
ax.set_xlim( -3.0, 3.0)
ax.set_ylim( -3.0, 3.0)
ax.scatter( x, y )
ax.scatter( x[(np.abs(x)<2.8)&(np.abs(y)<2.8)], y[(np.abs(x)<2.8)&(np.abs(y)<2.8)] )
plt.tight_layout()
plt.savefig('correlation.pdf')

View File

@@ -2,7 +2,7 @@ import numpy as np
import matplotlib.pyplot as plt
plt.xkcd()
fig = plt.figure( figsize=(6,3) )
fig = plt.figure( figsize=(6,2.2) )
n = 200
x = np.random.randn( n )
y = np.random.randn( n )

View File

@@ -2,35 +2,22 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{\tr{Descriptive statistics}{Deskriptive Statistik}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\section{Statistics of real-valued data}
Bei der deskriptiven Statistik werden Datens\"atze durch wenige Kenngr\"o{\ss}en
\"ubersichtlich dargestellt.
\begin{itemize}
\item Location, central tendency
\begin{itemize}
\item arithmetic mean
\item median
\item mode
\end{itemize}
\item Spread, dispersion
\begin{itemize}
\item variance
\item standard deviation
\item interquartile range
\item coefficient of variation
\item minimum, maximum
\end{itemize}
\item Shape
\begin{itemize}
\item skewnees
\item kurtosis
\end{itemize}
\item Dependence
\begin{itemize}
\item Pearson correlation coefficient
\item Spearman's rank correlation coefficient
\end{itemize}
\end{itemize}
Neben dem Histogramm, das die Wahrscheinlichkeitsverteilung der Daten
im Detail darstellt, werden u.a. folgende Kenngr\"o{\ss}en zur Beschreibung
der Daten eingesetzt:
\begin{description}
\item[Lagema{\ss}e] (``location'', ``central tendency''):
arithmetisches Mittel, Median, Modus (``Mode'')
\item[Streuungsma{\ss}e] (``spread'', ``dispersion''): Varianz,
Standardabweichung, Interquartilabstand,\linebreak Variations\-koeffizient
(``Coefficient of variation'')
\item[Shape]: Schiefe (``skewnees''), W\"olbung (``kurtosis'')
\item[Zusammenhangsma{\ss}e]: Pearson Korrelationskoeffizient,
Spearmans Rang\-korrelations\-koeffizient.
\end{description}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{\tr{Mode, median, quartile, etc.}{Modus, Median, Quartil, etc.}}
@@ -54,6 +41,7 @@ Der Median teilt eine Liste von Messwerten so in zwei H\"alften, dass
die eine H\"alfte der Daten nicht gr\"o{\ss}er und die andere H\"alfte
nicht kleiner als der Median ist (\figref{medianfig}).
\newpage
\begin{exercise}{mymedian.m}{}
\tr{Write a function \code{mymedian} that computes the median of a vector.}
{Schreibe eine Funktion \code{mymedian}, die den Median eines Vektors zur\"uckgibt.}
@@ -61,6 +49,7 @@ nicht kleiner als der Median ist (\figref{medianfig}).
\matlab{} stellt die Funktion \code{median()} zur Berechnung des Medians bereit.
\newpage
\begin{exercise}{checkmymedian.m}{}
\tr{Write a script that tests whether your median function really
returns a median above which are the same number of data than
@@ -95,7 +84,9 @@ eine feinere Einteilung. Das 3. Quartil ist das 75. Perzentil, da
\begin{figure}[t]
\includegraphics[width=1\textwidth]{boxwhisker}
\caption{\label{boxwhiskerfig} Box-whisker plots illustrate distributions.}
\caption{\label{boxwhiskerfig} Box-Whisker Plots sind gut geeignet
um mehrere unimodale Verteilungen miteinander zu vergleichen.
Hier sind es jeweils 40 normalverteilte Zufallszahlen.}
\end{figure}
Box-Whisker Plots sind eine h\"aufig verwendete Darstellung um die
@@ -151,12 +142,13 @@ Wahrscheinlichkeitsverteilung der Messwerte abzusch\"atzen.
mit der theoretischen Verteilung $P=1/6$ vergleichbar.}}
\end{figure}
\newpage
Bei ganzzahligen Messdaten (z.B. die Augenzahl eines W\"urfels oder
die Anzahl von Aktionspotentialen in einem bestimmten Zeitfenster)
kann f\"ur jede auftretende Zahl eine Klasse definiert werden. Damit
die H\"ohe der Histogrammbalken unabh\"angig von der Anzahl der
Messwerte wird, normiert man das Histogram auf die Anzahl der
Messwerte (\figref{diehistogramsfig}). Die H\"ohe der
Messwerte wird, wird das Histogram auf die Anzahl der
Messwerte normiert (\figref{diehistogramsfig}). Die H\"ohe der
Histogrammbalken gibt dann die Wahrscheinlichkeit $P(x_i)$ des
Auftretens der Gr\"o{\ss}e $x_i$ in der $i$-ten Klasse an
\[ P_i = \frac{n_i}{N} = \frac{n_i}{\sum_{i=1}^M n_i} \; . \]
@@ -174,17 +166,54 @@ gleich Null, da es unabz\"ahlbar viele reelle Zahlen gibt.
Sinnvoller ist es dagegen, nach der Wahrscheinlichkeit zu fragen, eine
Zahl aus einem bestimmten Bereich zu erhalten, z.B. die
Wahrscheinlichkeit $P(1.2<x<1.3)$, dass die Zahl $x$ einen Wert
zwischen 1.2 und 1.3 hat.
zwischen 1.2 und 1.3 hat.
%Der Grenzwert zu einem immer kleineren
%Bereich f\"uhrt uns dann zum Begriff der Wahrscheinlichkeitsdichte
%\[ p(x) = \lim_{\Delta x \to 0}P(x_0<x<x_0+\Delta x) = P(x_0) + dP/dx \cdot \Delta x \]
Im Grenzwert zu sehr kleinen Bereichen $\Delta x$ ist die Wahrscheinlichkeit
eines Wertes $x$ zwischen $x_0$ und $x_0+\Delta x$
\[ P(x_0<x<x_0+\Delta x) \approx p(x) \cdot \Delta x \; . \]
Die Gr\"o{\ss}e $p(x)$ ist eine sogenannte
``Wahrscheinlichkeitsdichte''. Sie ist keine einheitenlose
Wahrscheinlichkeit mit Werten zwischen Null und Eins, sondern kann
jeden positiven Wert annehmen und hat als Einheit den Kehrwert der
Einheit von $x$.
\begin{exercise}{gaussianbins.m}{}
\tr{Draw 100 random data from a Gaussian distribution and plot
histograms with different bin sizes of the data.} {Ziehe 100
normalverteilte Zufallszahlen und erzeuge Histogramme mit
unterschiedlichen Klassenbreiten. Was f\"allt auf?}
\begin{figure}[t]
\includegraphics[width=1\textwidth]{pdfprobabilities}
\caption{\label{pdfprobabilitiesfig} Wahrscheinlichkeiten bei
einer Wahrscheinlichkeitsdichtefunktion.}
\end{figure}
F\"ur beliebige Bereiche ist die Wahrscheinlichkeit f\"ur den Wert $x$ zwischen
$x_1$ und $x_2$ gegeben durch
\[ P(x_1 < x < x2) = \int\limits_{x_1}^{x_2} p(x) \, dx \; . \]
Da die Wahrscheinlichkeit irgendeines Wertes $x$ Eins ergeben muss gilt die Normierung
\begin{equation}
\label{pdfnorm}
P(-\infty < x < \infty) = \int\limits_{-\infty}^{+\infty} p(x) \, dx = 1 \; .
\end{equation}
Die gesamte Funktion $p(x)$, die jedem Wert $x$ einen
Wahrscheinlichkeitsdichte zuordnet wir auch
Wahrscheinlichkeitsdichtefunktion (``probability density function'',
``pdf'', oder kurz ``density'') genannt. Die bekannteste
Wahrscheinlichkeitsdichtefunktion ist die der Normalverteilung
\[ p_g(x) =
\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^2}} \]
--- die Gau{\ss}sche-Glockenkurve mit Mittelwert $\mu$ und
Standardabweichung $\sigma$.
\newpage
\begin{exercise}{gaussianpdf.m}{gaussianpdf.out}
\vspace{-3ex}
\begin{enumerate}
\item Plotte die Wahrscheinlichkeitsdichte der Normalverteilung $p_g(x)$.
\item Berechne f\"ur die Normalverteilung mit Mittelwert Null und
Standardabweichung Eins die Wahrscheinlichkeit, eine Zahl zwischen
0 und 1 zu erhalten.
\item Ziehe 1000 normalverteilte Zufallszahlen und bestimme von
diesen Zufallzahlen die Wahrscheinlichkeit der Zahlen zwischen
Null und Eins.
\item Berechne aus der Normalverteilung $\int_{-\infty}^{+\infty} p(x) \, dx$.
\end{enumerate}
\end{exercise}
\begin{figure}[t]
@@ -200,65 +229,66 @@ zwischen 1.2 und 1.3 hat.
(blau).}}
\end{figure}
Histogramme von reellen Messwerten m\"ussen auf das Integral 1
normiert werden, so dass das Integral (nicht die Summe) \"uber das
Histogramm eins ergibt --- denn die Wahrscheinlichkeit, dass
irgendeiner der Messwerte auftritt mu{\ss} Eins sein. Das Integral ist
die Fl\"ache des Histogramms. Diese setzt sich zusammen aus der
Fl\"ache der einzelnen Histogrammbalken. Diese haben die H\"ohe $n_i$
und die Breite $\Delta x$. Die Gesamtfl\"ache $A$ des Histogramms ist
also
\begin{exercise}{gaussianbins.m}{}
\tr{Draw 100 random data from a Gaussian distribution and plot
histograms with different bin sizes of the data.} {Ziehe 100
normalverteilte Zufallszahlen und erzeuge Histogramme mit
unterschiedlichen Klassenbreiten. Was f\"allt auf?}
\end{exercise}
Damit Histogramme von reellen Messwerten trotz unterschiedlicher
Anzahl von Messungen und unterschiedlicher Klassenbreiten
untereinander vergleichbar werden und mit bekannten
Wahrscheinlichkeitsdichtefunktionen verglichen werden k\"onnen,
m\"ussen sie auf das Integral Eins normiert werden
\eqnref{pdfnorm}. Das Integral (nicht die Summe) \"uber das Histogramm
soll Eins ergeben --- denn die Wahrscheinlichkeit, dass irgendeiner
der Messwerte auftritt mu{\ss} Eins sein. Das Integral ist die
Fl\"ache des Histogramms, die sich aus der Fl\"ache der einzelnen
Histogrammbalken zusammen setzt. Die Balken des Histogramms haben die
H\"ohe $n_i$ und die Breite $\Delta x$. Die Gesamtfl\"ache $A$ des
Histogramms ist also
\[ A = \sum_{i=1}^N ( n_i \cdot \Delta x ) = \Delta x \sum_{i=1}^N n_i \]
und das normierte Histogramm hat die H\"ohe
\[ p(x_i) = \frac{n_i}{\Delta x \sum_{i=1}^N n_i} \]
Es muss also nicht nur durch die Summe, sondern auch durch die Breite $\Delta x$ der Klassen
geteilt werden.
\[ p(x_i) = \frac{n_i}{\Delta x \sum_{i=1}^N n_i} \]
Es muss also nicht nur durch die Summe, sondern auch durch die Breite
$\Delta x$ der Klassen geteilt werden (\figref{pdfhistogramfig}).
$p(x_i)$ kann keine Wahrscheinlichkeit sein, da $p(x_i)$ nun eine
Einheit hat --- das Inverse der Einheit der Messgr\"osse $x$. Man
spricht von einer Wahrscheinlichkeitsdichte.
\begin{figure}[t]
\includegraphics[width=1\textwidth]{pdfprobabilities}
\caption{\label{pdfprobabilitiesfig} Wahrscheinlichkeiten bei
einer Wahrscheinlichkeitsdichtefunktion.}
\end{figure}
\begin{exercise}{gaussianpdf.m}{gaussianpdf.out}
\tr{Plot the Gaussian probability density}{Plotte die Gauss'sche Wahrscheinlichkeitsdichte }
\[ p_g(x) = \frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}\]
\tr{What does it mean?}{Was bedeutet die folgende Wahrscheinlichkeit?}
\[ P(x_1 < x < x2) = \int\limits_{x_1}^{x_2} p(x) \, dx \]
\tr{How large is}{Wie gro{\ss} ist}
\[ \int\limits_{-\infty}^{+\infty} p(x) \, dx \; ?\]
\tr{Why?}{Warum?}
\begin{exercise}{gaussianbinsnorm.m}{}
Normiere das Histogramm der vorherigen \"Ubung zu einer Wahrscheinlichkeitsdichte.
\end{exercise}
\section{\tr{Correlations}{Korrelationen}}
\begin{figure}[t]
\begin{figure}[tp]
\includegraphics[width=1\textwidth]{correlation}
\caption{\label{correlationfig} Korrelationen zwischen zwei Datens\"atzen $x$ und $y$.}
\caption{\label{correlationfig} Korrelationen zwischen zwei
Datens\"atzen $x$ und $y$.}
\end{figure}
Bisher haben wir Eigenschaften einer einzelnen Me{\ss}gr\"o{\ss}e
angeschaut. Bei mehreren Me{\ss}gr\"o{\ss}en, kann nach
Abh\"angigkeiten zwischen den beiden Gr\"o{\ss}en gefragt werden. Der
Korrelationskoeffizient
Korrelations\-koeffizient
\[ r_{x,y} = \frac{Cov(x,y)}{\sigma_x \sigma_y} = \frac{\langle
(x-\langle x \rangle)(y-\langle y \rangle) \rangle}{\sqrt{\langle
(x-\langle x \rangle)^2} \rangle \sqrt{\langle (y-\langle y
\rangle)^2} \rangle} \] quantifiziert einfache lineare
Zusammenh\"ange \matlabfun{corr}. Perfekt korrelierte Variablen ergeben einen
\rangle)^2} \rangle} \]
quantifiziert einfache lineare Zusammenh\"ange \matlabfun{corr}. Der
Korrelationskoeffizient ist die Covarianz normiert durch die
Standardabweichungen. Perfekt korrelierte Variablen ergeben einen
Korrelationskoeffizienten von $+1$, antikorrelierte Daten einen
Korrelationskoeffizienten von $-1$ und nicht korrelierte Daten einen
Korrelationskoeffizienten nahe 0 (\figrefb{correlationfig}).
Korrelationskoeffizienten nahe Null (\figrefb{correlationfig}).
\begin{figure}[t]
Nichtlineare Abh\"angigkeiten werden von dem Korrelationskoeffizienten
nur unzureichend oder \"uberhaupt nicht erfasst (\figref{nonlincorrelationfig}).
\begin{figure}[tp]
\includegraphics[width=1\textwidth]{nonlincorrelation}
\caption{\label{nonlincorrelationfig} Nichtlineare Zusammenh\"ange
werden durch den Korrelationskoeffizienten nicht erfasst! Sowohl
werden durch den Korrelationskoeffizienten nicht erfasst. Sowohl
die quadratische Abh\"angigkeit (links) als auch eine
Rauschkorrelation (rechts), bei der die Streuung der $y$-Werte von
$x$ abh\"angen, ergeben Korrelationskeffizienten nahe Null.