Skip to content

Commit

Permalink
Expand Wilcoxon signed rank test description
Browse files Browse the repository at this point in the history
  • Loading branch information
KilnOfTheSecondFlame committed Jan 26, 2019
1 parent 1e193e3 commit 8b3cd08
Showing 1 changed file with 51 additions and 46 deletions.
97 changes: 51 additions & 46 deletions STAT_Python_Referenzkarte.tex
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
\begin{document}
\begin{multicols*}{3}

\subsection*{H�ufig verwendete Bibliotheken}
\subsection*{Häufig verwendete Bibliotheken}
\begin{python}
import matplotlib.pyplot as plt
import scipy.stats as st
Expand All @@ -52,7 +52,7 @@ \subsection*{Numpy Basics}
\pythoninline{np.square(2)}: Quadrat von Zahl berechen \\
\pythoninline{np.abs(-45)}: Absolutwert einer Zahl berechnen \\
\pythoninline{np.round(2.35, x)}: Zahl auf \textit{x} Nachkomastellen runden \\
\pythoninline{np.log(100)}: Nat�rlicher Logarithmus berechnen \\
\pythoninline{np.log(100)}: Natürlicher Logarithmus berechnen \\
\pythoninline{np.log10(100)}: Logarithmus mit Basis 10 berechnen \\
\pythoninline{np.prod(arr)}: Produkt der Zahlen von \textit{arr}

Expand All @@ -77,7 +77,7 @@ \subsection*{Numpy Arrays}
In diesem Beispiel die 2.5\%- und 97.5\%-Quantile \\

\pythoninline{np.sum(arr > x)} \\
Werte gr�sser als \textit{x} in einem Array z�hlen \\
Werte grösser als \textit{x} in einem Array zählen \\

\pythoninline{arr = np.cumsum(arr)} \\
Kumulative Summe des Array \textit{arr} berechnen\\
Expand All @@ -86,7 +86,7 @@ \subsection*{Numpy Arrays}
Mittelwert berechnen und NaN ignorieren \\

\pythoninline{np.tile(arr, x)} \\
Array \textit{x}-Mal wiederholen und aneinander h�ngen \\
Array \textit{x}-Mal wiederholen und aneinander hängen \\

\pythoninline{np.repeat(["M1","M2","M3"], [x1, x2, x3])} \\
Jeder Werte des Array mit Index $i$, $x_i$-mal wiederholen \\
Expand All @@ -97,19 +97,19 @@ \subsection*{Numpy Arrays}
\subsection*{Numpy Zufallszahlen}

\pythoninline{arr = np.random.choice(arr, size=1000)} \\
Neues Array mit der Gr�sse \textit{size} erstellen und zuf�llig \\
mit Werten aus dem �bergebenen Array bef�llen \\
Neues Array mit der Grösse \textit{size} erstellen und zufällig \\
mit Werten aus dem übergebenen Array befüllen \\

\pythoninline{arr = np.arange(1, 25)} \\
\pythoninline{np.random.choice(arr, 24, replace=False)} \\
Zahlen zuf�llig sortieren \\
Zahlen zufällig sortieren \\
In diesem Beispiel die Zahlen 1 bis 24 \\

\pythoninline{np.random.seed(35)} \\
Zufallszahlengenerator mit einem Wert initialisieren \\

\pythoninline{np.random.seed()} \\
Wert des Zufallszahlengenerator wieder l�schen \\
Wert des Zufallszahlengenerator wieder löschen \\

\pythoninline{np.random.normal(size=1000)} \\
\textit{size} Standard-Normalverteilte Zufallszahlen generieren
Expand Down Expand Up @@ -147,11 +147,11 @@ \subsection*{Quantile und Quartilsdifferenz}

\subsection*{Werte einlesen}
\pythoninline{np.loadtxt(r"./data.txt")} \\
Daten f�r ein Array aus einem Textfile laden \\
Daten für ein Array aus einem Textfile laden \\

\pythoninline{frame = pd.read_csv(r"./data.csv", } \\
\pythoninline{ sep=",", index_col=0)} \\
Werte f�r eine Frame aus einem CSV auslesen \\
Werte für eine Frame aus einem CSV auslesen \\

\pythoninline{pd.read_table(r"./gamma.txt", } \\
\pythoninline{ delim_whitespace=True)} \\
Expand All @@ -176,8 +176,8 @@ \subsection*{Pandas DataFrame}
\pythoninline{frame.head(n)}: Erste \textit{n} Zeilen des Frames anzeigen \\
\pythoninline{frame.tail(n)}: Letzte \textit{n} Zeilen des Frames anzeigen \\
\pythoninline{frame.index}: Zeilenbeschriftung des Frames anzeigen \\
\pythoninline{frame.drop(x, 0)}: Zeile mit dem Index \textit{x} l�schen \\
\pythoninline{frame.drop(x, 1)}: Spalte \textit{x} l�schen \\
\pythoninline{frame.drop(x, 0)}: Zeile mit dem Index \textit{x} löschen \\
\pythoninline{frame.drop(x, 1)}: Spalte \textit{x} löschen \\
\pythoninline{frame.corr()}: Korrelationsmatrix berechnen

\subsection*{Umgang mit DataFrame}
Expand All @@ -188,25 +188,25 @@ \subsection*{Umgang mit DataFrame}
Auf einen Bereiche in einem DataFrame zugreifen \\

\pythoninline{frame.loc[["mar","mai"],["Basel","Zuerich"]]} \\
Auf ausgew�hlt Elemente in einem DataFrame zugreifen \\
Auf ausgewählt Elemente in einem DataFrame zugreifen \\

\pythoninline{frame.sort_values(by='Luzern', ascending=False)} \\
Daten im Frame nach einer Spalte sortieren \\

\pythoninline{frame.nsmallest(n, 'Luzern')} \\
\pythoninline{frame.nlargest(n, 'Luzern')} \\
Daten im Frame nach einer Spalte sortieren und dann \\
\textit{n} Zeilen mit gr�sstem oder kleinstem Werte zur�ckgeben \\
\textit{n} Zeilen mit grösstem oder kleinstem Werte zurückgeben \\

\pythoninline{filtered = frame[frame['Luzern'] == 0]} \\
Daten anhand des Wertes einer Spalte filtern
Daten anhand des Wertes einer Spalte filtern \\

\pythoninline{mean = frame.mean()['Luzern']} \\
\pythoninline{frame.loc[frame['Luzern'] < mean, 2:5]} \\
Daten anhand des Wertes einer Spalte filtern und die \\
Zeilen einschr�nken (in diesem Beispiel 2 bis 5)
Zeilen einschränken (in diesem Beispiel 2 bis 5)

\begin{tcolorbox}[boxrule=1pt,colback=black!4!white, title=\underline{\textbf{DataFrame f�r die n�chsten Befehle}},colframe=black!4!white,coltitle=black]
\begin{tcolorbox}[boxrule=1pt,colback=black!4!white, title=\underline{\textbf{DataFrame für die nächsten Befehle}},colframe=black!4!white,coltitle=black]
\begin{python}
df=DataFrame({
"Behandlung": np.repeat(
Expand Down Expand Up @@ -236,8 +236,8 @@ \subsection*{Matplotlib PyPlot}
\pythoninline{plt.subplot(nrows=2, ncols=3, index=4)} \\
\pythoninline{plt.subplot(234)} \\
Sub-Plot mit 2 Zeilen und 3 Spalten erstellen und den \\
n�chsten Plot an der Position 4 einf�gen. Die Position wird \\
von links nach rechts und dann von oben nach unten gez�hlt
nächsten Plot an der Position 4 einfügen. Die Position wird \\
von links nach rechts und dann von oben nach unten gezählt

\subsection*{Plots erstellen}
\pythoninline{series.hist(bins=[0, 1, 10, 11, 12])} \\
Expand All @@ -247,7 +247,7 @@ \subsection*{Plots erstellen}
Histogramm erstellen und Balken mit Farbe umrahmen \\

\pythoninline{series.plot(kind="hist", density=True, ...)}
Normiertes Histogramm erstellen, bzw. Fl�che des Histogramms auf eins normieren\\
Normiertes Histogramm erstellen, bzw. Fläche des Histogramms auf eins normieren\\

\pythoninline{series.plot(kind="hist", bins=20, ...)} \\
Anzahl Klassen des Histogramm manuell festlegen \\
Expand All @@ -263,8 +263,8 @@ \subsection*{Plots erstellen}
Daten gruppieren und durch einen Boxplot anzeigen

\pythoninline{frame.plot(kind='scatter', x='wine', y='mor')} \\
Streudiagramm mit zwei ausgew�hlten Achsen erstellen \\
Parameter \textit{x} und \textit{y} m�ssen auf Indizes des \textit{frame} verweisen \\
Streudiagramm mit zwei ausgewählten Achsen erstellen \\
Parameter \textit{x} und \textit{y} müssen auf Indizes des \textit{frame} verweisen \\

\pythoninline{b, a = np.polyfit(x_series, y_series, deg=1)} \\
\pythoninline{x = np.linspace(x_series.min(), x_series.max())} \\
Expand All @@ -285,7 +285,7 @@ \subsection*{Plots erstellen}

\subsection*{Mehrere DataFrame Plots in einem MatPlotLib}

\begin{tcolorbox}[boxrule=1pt,colback=black!4!white, title=\underline{\textbf{Struktur der Daten f�r die n�chsten Befehle}},colframe=black!4!white,coltitle=black]
\begin{tcolorbox}[boxrule=1pt,colback=black!4!white, title=\underline{\textbf{Struktur der Daten für die nächsten Befehle}},colframe=black!4!white,coltitle=black]
\begin{verbatim}
"high" "medium" "low"
0.71 2.2 2.25
Expand Down Expand Up @@ -318,7 +318,7 @@ \subsubsection*{Uniformverteilung}

\pythoninline{st.uniform.cdf(x=1, loc=4, scale=5)} \\
$P(X \leq 1)$ falls $X \sim Unif(4, 9)$ \\
\colorbox{red!20!white}{\pythoninline{scale} ist nicht Endwert, sondern L�nge des Intervall}\\
\colorbox{red!20!white}{\pythoninline{scale} ist nicht Endwert, sondern Länge des Intervall}\\

\pythoninline{st.uniform.pdf(x=1, loc=0, scale=7)} \\
Dichte an der Stelle \textit{x} = 1 falls $X \sim Unif(0, 7)$
Expand Down Expand Up @@ -356,7 +356,7 @@ \subsubsection*{T Verteilung}

\pythoninline{st.t.cdf(x=168, df=149, loc=164, } \\
\pythoninline{ scale=10/np.sqrt(150))} \\
$P[\overline{X}_{150} \leq 168]$ falls $u = 164$, $\hat{o} = 10$ und $T \sim t_{149}$ (150 Messungen - 1 gesch�tzter Parameter) \\
$P[\overline{X}_{150} \leq 168]$ falls $u = 164$, $\hat{o} = 10$ und $T \sim t_{149}$ (150 Messungen - 1 geschätzter Parameter) \\

\pythoninline{st.t.ppf(0.05, df=v)} \\
Quantile einer T-Verteilung mit \textit{v} Freiheitsgrade
Expand Down Expand Up @@ -388,12 +388,12 @@ \subsection*{Integral berechnen}
\pythoninline{ans, _ = quad(f, 0, 60)} \\
In diesem Fall das Integral: $\int_{0}^{60} x * (15 - \frac{x}{4})$

\subsection*{Gleichung l�sen}
\subsection*{Gleichung lösen}
\pythoninline{from sympy.solvers import solve} \\
\pythoninline{from sympy import Symbol} \\
\pythoninline{x = Symbol('x')} \\
\pythoninline{solve(x**2/9000 * (15/2 - x/12) - 0.9, x)} \\
L�st die Gleichung: $\frac{x^2}{9000} (\frac{15}{2} - \frac{x}{12}) - 0.9 = 0$
Löst die Gleichung: $\frac{x^2}{9000} (\frac{15}{2} - \frac{x}{12}) - 0.9 = 0$

\subsection*{Vertrauensintervall}
\pythoninline{st.t.interval(alpha=0.95, df=12, loc=80.02, } \\
Expand All @@ -419,8 +419,13 @@ \subsection*{Statistische Tests}
Angabe der Alternativhypothese. Der Standardwert ist 'two-sided'.\\

\subsubsection*{Wilcoxon-Test}
\pythoninline{st.wilcoxon(x_arr,y_arr, zero_method="wilcox",}\\
\pythoninline{ correction=True)}\\
Berechnet den Wilcoxon Vorzeichenrangtest der Differenz zwischen den beiden Serien \pythoninline{x_arr} und \pythoninline{y_arr}\\

\pythoninline{st.wilcoxon(arr, zero_method="wilcox",}\\
\pythoninline{ correction=True)}
Berechnet den Wilcoxon Vorzeichenrangtest, erwartet das \pythoninline{arr} schon die Differenz zweier Serien beinhaltet
\vspace{0.5em}\\
\pythoninline{zero_method} : \{"pratt", "wilcox", "zsplit"\}, \textbf{optional}\\
"wilcox": Wilcox treatment: discards all zero-differences
Expand All @@ -431,13 +436,13 @@ \subsubsection*{Wilcoxon-Test}

\subsubsection*{t-Test}
\pythoninline{st.ttest_rel(series1, series2)} \\
Statistischer Test f�r gepaarte Stichproben \\
Statistischer Test für gepaarte Stichproben \\

\pythoninline{st.ttest_ind(series1, series2, equal_var=False)} \\
Statistischer Test f�r ungepaarte Stichproben \\
Statistischer Test für ungepaarte Stichproben \\

\pythoninline{st.ttest_1samp(series, 1).pvalue} \\
P-Wert eines T-Tests f�r eine Series berechnen \\
P-Wert eines T-Tests für eine Series berechnen \\
mit der Nullhypothese $u=1$ \\
\colorbox{red!20!white}{\pythoninline{pvalue} ist der P-Wert des zweiseitigen Tests}\\

Expand All @@ -453,7 +458,7 @@ \subsection*{Varianzanalyse}
\pythoninline{from statsmodels.stats.anova import anova_lm} \\
\pythoninline{from statsmodels.formula.api import ols} \\
\pythoninline{from patsy.contrasts import Sum} \\
Ben�tigte Bibliotheksfunktionen f�r Varianzanalysen
Benötigte Bibliotheksfunktionen für Varianzanalysen

\pythoninline{sns.stripplot(x="...", y="...", data=frame)} \\
Varianz-Analyse mit Stripcharts zwischen \textit{x} und \textit{y} \\
Expand All @@ -469,11 +474,11 @@ \subsection*{Varianzanalyse}
\pythoninline{sns.boxplot(series.index.month, series)} \\
\pythoninline{sns.boxplot(series.index.quarter, series)} \\
\pythoninline{sns.boxplot(series.index.year, series)} \\
Boxplot f�r gruppierte Daten nach Wochentag, Monat, \\
Boxplot für gruppierte Daten nach Wochentag, Monat, \\
Quartal, Jahr, ... anzeigen \\
\colorbox{red!20!white}{\pythoninline{series} muss ein DatetimeIndex haben}\\

\begin{tcolorbox}[boxrule=1pt,colback=black!4!white, title=\underline{\textbf{DataFrame f�r die n�chsten Befehle}},colframe=black!4!white,coltitle=black]
\begin{tcolorbox}[boxrule=1pt,colback=black!4!white, title=\underline{\textbf{DataFrame für die nächsten Befehle}},colframe=black!4!white,coltitle=black]
\begin{python}
frame = pd.DataFrame({
"Treatment": np.repeat(["Vak","CO2"], 3),
Expand All @@ -485,16 +490,16 @@ \subsection*{Varianzanalyse}
\pythoninline{fit = ols("steak_id~Treatment", data=frame).fit()} \\
\pythoninline{fit.summary()} \\
Gruppenmittelmodell berechnen zwischen der Id des \\
Steaks und der ausgef�hrten Behandlung \\
Steaks und der ausgeführten Behandlung \\

\pythoninline{fit_pred = fit.get_prediction()} \\
\pythoninline{fit_pred.conf_int()} \\
Vertrauensintervalle f�r Gruppenmittelwerte \\
Vertrauensintervalle für Gruppenmittelwerte \\

\pythoninline{anova_lm(fit)} \\
Anova Tabelle berechnen

\begin{tcolorbox}[boxrule=1pt,colback=black!4!white, title=\underline{\textbf{DataFrame f�r die n�chsten Befehle}},colframe=black!4!white,coltitle=black]
\begin{tcolorbox}[boxrule=1pt,colback=black!4!white, title=\underline{\textbf{DataFrame für die nächsten Befehle}},colframe=black!4!white,coltitle=black]
\begin{python}
frame = pd.DataFrame({
"Batch": np.tile(["1", "2", "3"], 4),
Expand All @@ -507,16 +512,16 @@ \subsection*{Varianzanalyse}
\pythoninline{interaction_plot(x=frame["Batch"], }\\
\pythoninline{ trace=frame["Methode"], response=frame["Y"])} \\
Interaktionsplot erstellen \\
- entlang der y-Achse die Zielgr�sse (response) \\
- entlang der y-Achse die Zielgrösse (response) \\
- entlang der x-Achse der durch x festgelegte Faktor \\
- f�r jede Stufe in trace wird dann eine Linie gezogen \\
- für jede Stufe in trace wird dann eine Linie gezogen \\

\pythoninline{formula = "Y ~ C(Methode, Sum) + C(Batch, Sum)"} \\
\pythoninline{fit = ols(formula, data=frame).fit()} \\
Zweiweg-Varianzanalyse mit Bl�cken zwischen den \\
Zweiweg-Varianzanalyse mit Blöcken zwischen den \\
Datenspalten \textit{Methode} und \textit{Batch} \\

\begin{tcolorbox}[boxrule=1pt,colback=black!4!white, title=\underline{\textbf{DataFrame f�r die n�chsten Befehle}},colframe=black!4!white,coltitle=black]
\begin{tcolorbox}[boxrule=1pt,colback=black!4!white, title=\underline{\textbf{DataFrame für die nächsten Befehle}},colframe=black!4!white,coltitle=black]
\begin{python}
frame = pd.DataFrame({
"Konz": np.repeat(["A", "B", "C","D"], 6),
Expand All @@ -538,9 +543,9 @@ \subsection*{Varianzanalyse}
\subsection*{Zeitreihen}
\pythoninline{from statsmodels.tsa.seasonal } \\
\pythoninline{ import seasonal_decompose} \\
Ben�tigte Bibliotheksfunktionen f�r Zeitreihen \\
Benötigte Bibliotheksfunktionen für Zeitreihen \\

\begin{tcolorbox}[boxrule=1pt,colback=black!4!white, title=\underline{\textbf{DataFrame f�r die n�chsten Befehle}},colframe=black!4!white,coltitle=black]
\begin{tcolorbox}[boxrule=1pt,colback=black!4!white, title=\underline{\textbf{DataFrame für die nächsten Befehle}},colframe=black!4!white,coltitle=black]
\begin{verbatim}
TravelDate Passengers
0 1/1/1949 112
Expand All @@ -567,12 +572,12 @@ \subsection*{Zeitreihen}

\pythoninline{frame["Passengers"].rolling(window=12).mean()} \\
Bewegendes Mittel (moving average) berechnen \\
bei einer Fenstergr�sse von 12 \\
bei einer Fenstergrösse von 12 \\

\pythoninline{seasonal_decompose(frame["Passengers"], } \\
\pythoninline{ model="additive", freq=12).plot()} \\
Zerlegen einer Zeitreihe in die verschiedenen Faktoren \\
bei einer Fenstergr�sse von 12 \\
bei einer Fenstergrösse von 12 \\

\pythoninline{seasonal_decompose(np.log(frame["Passengers"]),} \\
\pythoninline{ model="add").resid.plot()} \\
Expand All @@ -588,7 +593,7 @@ \subsection*{Zeitreihen}

\pythoninline{frame.resample("A").mean()} \\
Zeitreihe so umformen, dass jede Zeile den \\
Jahresdurchschnitt eines Jahres enth�lt
Jahresdurchschnitt eines Jahres enthält

\subsection*{Allgemein}
\pythoninline{from scipy.special import comb} \\
Expand All @@ -601,7 +606,7 @@ \subsection*{Allgemein}

\pythoninline{import matplotlib} \\
\pythoninline{matplotlib.rcParams['figure.dpi'] = 150} \\
Plot gr�sser machen (f�r High-DPI-Screens) \\
Plot grösser machen (für High-DPI-Screens) \\

\pythoninline{%matplotlib inline} \\
Plots in Jupyter-Notebook direkt anzeigen
Expand Down

0 comments on commit 8b3cd08

Please sign in to comment.