From c750b5a2e0b100c5f445acf1582f799c85b43c76 Mon Sep 17 00:00:00 2001 From: Donne Martin Date: Sat, 4 Jul 2015 08:24:34 -0400 Subject: [PATCH] Added to statistical inference section with scipy: effect size notebook --- scipy/effect_size.ipynb | 799 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 799 insertions(+) create mode 100644 scipy/effect_size.ipynb diff --git a/scipy/effect_size.ipynb b/scipy/effect_size.ipynb new file mode 100644 index 0000000..2d1d032 --- /dev/null +++ b/scipy/effect_size.ipynb @@ -0,0 +1,799 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Effect Size\n", + "======================\n", + "\n", + "Credits: Forked from [CompStats](https://github.com/AllenDowney/CompStats) by Allen Downey. License: [Creative Commons Attribution 4.0 International](http://creativecommons.org/licenses/by/4.0/)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from __future__ import print_function, division\n", + "\n", + "import numpy\n", + "import scipy.stats\n", + "\n", + "import matplotlib.pyplot as pyplot\n", + "\n", + "from IPython.html.widgets import interact, fixed\n", + "from IPython.html import widgets\n", + "\n", + "# seed the random number generator so we all get the same results\n", + "numpy.random.seed(17)\n", + "\n", + "# some nice colors from http://colorbrewer2.org/\n", + "COLOR1 = '#7fc97f'\n", + "COLOR2 = '#beaed4'\n", + "COLOR3 = '#fdc086'\n", + "COLOR4 = '#ffff99'\n", + "COLOR5 = '#386cb0'\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To explore statistics that quantify effect size, we'll look at the difference in height between men and women. I used data from the Behavioral Risk Factor Surveillance System (BRFSS) to estimate the mean and standard deviation of height in cm for adult women and men in the U.S.\n", + "\n", + "I'll use `scipy.stats.norm` to represent the distributions. The result is an `rv` object (which stands for random variable)." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mu1, sig1 = 178, 7.7\n", + "male_height = scipy.stats.norm(mu1, sig1)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mu2, sig2 = 163, 7.3\n", + "female_height = scipy.stats.norm(mu2, sig2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following function evaluates the normal (Gaussian) probability density function (PDF) within 4 standard deviations of the mean. It takes and rv object and returns a pair of NumPy arrays." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def eval_pdf(rv, num=4):\n", + " mean, std = rv.mean(), rv.std()\n", + " xs = numpy.linspace(mean - num*std, mean + num*std, 100)\n", + " ys = rv.pdf(xs)\n", + " return xs, ys" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's what the two distributions look like." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "xs, ys = eval_pdf(male_height)\n", + "pyplot.plot(xs, ys, label='male', linewidth=4, color=COLOR2)\n", + "\n", + "xs, ys = eval_pdf(female_height)\n", + "pyplot.plot(xs, ys, label='female', linewidth=4, color=COLOR3)\n", + "pyplot.xlabel('height (cm)')\n", + "None" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's assume for now that those are the true distributions for the population. Of course, in real life we never observe the true population distribution. We generally have to work with a random sample.\n", + "\n", + "I'll use `rvs` to generate random samples from the population distributions. Note that these are totally random, totally representative samples, with no measurement error!" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "male_sample = male_height.rvs(1000)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "female_sample = female_height.rvs(1000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Both samples are NumPy arrays. Now we can compute sample statistics like the mean and standard deviation." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(178.16511665818112, 7.8419961712899502)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mean1, std1 = male_sample.mean(), male_sample.std()\n", + "mean1, std1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The sample mean is close to the population mean, but not exact, as expected." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(163.48610226651135, 7.382384919896662)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mean2, std2 = female_sample.mean(), female_sample.std()\n", + "mean2, std2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And the results are similar for the female sample.\n", + "\n", + "Now, there are many ways to describe the magnitude of the difference between these distributions. An obvious one is the difference in the means:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "14.679014391669767" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "difference_in_means = male_sample.mean() - female_sample.mean()\n", + "difference_in_means # in cm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On average, men are 14--15 centimeters taller. For some applications, that would be a good way to describe the difference, but there are a few problems:\n", + "\n", + "* Without knowing more about the distributions (like the standard deviations) it's hard to interpret whether a difference like 15 cm is a lot or not.\n", + "\n", + "* The magnitude of the difference depends on the units of measure, making it hard to compare across different studies.\n", + "\n", + "There are a number of ways to quantify the difference between distributions. A simple option is to express the difference as a percentage of the mean.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "8.2389946286916569" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exercise: what is the relative difference in means, expressed as a percentage?\n", + "\n", + "relative_difference = difference_in_means / male_sample.mean()\n", + "relative_difference * 100 # percent" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But a problem with relative differences is that you have to choose which mean to express them relative to." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "8.9787536605040401" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "relative_difference = difference_in_means / female_sample.mean()\n", + "relative_difference * 100 # percent" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Part Two\n", + "========\n", + "\n", + "An alternative way to express the difference between distributions is to see how much they overlap. To define overlap, we choose a threshold between the two means. The simple threshold is the midpoint between the means:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "170.82560946234622" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "simple_thresh = (mean1 + mean2) / 2\n", + "simple_thresh" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A better, but slightly more complicated threshold is the place where the PDFs cross." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "170.6040359174722" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "thresh = (std1 * mean2 + std2 * mean1) / (std1 + std2)\n", + "thresh" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example, there's not much difference between the two thresholds.\n", + "\n", + "Now we can count how many men are below the threshold:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "164" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "male_below_thresh = sum(male_sample < thresh)\n", + "male_below_thresh" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And how many women are above it:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "174" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "female_above_thresh = sum(female_sample > thresh)\n", + "female_above_thresh" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The \"overlap\" is the total area under the curves that ends up on the wrong side of the threshold." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.33799999999999997" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "overlap = male_below_thresh / len(male_sample) + female_above_thresh / len(female_sample)\n", + "overlap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Or in more practical terms, you might report the fraction of people who would be misclassified if you tried to use height to guess sex:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.16899999999999998" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "misclassification_rate = overlap / 2\n", + "misclassification_rate" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Another way to quantify the difference between distributions is what's called \"probability of superiority\", which is a problematic term, but in this context it's the probability that a randomly-chosen man is taller than a randomly-chosen woman." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.91100000000000003" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exercise: suppose I choose a man and a woman at random.\n", + "# What is the probability that the man is taller?\n", + "sum(x > y for x, y in zip(male_sample, female_sample)) / len(male_sample)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Overlap (or misclassification rate) and \"probability of superiority\" have two good properties:\n", + "\n", + "* As probabilities, they don't depend on units of measure, so they are comparable between studies.\n", + "\n", + "* They are expressed in operational terms, so a reader has a sense of what practical effect the difference makes.\n", + "\n", + "There is one other common way to express the difference between distributions. Cohen's $d$ is the difference in means, standardized by dividing by the standard deviation. Here's a function that computes it:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def CohenEffectSize(group1, group2):\n", + " \"\"\"Compute Cohen's d.\n", + "\n", + " group1: Series or NumPy array\n", + " group2: Series or NumPy array\n", + "\n", + " returns: float\n", + " \"\"\"\n", + " diff = group1.mean() - group2.mean()\n", + "\n", + " n1, n2 = len(group1), len(group2)\n", + " var1 = group1.var()\n", + " var2 = group2.var()\n", + "\n", + " pooled_var = (n1 * var1 + n2 * var2) / (n1 + n2)\n", + " d = diff / numpy.sqrt(pooled_var)\n", + " return d" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Computing the denominator is a little complicated; in fact, people have proposed several ways to do it. This implementation uses the \"pooled standard deviation\", which is a weighted average of the standard deviations of the two groups.\n", + "\n", + "And here's the result for the difference in height between men and women." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1.9274780043619493" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "CohenEffectSize(male_sample, female_sample)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Most people don't have a good sense of how big $d=1.9$ is, so let's make a visualization to get calibrated.\n", + "\n", + "Here's a function that encapsulates the code we already saw for computing overlap and probability of superiority." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def overlap_superiority(control, treatment, n=1000):\n", + " \"\"\"Estimates overlap and superiority based on a sample.\n", + " \n", + " control: scipy.stats rv object\n", + " treatment: scipy.stats rv object\n", + " n: sample size\n", + " \"\"\"\n", + " control_sample = control.rvs(n)\n", + " treatment_sample = treatment.rvs(n)\n", + " thresh = (control.mean() + treatment.mean()) / 2\n", + " \n", + " control_above = sum(control_sample > thresh)\n", + " treatment_below = sum(treatment_sample < thresh)\n", + " overlap = (control_above + treatment_below) / n\n", + " \n", + " superiority = sum(x > y for x, y in zip(treatment_sample, control_sample)) / n\n", + " return overlap, superiority" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's the function that takes Cohen's $d$, plots normal distributions with the given effect size, and prints their overlap and superiority." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def plot_pdfs(cohen_d=2):\n", + " \"\"\"Plot PDFs for distributions that differ by some number of stds.\n", + " \n", + " cohen_d: number of standard deviations between the means\n", + " \"\"\"\n", + " control = scipy.stats.norm(0, 1)\n", + " treatment = scipy.stats.norm(cohen_d, 1)\n", + " xs, ys = eval_pdf(control)\n", + " pyplot.fill_between(xs, ys, label='control', color=COLOR3, alpha=0.7)\n", + "\n", + " xs, ys = eval_pdf(treatment)\n", + " pyplot.fill_between(xs, ys, label='treatment', color=COLOR2, alpha=0.7)\n", + " \n", + " o, s = overlap_superiority(control, treatment)\n", + " print('overlap', o)\n", + " print('superiority', s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's an example that demonstrates the function:" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "overlap 0.278\n", + "superiority 0.932\n" + ] + }, + { + "data": { + "image/png": "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\nUkoplRT/H76IEajXdkmlAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_pdfs(2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And an interactive widget you can use to visualize what different values of $d$ mean:" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "overlap 0.305\n", + "superiority 0.931\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAEACAYAAAC57G0KAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XuMZPdV4PHv73dvVfe8x+/HeJyJHAecQOJkiTEKgYaw\nyIkWzC4rBS8IQVDWu8I8tGhlopXIWEirjXYRLLLImsVCLJvFWtgQAkpwEqCXwOZhx44dx68Zz7N7\nenr6Ue931T37x+9WT02nu6uqu6ruvXXPR2p1Vde9Xb+5U3X6V+eee36glFJKKaWUUkoppZRSSiml\nlFJKKaWUUkoplVoPAK8Cp4BHd9juPUAb+Mld7KuUUmrCPOA0cALIAN8A7tlmu78F/oqrAX7QfZVS\nSo2B7fP4fbggfQ5oAU8BD26x3S8Bfwas7GJfpZRSY9AvwB8DLvbcXwh/tnmbB4FPhPdliH2VUkqN\nSb8AL30eB/gd4NfDbU34Nei+SimlxsTv8/gicLzn/nHcTLzXP8GlXwBuBD6AS8kMsi933XWXvPHG\nG0MMWSmlFPAG8JadNjA7PYj7A/Aa8H7gEvA14CHglW22/0PgL4FPDbGviOhkH+DkyZOcPHky6mFM\nXJC/COf+HjpN8PeB9Xjs9/43H/u3/xLaVcDCbfdibn0HxvR7ySZbbqXM2VdWCDoBftbDWsMn/uC3\n+Tcf/lVazQ7GGI7ddT23Hj8a9VAjkdb3yFbC98KOb4h+M/g28AjwNK4q5klcgH44fPyJXeyr1Iag\neAnO/A3YDGQPXvugsZA5CEEHLn3d5QBve2ck45yE/GqFN15axvMt2dlr35rGGrKzPkEgXDy1hjFw\nyx3pDPJqcP0CPMDnwq9e2wX2nx9gX6UAkPIVOP0FF9y97PYbWg/8/XDp6wReFnvz9FXbFnPVjeDu\n+dufGrPWkJnxuHBqDetZbrrt8ARHqZKm30lWNUFzc3NRD2FipFFCTn0ejLdlcP/B97z92h90g/zF\nrxDkL0xolJNRqzQ59eJljGe2DO7f8+77r7lvrSGTsZx/dYXCWmVSw4yFNL1HRiEOCU3NwaeMiCCn\n/hrKy5A5MNzOnSYYg3n7v8D4s+MZ4ASJCK8+d4lKqUF2xhtq33arg/Us3/29d+4461fTaZAcvL4q\n1MTJ+htQWnIz8mF5WWg3kcVnRz+wCKxcKlEu1slkh38r+hmPdrPD4tn1MYxMTQMN8GqipFWDi18B\nbxZ2WxGT2Qerp5DS5dEObsKa9TYXT6+SydhdVwdlsh5XFgqUi/URj05NAw3waqJk4WvQaYOX2f0v\nMRasj5z7EhJ0Rje4CTt/ahUJBOvt/m1orMFYw7lXrhAEmupU19IAryZGajlYPwuZXaRmNvNnoVl2\n6Z4EqhTr5FcrZIbMu28lk/WoV1vkVsojGJmaJhrg1cTI0jfCZhYjOrfvZeHSc4mcxS+ezWEMI7tw\ny/qWxTPrOotX19AAryZCannInd/didXteFlo1ZDc2dH9zgmolhoU1qtksnufvXf5vqVRb5Nf1Vm8\nukoDvJoIufyCuzHqVgNeFha/jkgw2t87Rm72bkbedsHzDItncmjZserSAK/GTuoFyJ111S+j5mWh\nVUXWz43+d49BtdygsFbZVVlkP55vqdda5FfTdfGT2p4GeDV2svytsJn0mF5uNgNLzyVi5nr5fB4Y\nXe69lzEGzzNcOquzeOVogFdjJZ0mrJ92VS/j4mWhUYbKlfE9xwi0mh3WVyojzb1v5vmWWqVJtdQc\n23Oo5NAAr8ZKcudAAtdLZlzC2bBciXez0vXlMohg7Pg6hBhjwMDKpcLYnkMlhwZ4NTYiAssvgRmk\naekeZfZB/ry7UjaGRITli/mJ9IzxMx5ry2XareSVj6rR0gCvxqe6CvXizq2AR8VYkADJnRn/c+1C\nOV+n2WhPJMBba5BAyK3oyda00wCvxkZWXh3thU39eFlY/lYsTzBeWSxMtHer9QyXL+RjeSzU5GiA\nV2Mh7Qasn3FL8E2Kl4VmFcrxakLWarTJrYz2wqZ+PN/SqLWoFBsTe04VPxrg1VhI/oI7uTqu0sid\nnnv19Yk/507WVyqATHQ92e5zrS6VJvacKn40wKvxWH0N7AROrm6W2Qe580inNfnn3sbqpSLWm/za\nOn7WY/1KmSBIzlW+arQGCfAPAK8Cp4BHt3j8QeAF4Hng68AP9zx2DngxfOxrexmoSg5pVqCyAt7M\n5J/cWCBAiouTf+4t1KtNapVmJCsuWWsIAqGU017xadVviuUBjwM/AiwCzwCfAXoLjr8I/EV4+7uB\nPwfeEt4XYA7QJWdSRPLn3Y0JpiSuZWDtFFx3IqLnvyq3UnEX8UZ2LITVyyWO3DDCJm8qMfpNK+4D\nTuNm4i3gKdyMvVdvLdZBYHXT43FY91VN0uprrn1AVPxZKC66E70REhFWLpXwI1wvNZPxyK9U6LQ1\nTZNG/V55x4CLPfcXwp9t9hO4Wf3ngF/u+bngZvjPAh/Z/TBVUki9ALX8ZGrft2MsiCCFi/23HaNa\nuUmz3ook/95lrEFEKKxXIxuDik6/AD9oEe2ngXuAHwP+uOfn7wXeBXwA+EXgfcMOUCWL5M65G5Gl\nJELWh4iradavlCNOzzjGGq2mSal+OfhF4HjP/eO4Wfx2vhT+zhuANWAp/PkKLjd/X7jNNU6ePLlx\ne25ujrm5uT7DUnEkIi6oRnFydTNvBspXkFYVM4olAockIqwulfAz0Req+RlLMVej3ergZyZXi69G\na35+nvn5+aH26Te18IHXgPcDl3CVMA9x7UnWu4AzuNn+u4E/DX+2H3eStgQcAD4PPBZ+7yV6td10\nkFoOefkv3JqrUc/gAZoVeNN7sTfePfGnrhQbvPLcAtmZCEpFt9BsdHjzPTdxwy2Hoh6KGpHwk+GO\nb7R+r7428AjwNC5YP4kL7g+Hjz8B/CTws7iTsGXgp8LHbgU+1fM8n+Tbg7uaIlJYACQewR1cB8v1\nNyCCAJ9fqxCneYsxkLtS1gCfMnF4J+oMfkoEL3/azZqjPMHaSwTaVcw7/xVmgmMSEV76ykXa7U4k\n9e9bkUBotwLufd8JPC8eY1J7M8gMXv+n1UhIs+KqZ6Isj9ys+0miuLTzdiPWqLVoRFw9s5mxBsF1\ntVTpoQFejYQUFyfbOXJgBsmdnegz5tdcSWLU1TPfRoT1lXLUo1ATpAFejcb6G2BiWKHhz0LhAhJM\nbvGL9eVyrGbvXX7WI3elQhBoSjQtNMCrPZN2A8rL8SiP3Cy86Iny8kSertloUy01YpN77+V60wRU\nS9pCOC3i9ypUiSPFS+5G3FISG4Kr/XHGrLge0/RMl0BuVVd6SgsN8GrvcmeJR0HWNrxZyJ2dyOpG\n68vlsS6qvVdexrJ+uawrPaWEBni1JyIBFBfimZ7psj50mlDLjfVpOp2AUr4ei6tXt2OtodVs06jF\np1++Gp/4vhJVMlRW3cpNNoYnWHuJIKVLY32KSrERi94zOzHGlUsWc7Woh6ImQAO82hMpLhCrSza3\nYzNhKml88quVRKQ+rDXkrmgePg00wKu9yZ2Lz5WrO/GyUFkbW494ESG3Uol1eqbLz1hKhbr2iE+B\n+L8aVWxJswL1QryuXt2OMe48cPnyWH59o9am1WhjY3yCtaubQioX9KrWaacBXu2alJbCwBn/oAaA\ngOQvjOVXF3MxL4/cTGTjils1vTTAq93LnydRLyF/FvIXxpInz61UYl0euZmXseRXtFxy2iXo3ani\nRIIOFBfBj3F55GbWg6AFtdGuAd/pBJRjXh65mSuXDKhXtVxymiXnFanipbrqqmdMwl5CIlevvB2R\nbi47MekZumMVSlouOdUS9u5UcSHFRVf/njQ2A/lzI/2VxfUqQQJTHcYacitaLjnNNMCr3cmfT0Z5\n5GZeFqprSKc5sl+ZW6ngx7C5WD/dcsmgk8A/1GogyXtVqshJu56c8sjNummU8pWR/Lpmo02z3o5l\ne+B+ummainaXnFoa4NXwusExQTnna4wwD1/Kuxx2kvLv1xBtWzDNBgnwDwCvAqeAR7d4/EHgBeB5\n4OvADw+xr0ogKVyE5KWcr/JmoDCa9sGFtWqsG2n2Y32refgp1i/Ae8DjuED9NuAh4J5N23wReCfw\nLuDngN8fYl+VMCIChYvJKo/czPrQrLgrcfdARCisVfEzMW+0tgPPM9QrTVrNya14pSanX4C/DzgN\nnANawFO4GXuv3nfJQWB1iH1V0jRK0KrHc3m+QYXpFCntrW1BrdKk05FEtCfYjglbOGjbgunUL8Af\nAy723F8If7bZTwCvAJ8DfnnIfVWCSPlyTBfXHpZxn0T2oJSvJ6OTZj8ChTVN00wjv8/jg756Px1+\nvQ/4Y+A7hxnEyZMnN27Pzc0xNzc3zO5qkgoXmIpz894MFBcQkV2fIM0nrD3BdryMJb9W3dOxUOM3\nPz/P/Pz8UPv0C/CLwPGe+8dxM/HtfCn8ndeH2w20b2+AV/HlVm+6lMz6982s51JNtRzsv37o3YNO\nQKlQJ5NN/h87aw2tRodGrcXs/in4v51Smye/jz32WN99+r06nwXuBk4AWeBDwGc2bXMXV+sI3h1+\nXxtwX5Uk1fVkrN40KBGkvLyrXbu149Mw4+3+G0qah586/WbwbeAR4GlcVcyTuFz7w+HjTwA/Cfws\n7kRqGfipPvuqhJLy5enIOXdZ36Wcbh6+uKuUq01VJ0ZjDYXVKjfddjjqoagRisP0Q6bpjTLNgtc+\n55qM+bNRD2U0JIBOA3Pvz2CGbJr28rML1KvNRJdI9goCIegI73rfian4VJIG4f/Tjv9ZyU8gqomQ\noAOVK9ORf+8y1n0iqa4NtVunHVAtNfAS2H9mO9YagkCoVUbXo0dFb3peoWq8qqtAAtsD9yPB0Hn4\nSrGOMWb6ZroiWg8/Zabs3arGRUrL05V/77I+DLmMXzFXQ4LpOxbGGvKrWg8/TTTAq8EUzieze2Q/\nXhYqV5CgPfAu+bUqXoJWbxqU71tK+TrBFP7xSqvpe5WqkZNOy+Wppyn/3mUsYKCy2ndTgFazQ73S\nTGR74H6MNYhAraztg6eFBnjVX2UFMFPQnmAbErgS0AFUinWYxvx7l4hrwaCmggZ41ZeULidzeb5B\n2czAefhirjad5yJC1jPkV6tRD0ONiAZ41V8hocvzDcrLQm19oGX88quVqSqP3MzzLeWiLuM3Lab3\nlapGQtoNqCV0eb5BGcMgefhWgpfnG5QxBgNUy1oPPw00wKudVVddAJzWnHOXBH37w5dLjfBUxHQf\nCxHZWIpQJZsGeLUjKS1Nd/69y8uGrZC3V1yrJnupwgFZz5Bf0zz8NNAAr3ZWuDjd+fcum4F6fsc8\nfGG9OtX59y7Pt1SKDc3DT4Hpf7WqXUtF/r2rTx6+mYL8e1c3BaV5+OTTAK+2V1mZkuX5BrRDHr5S\nTEf+vUsCzcNPAw3waltT1/+9nx3y8MX1dOTfuzxf6+GngQZ4tb38hXTk37u6efj2t1+qX1ifzv4z\n2/F8S6VUp6N5+ERLzytWDUXaDagX05F/7+rm4avX5uE38u9TsMD2oEx4LKol7UuTZBrg1dYqK+mo\nf99MAlca2sPl36e4/8w2JND+8EmnAV5tyeXfU/jx3Mu60tAeLv+eogR8yOXhtT98kg0S4B8AXgVO\nAY9u8fhPAy8ALwL/CLyj57Fz4c+fB762l4GqCUtb/r3LZqBeuKYePm359y6Xh29oHj7B+r1qPeBx\nXJB/G/AQsHkJ+jPAD+AC+28Cv9/zmABzwLuA+/Y+XDUJqcy/d23Uw68A6cy/d2kePvn6Bfj7gNO4\nmXgLeAp4cNM2XwYK4e2vAndsejx974ykS1v9+2YSuCUKSV/9+2aah0+2fgH+GNCbkFwIf7adXwA+\n23NfgC8CzwIf2c0A1eSlrv59s556+LTVv2/m+dqXJsn8Po8P89L+IeDDwHt7fvZeYAm4CfgCLpf/\npc07njx5cuP23Nwcc3NzQzytGrm09J/ZTk9fmrT0n9lOb18a66X3OMTB/Pw88/PzQ+3T73Pn/cBJ\nXA4e4KNAAHx803bvAD4Vbnd6m9/1MaAM/Namn4ukebYYM9JuIC/8CWT2pzdFA9Cq0n7T+3nxxQaZ\nGS+1KRqAVqPDd7zrdg4emY16KKpH+Jrc8YXZ70/ys8DdwAkgC3wI+Mymbe7EBfef4drgvh84FN4+\nAPwo8M3+w1aRSkv/934koHxlJdX59y7RdVoTq1+Kpg08AjyNq6h5EngFeDh8/AngN4DrgE+EP2vh\nTs7eigv83ef5JPD5UQ1cjUdq+r/3YzOU1oogh6MeSeSsZyisVbjtTUejHooaUhymJpqiiZHg5U9D\ns5LuHDyACC9dup3OgdvxfC/q0URKRGg1A979AyewVvPwcTGKFI1KEek0oZ5PZ/37Jq3Ao9HJYqUV\n9VAit7FOa0n7wyeNBnh1VWWFMOkc9UgiV2nOYhDo6EU+EObhtR4+cTTAqw1SWtb8e6hUn0Uw0NKg\nBmEeXvvSJI4GeHVVIaX9Z7ZQqO/HswJBK90XfYU831IuNggCnQAkiQZ4BWj+vVerY2m0fawJA/sO\nC3GnhTuhJ7pOa8JogFdOZRXNvzsu/x4eCpEtV3hKJYGy1sMnigZ4BeAWm9b8OxDm3yX8Q2cstHTx\naXB5eF2nNVk0wCunmPL+Mz1c/r3j7hirefiQ60tT1zx8gmiAVy7/Xstp/h1odyyNduZq/r1L8/AY\nYxDQPHyCaIBXmn/vUWnOYJBrD4Xm4a8S0Tx8gmiAV+ldf3ULxca+q/n3LmOhrXl4CPPw2h8+MTTA\nKygsaHomVKz15N+7jIWO5uEBPM9SKdQJAj0WSaABPuVc/n1dT7Di8u/1rfLvXZqHx9huHl5TVkmg\nAT7tNP++Ycv8e5fm4a/SPHxiaIBPOa1/v6pY3yL/3qX18Bu0Hj45NMCnnda/b7im/n0zrYffoPXw\nyaEBPsW0/v2q1nb175tpHj6shxftD58AGuDTTPu/b+j2f9/xUIggbc09AyBof/gE0ACfYtr//apr\n+s9sx1jtDx/S/vDJMEiAfwB4FTgFPLrF4z8NvAC8CPwj8I4h9lVR0v7vGwpb1b9vpnn4DdofPhn6\nBXgPeBwXqN8GPATcs2mbM8AP4AL7bwK/P8S+KiLSbmj/91CrY2l0Bsi/d2keXtdpTYh+Af4+4DRw\nDmgBTwEPbtrmy0AhvP1V4I4h9lVRqWr9e9dA+fcuzcNvEBFKeS0djbN+Af4YcLHn/kL4s+38AvDZ\nXe6rJkhKS5p/DxVr+wbPumg9/AbtSxN/fp/Hh0k2/hDwYeC9w+578uTJjdtzc3PMzc0N8bRqV/Ka\nf+9y9e8D/rEzFoK2++No0l2j0K2H73QCPC/dx2IS5ufnmZ+fH2qffh9K7wdO4vLoAB8FAuDjm7Z7\nB/CpcLvTQ+4roietJkradeSFP4HMgdSnaJptj5eWjuPbzuCHQjqY/TdCZnasY0uCVqPNW++9nUNH\n90U9lNRx6+TuHMP7/dl9FrgbOAFkgQ8Bn9m0zZ244P4zXA3ug+6rolBecYE95cEdXP4dhjwU2pdm\ngwgUc5qyiqt+KZo28AjwNK4q5kngFeDh8PEngN8ArgM+Ef6shTvBut2+KmJSWhwu+TbFCrV9wx+K\njf7wR8YwomRx9fBVjr35+qiHorYQhymcpmgmLPjmn7r+5l66SyRF4MVLdwIMXiLZFbQxh4+BTXfu\nWURoNTrc+74T+L4X9XBSZRQpGjVlpFmFZhlsvw9v06/Z8WkHFrObjzPGQEfTNMYYMFAp6rGIIw3w\naVO5ovn3UKk+i2GXh0LQeviQ5uHjSwN8ykhhQfPvoWJ9D5UfxmhfmpDvW+1LE1Ma4FNERFz/d38m\n6qFETgSKO/V/76dbDx/scv8pYj1Dvdqi1dRjETca4NOkWYZWA4yeDKu3MwRisHvJVBkDWi7p+tIY\nqBT1E03caIBPESkvA6L5d6Bcn0VGUESmeXhHBAratiB2NMCnSf586i+v78rXDmDYYy+ebj28ntPA\ny1jyq1W05Dle9N2eEiIBFC+Bp/n3QKDUmMUftP/MtoybugatkYwryaw1tJptmvV21ENRPTTAp0Ut\n5xpkWc2/V5vuj9xIMlXatgDYuOhG2wfHjAb4lND2wFeV6rtoT7CdjbYFylhDflXz8HGiAT4t8uf1\n6tVQrnZg+NYE2+lW0mjuGc+3FHM1zcPHiAb4FJBOCyormn8H2oGl1srimVF9mgnzPLqMH9YagkCo\nlvVYxIUG+DSorKDL8zmVxszgy/MNSvPwG0SEkrYtiA0N8CkgpUuafw8VavtHn00xFlqaewbwPENO\n2xbEhgb4NNDl+YDwYpxhlucblLHQaesfUbrL+DXodPRYxIEG+CknrSrUC2DT3fsdXHvgVscf3QnW\nXgZtW0DYtgAoF/QK3zjQAD/lpHRZ2wOHSvVZGHX+vUtAtLsk4PLwxXVNWcWBBvhpl79APBbuil6+\ndmB8v9xq24Iuz7fkVipaLhkDGuCnmGtPsKDlkXTbE+zD32174L6My8EHeqm+9QzNurYtiINBAvwD\nwKvAKeDRLR7/TuDLQB34tU2PnQNeBJ4HvrbrUardqa67gKPtCag2Z5BxN9IU0e6SXG1bUNS2BZHr\nd2mjBzwO/AiwCDwDfAZ4pWebNeCXgJ/YYn8B5oD1vQ5UDc+VR+rHZIBCbYTtCbZjLLRqMHNw3M8U\ne8Ya8isVbrrtcNRDSbV+M/j7gNO4mXgLeAp4cNM2K8Cz4eNb0QRwVHLntHomlK8dHOHVq9voLsSt\nf1Txw7YFQaDlklHqF+CPARd77i+EPxuUAF/E/QH4yHBDU3sh7TrU1rX+HWh2POrtzHjKI6/RbVug\n5ZLGGkSgUtRjEaV+KZq9viPeCywBNwFfwOXyv7R5o5MnT27cnpubY25ubo9Pqygvu+9aHkmpPjv6\n9gTbEUFadYw/O4EnizkRCus1Dh3dw+LmasP8/Dzz8/ND7dPvJX8/cBJ3ohXgo0AAfHyLbT8GlIHf\n2uZ3bfe4aDnV6AXn/gHWTkN2jKWBCXFm9SbytQNkvAksCi0BGIM5dHvqk5OddoCf8fju+++MeihT\nKTyZveOrrF+K5lngbuAEkAU+hDvJuuXzbbq/HzgU3j4A/CjwzT7Pp0ZARFx7YJ1Fhu0JDuCNrTxy\nE2Mh0HJJcOWSjVpLyyUj1C9F0wYeAZ7GVdQ8iaugeTh8/AngVlx1zWHc7P5XgLcBNwOf6nmeTwKf\nH+HY1Xaqa24ZuYzm3ytheaSd6BUfrlzSeOmupumWSxZyVa2miUgcPkRqimbEgqVvwKXnIZvuAAOw\nmL+Oy6UjZCeRnumSALwM5uDNk3vOmGo1Oxw6Mstb77096qFMnVGkaFQSrZ/R6hlcema9OoHyyM2M\ndQuAaHdJ/IyllK9rd8mIaICfMtKsQL2o9e9Ao+3T7HgTKI/chnaXxBiDIJTzeoVvFDTATxkpXnI3\ntDySYn0fYCI7FNLSS/UBEHQRkIhogJ82ubMuRaDI1Q5iiSg10G1boKeX8DOWvHaXjIRGgikinRaU\nlsDX7pHtwFJpzIx+9aaBGUB0MW7AepZ2K6Cmi3FPnAb4aVK54r7rDJ5yw10DEGmmSgRpa5rGEQq6\nCMjEaSSYIpI7p42uQuvVGFzB212MW/9LsL5lbbkc9TBSRwP8lBAJXP5dr14lECjUJnj16naMhU5H\nr2oFPM9QrzRp1LdrOqvGQQP8tKis6OIeoXJj1l29GpNCIk3T9FzVuqZpmknSAD8lJHde0zOhXPVA\nfA6FMdDUEkFwvWnWLpeiHkaqaICfAiICuTOansH9jctVD+J7Mbly0lj3ySqIOF0UA55vqRQbtJqa\nspoUDfDToLYO7TrYfr3jpl+lOUMgJrqrV7ciohc9oWmaKGiAnwKSv6DpmVC+diB+RSvdahqFsUar\naSZIA3zCiQisv6HNxQibi1UO4k+6uVg/3eZjuj7pRvOxdktTVpOgAT7pGgVolLS5GFBrZWkHFmtj\nN4cHwnVyU84YAyIUc/qJZhI0wCec5M+7G9pcjFwcLm7aloGmpibApWlWl/RYTIIG+AQTEVh9HTzt\nPSMCa5VDk+/9Pihjod3UahpcmqaYq2maZgI0wCdZLQeNilbPANXmTKzTMwAYQVqapummafJaTTN2\nGuATTHJnAdH0DK73TIxDe8hqmiZkrGFtSS96GrdBAvwDwKvAKeDRLR7/TuDLQB34tSH3VbskIrB2\nStMzXE3P+JG1Bh7QRjWNpiZcNU1NL3oas34B3gMexwXqtwEPAfds2mYN+CXgv+xiX7Vb1TV3cZOn\n1TPlxmz8Lm7agV70dPWip/yqpmnGqV+Avw84DZwDWsBTwIObtlkBng0fH3ZftUuyfkYvbgqtVw+A\nJCRNZTRN02U9w+pSMephTLV+Af4YcLHn/kL4s0HsZV+1A5HApWe09wyBwHr1IJ6XkI/6xkKnBZ2E\njHeMur1ptIXw+PQrv9jLFHHgfU+ePLlxe25ujrm5uT08bQqUllyQyMa57nsyivX9iBhswsoFpFXB\neEeiHkakumma9StlbrvzuohHE3/z8/PMz88PtU+/AL8IHO+5fxw3Ex/EwPv2BnjVn6y+rpUzoZXy\noaiHMDzruRbCM0fc0q0p5vmWlYUitx4/uhHw1dY2T34fe+yxvvv0m/c8C9wNnACywIeAz2yz7eb/\nnWH2VQOSdh3yFzQ9A7Q6HqX6PvyoV24amgEJoNOIeiCRs56h2exQKeqxGId+M/g28AjwNK4q5kng\nFeDh8PEngFuBZ4DDQAD8Cq5qprzNvmoPXOfIQBfWBnJVl55J5MRPQJoVjJ/uMtfuRU+rS0UOHtFJ\ny6jF4a0hotUgAwte+QuolyDlgUEEXr58B62Ohxf3+vctCUiAOXx76v9YB4HQaQfc+/0n8Lx0H4th\nhCmtHWO4Hs0EkXoeqjltDYzrHFlvZ7Bx7T3TlwkXAtHWBdYaJBAKa7q04ahpgE8QWTuNtiZw1ioH\nAUn2oTDWtXpWGGu4sqg18aOmAT4hJGjDyqt6chXoBIbVyqEEnlzdpNu6oKN14H7GUs7XqVebUQ9l\nqmiATwjEmyJYAAAOrElEQVTJX4SgpZ0jcX3fXWuCqEcyGtLQK1u7JZIrl3QWP0oa4JNi+SUwGtxF\n4ErpSGL6zvRlPWhVtO0E4Gc9Vi6V6HSSel4lfjTAJ4DU1l1zMe0cSbU5Q72die/CHkNzM1dpatMt\naw1BJyC/oidbR0UDfALIymvoyVVnpXwIklr7vi0DzdLeGoNMCesZLl/Mo6XTo6EBPuak0wwbi+2L\neiiRa3cs69WD+ElpLDYoYyFouxOuKef5llq5Sa2sx2IUNMDHnKyfcQtEWC/qoURutXIQmdYPMgKi\nJZPuZKuB5YVC1EOZChrgY0wkgKUXNPeOawu8XDqa0KtWB2A9aNfcTD7lMlmPteUyzYYei73SAB9j\nkjsP7aqu2gTkKgdpBx5enBfV3isRLZnkan+aKzqL3zMN8DElInD5BS2NxFUQLpWOJrgtwYCs51Z7\nkin/dw7Az3osLxRptxN+MVvENMDHVXkZajlNzwDF+j4aU1UauZ2wP40u6Rf2pwlYW9JjsRca4GNK\nLr/oqium8ozi4ETgcvEoJul9ZwZlPdctVMsE8XzL0vkcQaDHYrc0wMeQVNeguKilkUClOUO5OZv8\nvjMDc4uBSFMv9vF8S7vVYX1Zq4t2SwN8DMml59zMPRVT1u2JwGL++vTM3ruMhUZBZ/G4IL9wZp0g\nmPb03HhogI8ZqaxAYQH8/VEPJXLl5izl5kyKZu8hY3UWH/J8S7vZYe2y5uJ3QwN8zMji1zX3Tnf2\nfh2GlB4K40FdZ/HggvzimXUCbUI2tEEC/APAq8Ap4NFttvnd8PEXgHf1/Pwc8CLwPPC1XY8yJaR8\nBUpLmnsHSo1ZKqnKvW/WzcXrzLWbi19d0lz8sPoFeA94HBfk3wY8BNyzaZsPAm8B7gb+NfCJnscE\nmMMF/fv2PtzpJSLI4jM6e8dNWhfy12MI0n0orAf1otbFE87iz67TaeuxGEa/AH8fcBo3E28BTwEP\nbtrmx4E/Cm9/FTgK3NLzeJrfogOT/HkoX9HZO7BePUCtOYM/rW0JBhbO4uu6CIbnWzrtgKUL+aiH\nkij9Avwx4GLP/YXwZ4NuI8AXgWeBj+x+mNNNgjZc/KpbTDvVU1a3HN9C/gY820n7oXC6V7d2tC+L\nn/VYvpCnUdMlDgfVL8APeoZnu7fi9+PSMx8AfhF434C/L1XkysvQqroAn3LLpSO0AzvdPWeGEi4I\nUs+lvl+8tQYR4eLptaiHkhj9Gp0sAsd77h/HzdB32uaO8GcAl8LvK8Cf41I+X9r8JCdPnty4PTc3\nx9zcXJ9hTQ9pVWHpG7qYNtBo+1wuHk3xidVtGA9adaRdx2TS/TrJzHjkViuU8jUOHU1XOnN+fp75\n+fmh9un3IdgHXgPejwvWX8OdaH2lZ5sPAo+E3+8Hfif8vh93krYEHAA+DzwWfu8laV29RUSQs/OQ\nOw/ZA1EPJ1IicHr1Fkr1fWQ8DfDfRgIwFnPo1tSn8VrNDtkZn7ffdwfWprfSO1yofMcXQ78ZfBsX\nvJ/GBesnccH94fDxJ4DP4oL7aaAC/Hz42K3Ap3qe55N8e3BPNSlchNw5yKQ7uAPkqgco1vaTmbbV\nmkYlXPVJ6gXMvqNRjyZSmaxHvdZi6XyeY2++PurhxFocpgKpnMFLu4F86/+4qWvKc++tjuVbS8cB\n0dz7jgSCDubgLeCn+zUTBEK7FfC27znG/oPp7Lg6yAw+vZ9vIiYLz0C7mfrgLgIXczfQET2x2p/r\nTyS19dRf4WqtwSCcfWVFu03uQAN8BIL8BbeQdiZdJ4m2kqseIFc7SMZqamYgxoNOS2vjcWWT1XKD\npfO5qIcSWxrgJ0waZTj3924hD5Puw19v+ZzP3YRntOZ9KNaDRhFp1aMeSaSMMWSyHkvnchRz1aiH\nE0vpjjATJkEHOft3bmHllK+zGojhzNot7hSEpmaGZNzkoLoGQborjqw1WM/wxreWaeki3d9GA/wE\nyeLXobKa+lbAIrCQu55aK6s177tlLCBucZiU5+P9jEenHXDm5Suaj99EA/yEBGun4MpLkNmf+jrm\nlfIhVsqHydh22g/F3hgP2g2kple5ZrIexVyNi6dWSWNV3nY0wE9AULwE5/7BNRJLed49X9vHxfyN\n+J7m3UfC+tCsII10n3Q1xpCd9biyWOTKYiHq4cRGuqPNBEgtB2/8jSuHtP2uK5tu1WaWs2u34JkO\n1ugsa2SsWxxEmuk+0WiMITPjceHUGrlVXQ0LNMCPldTzyOuf04uZgFozw+srt4HoxUyjd/Wkq7Rq\nUQ8mUtYafN/yxkvLFNY0yGuAHxOp55HXPuvavKa83r3WzPDayu1IAL6X9h7vY2Ks+6qspj7Ie77F\n8wynvqlBPg5Z0KlrVSC1deT1v9bgjkvLvL5ymwb3SZHAfe2/AZNNd7VWpx3Q6Qh3fdctXHfj9PV7\nGqRVgQb4EQsKC3DmbwGT+hbAuep+zq7djDGiqzNNUjfIzx7BzByOx7s8Ip12QLsdcOdbbuDmO450\ng+JU0AA/QSKCrLwKF7/i8u0pzrmLuIU7FvPX49mO5twj4RqTkT2A2Xddqktzg0BoNTrcdOwwd959\nw9S0GNYAPyHSriPn/x/kz7mLmKwX9ZAi0+pYzq/fRKG2H99rY+PwCkuz8Kpps/9G8NJbxSUiNOsd\n9h+a4a6338Ls/uRfSa4BfgKkdNkt2tGugX8g1TOlQm0f59Zvoh1YMrqmanxIeLXw7HWY7IF4vOsj\nICK0mwEYeNNbb+SGWw8lOmWjAX6MpFVFFp6F9TfAZsBPZ09qgGbbYyF/PbnaQawJNN8eS2HKxsti\n9l+f6l5InU5Auxlw6Ogsb/qOm9h3IJnpVA3wYyCdFrLyGiw97z7+ZtI7a+8EhpXSYZZK1yECvs7a\n40867iTJzEF3Ajal6UQRodV0E5Gbjx3m1juPkp1JVgpLA/wISbuBrJ12C2R3mq5CJqVXprY7ltXK\nQS4Xr6MjBt8GemVqooSzeWMgexAzcyi9gT4QWs0OxhhuvuMwt9xxlOxsMt7XGuD3SESglkNWX4W1\n0+5NkdLALgK1VpaV8mHWKgcR0MCeeGGgx0Bm1gV6byYeUWHCgkBoNztg4OgNB7jljiMcPDob6xz9\nqAL8A8Dv4Bbd/gPg41ts87vAB4Aq8HPA80PsG6sALyJQz7sFsVdfh2bZRTd/X+pmOd2gXqjtZ7Vy\niFbHQ0BPoE6j7olYjCutzOxzpb4p+492qRt3LDzfcuOth7jupoPsPzSDjVlJ2CgCvAe8BvwIsAg8\nAzwEvNKzzQeBR8Lv3wv8V+D+AfeFiAO8iECj6Pp4FC9B4YJLwXT7x9jMxF7k8898i7n3vH0iz7UV\nEWi0M1SbWYr1feRrBwjEIGLwrGsQNqn3+zMvPMd73vnuyTxZzE32WPSkb8B9YvX3Yfzue2FCw9jG\nM899mfe8+/sm8lxBJ6DdCsKlcA1Hrt/PkRv2c+DwDLP7s5EH/EECfL9cw33AaeBceP8p4EGuDdI/\nDvxRePurwFHgVuDNA+w7MSLiShkbZWiWXJfH8hWoroOEK8EIrhomE81lzf93QgFeBFqBR7Ptu4De\nylJpzFBrZRExCG5BY88GZCKqiHn2RQ3wXZM9FqYnBSnQrkO7hnTjiPXde8RmMZ7vPtUaf2KB/9nn\nvjKxAG89S9ZzF0UFgVBYr5JfrWykbfYdyHLg8Az7D80wuy9Ddp9PJutHHvh79Qvwx4CLPfcXcLP0\nftscA24fYN+hiYj7OBm03UwjaLuvTiv8aiDtJrSrLr3SqECrAq1uK1UDiItyNuNesDaZJY4iIGII\nNr4sgRg6gaUjlk5gaXcsrcCn2fZodnyaHZ92x0cAE64SIWKwNsAzQdrb1atrGLeoyIZwdt+oAGWk\nO8sXCQO9575bF/hNtwGasWx0vDQmvN39PvF/1K5Ya7DZq8dCRKjXW1QrDbjkZtOCgLjFwLMz/tWv\nWR8/47kmaGEjNOtZrGewtvvdjCXf3y/AD5o72dPIghefuvYppef2xv2e790A3f0uQXg77MHRfQwA\n667gs37PMMMXmHSg04EYrBpXa2VZLh7mxYVj1/z86n+A6Tk0pucQXb3dnX333nbZL/czYwRrAqzp\nXPMfZnCHrR2jd1sQQKsdn/FEKT7HYrsxCASEefw20Lh2+2/LJGz6Pf0zDRs6rRatRgzesCHT80fK\nYBAjtBpt6tUW0rN8oDEGY8BYc+1907O/6T7W89u3OWyjejXcD/x1z/2PAo9u2ua/AT/Vc/9V4JYB\n9wWXxhH90i/90i/9GurrNHvkA28AJ4As8A3gnk3bfBD4bHj7fuArQ+yrlFIqQh/AVcOcxs3CAR4O\nv7oeDx9/AXh3n32VUkoppZRS0+LXcKdrro96IBH6z7hS0heATwFHoh1OJB7Ancs5xdbnbdLiOPB3\nwLeAl4BfjnY4kfNwF1H+ZdQDidhR4M9wceJlXGo89o7jTsqeJd0B/p9yda3c/xR+pYmHS+mdADKk\n+9zNrcC94e2DuHRnWo8FwL8DPgl8JuqBROyPgA+Ht30SMgn8U+AdaIDv9c+B/xn1ICbs+7i2+urX\nwy8FnwbeH/UgInIH8EXgh0j3DP4IcGbQjeNyWcuDuAuhXox6IDHzYa5WKKXFdhfOpd0J4F24q8XT\n6LeBf49L4abZm4EV4A+B54D/Dmy7uvokA/wXgG9u8fXjuAqbj/VsG4erOsZpu2PxYz3b/AegCfyv\niY8uWhL1AGLoIC7n+itAOeKxROGfAVdw+fdpjw39+LhKxd8Lv1eI+Sfc7wKWcamZs0AL17/m5gjH\nFLWfA/4RmI14HFEY9AK5tMgATwO/GvVAIvQfcZ/qzgJLuKD2PyIdUXRuxR2Hru8H/iqisexK2nPw\nD+CqJm6MeiAR0QvkrjK4QPbbUQ8kRn6QdOfgAf4eeGt4+yRbt2GPrTOkO8CfAs7jPo4+j/soljZ6\ngZzz/bic8ze4+np4INIRRe8H0Sqad+Lar6e5lFoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWU\nUkoplRT/H76IEajXdkmlAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "slider = widgets.FloatSliderWidget(min=0, max=4, value=2)\n", + "interact(plot_pdfs, cohen_d=slider)\n", + "None" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cohen's $d$ has a few nice properties:\n", + "\n", + "* Because mean and standard deviation have the same units, their ratio is dimensionless, so we can compare $d$ across different studies.\n", + "\n", + "* In fields that commonly use $d$, people are calibrated to know what values should be considered big, surprising, or important.\n", + "\n", + "* Given $d$ (and the assumption that the distributions are normal), you can compute overlap, superiority, and related statistics." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In summary, the best way to report effect size often depends on the audience and your goals. There is often a tradeoff between summary statistics that have good technical properties and statistics that are meaningful to a general audience." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +}