Upload files to ''
This commit is contained in:
		
							parent
							
								
									f464823801
								
							
						
					
					
						commit
						c7a26c735f
					
				
							
								
								
									
										79
									
								
								statisitic_functions.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								statisitic_functions.py
									
									
									
									
									
										Normal file
									
								
							@ -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))
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user