From c7a26c735fe4b48d65b74b5e6909e50e855caa99 Mon Sep 17 00:00:00 2001
From: jacquelinegoebl <jacqueline.goebl@gmx.de>
Date: Fri, 16 Jul 2021 12:11:28 +0200
Subject: [PATCH] Upload files to ''

---
 statisitic_functions.py | 79 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 79 insertions(+)
 create mode 100644 statisitic_functions.py

diff --git a/statisitic_functions.py b/statisitic_functions.py
new file mode 100644
index 0000000..5e4a867
--- /dev/null
+++ b/statisitic_functions.py
@@ -0,0 +1,79 @@
+import numpy as np
+import matplotlib as mpl
+
+
+def cohen_d(x, y):
+    """
+    Calculates the effect size Cohens d' between the two data x and y
+    :param x: data array 1
+    :param y: data array 2
+    :return: float, d value of the effect size
+    """
+    nx = len(x)
+    ny = len(y)
+    dof = nx + ny - 2
+    d = np.abs((np.mean(x) - np.mean(y)) / (((nx - 1) / dof) * (np.std(x) ** 2) + ((ny - 1) / dof) * (np.std(y) ** 2)))
+    return d
+
+
+def significance_bar(ax, p, d, x0, x1, y, **kwargs):
+    """
+    A horizontal bar with asterisks indicating significance level.
+
+    Plot a horizontal bar from x0 to x1 at height y
+    for indicating significance. On top of the bar plot
+    asterisks according to the significance value p are drawn.
+    If p > 0.05 nothing is plotted.
+    p<0.001: '***', p<0.01: '**', p<0.05: '*'.
+
+    Note: call this function AFTER ylim has been set!
+
+    Parameters
+    ----------
+    ax: matplotlib axes
+        Axes to which the inset is added.
+    p: float
+        Significance level.
+    x0: float
+        x-coordinate of starting point of significance bar in data units.
+    x1: float
+        x-coordinate of ending point of significance bar in data units.
+    y: float
+        y-coordinate of significance bar in data units.
+    kwargs: key-word arguments
+        Passed on to `ax.text()` used to print the asterisks.
+    """
+    if d is not None:
+        if d > 0.0:
+            ps = '%.2f' %(d)
+        else:
+            return
+
+    elif p is not None:
+
+        # set label:
+        if p < 0.001:
+            ps = '***'
+        elif p < 0.01:
+            ps = '**'
+        elif p < 0.05:
+            ps = '*'
+        else:
+            return
+    # ax dimensions:
+    pixely = np.abs(np.diff(ax.get_window_extent().get_points()[:, 1]))[0]
+    unity = np.abs(np.diff(ax.get_ylim()))[0]
+    dyu = unity / pixely
+    fs = mpl.rcParams['font.size']
+    if 'fontsize' in kwargs and isinstance(kwargs['fontsize'], (float, int)):
+        fs = kwargs['fontsize']
+    dy = 0.3 * fs * dyu
+    lw = 1.0
+    lh = ax.plot([x0, x0, x1, x1], [y - dy, y, y, y - dy], color='black', lw=lw,
+                 solid_capstyle='butt', solid_joinstyle='miter', clip_on=False)
+    # get y position of line in figure pixel coordinates:
+    ly = np.array(lh[0].get_window_extent(ax.get_figure().canvas.get_renderer()))[1, 1]
+    th = ax.text(0.5 * (x0 + x1), y, ps, ha='center', va='bottom', **kwargs)
+    ty = np.array(th.get_window_extent(ax.get_figure().canvas.get_renderer()))[0, 1]
+    dty = ly + 5 * lw - 0.4 * fs - ty
+    th.set_position((0.5 * (x0 + x1), y + dty * dyu))
\ No newline at end of file