{ "cells": [ { "cell_type": "markdown", "id": "9695f80e", "metadata": {}, "source": [ "# Plot dot plot\n", "\n", "This notebook will help you generate \"Prism-style\" dot plots in Python, inspect the distribution of your data, and run two-sample statistics.\n", "
" ] }, { "cell_type": "markdown", "id": "98bd8fba", "metadata": {}, "source": [ "## Import Data\n", "For this notebook, we can either import our data from a CSV file, or by manually entering the values. \n", "\n", "If you'd like to import your data from a CSV file, you will need to follow the instructions for uploading data to Colab on [the home page](https://bipn145.github.io/intro.html). If you are using this option, comment out the lines of code under Option 2.\n", "\n", "> **Task**: \n", "> 1. Change `data_1` and `data_2` to be your two groups of data. *Make sure you leave these as lists, with brackets on each end, and each data point separated by a comma.*\n", "> 2. *Optional*: Rename `Condition_1` and `Condition_2`. *Make sure you keep these in single quotes, so Python recognizes them as a string!*" ] }, { "cell_type": "code", "execution_count": 1, "id": "b6becc60", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Condition_1Condition_2
013
134
235
323
412
526
647
728
853
\n", "
" ], "text/plain": [ " Condition_1 Condition_2\n", "0 1 3\n", "1 3 4\n", "2 3 5\n", "3 2 3\n", "4 1 2\n", "5 2 6\n", "6 4 7\n", "7 2 8\n", "8 5 3" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Option 1: Import a CSV file as a Pandas dataframe\n", "import pandas as pd\n", "#filename = ...\n", "#data = pd.read_csv(filename)\n", "\n", "# Option 2: Import your data as two lists and generate a dataframe from it\n", "data_1 = [1,3,3,2,1,2,4,2,5]\n", "data_2 = [3,4,5,3,2,6,7,8,3]\n", "data = pd.DataFrame(data={'Condition_1':data_1,'Condition_2':data_2})\n", "\n", "# Show the data\n", "data" ] }, { "cell_type": "markdown", "id": "c2c81a8d", "metadata": {}, "source": [ "## Plot Data\n", "Below, we'll use a seaborn plotting function called [swarmplot](https://seaborn.pydata.org/generated/seaborn.swarmplot.html) to plot each of our data points. \n", "\n", "### Notes \n", "* This will draw a **dotted gray** line for the mean, and a **solid black line** for the median. \n", "* Change the `plt.ylabel` line to add your own label." ] }, { "cell_type": "code", "execution_count": 1, "id": "eeb3090c", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'data' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;31m# plot the mean line\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m sns.boxplot(data=data, showmeans=True,meanline=True,\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0mmeanprops\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m'color'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'gray'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'ls'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'--'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'lw'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0mmedianprops\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m'visible'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'color'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'black'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'ls'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'-'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'lw'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mNameError\u001b[0m: name 'data' is not defined" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 252, "width": 268 }, "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Import needed packages\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline \n", "%config InlineBackend.figure_format = 'retina'\n", "\n", "# Set up the plot\n", "fig,ax = plt.subplots(1,1,figsize=(4,4))\n", "\n", "# plot the mean line\n", "sns.boxplot(data=data, showmeans=True,meanline=True,\n", " meanprops={'color': 'gray', 'ls': '--', 'lw': 2},\n", " medianprops={'visible': True,'color': 'black', 'ls': '-', 'lw': 2},\n", " whiskerprops={'visible': False},\n", " showfliers=False,showbox=False,showcaps=False)\n", "\n", "# plot individual data points\n", "sns.swarmplot(data=data,s=8)\n", "\n", "plt.ylabel('Thing we\\'re measuring')\n", "\n", "# Make the axes look nice!\n", "ax.spines[['right', 'top']].set_visible(False)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "73046e36", "metadata": {}, "source": [ "## Check to see how skewed the data is\n", "\n", "Before we run any hypoothesis tests, we need to know if our data is skewed or not. To test for skewness, we can use [`stats.skewtest`](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.skewtest.html#scipy.stats.skewtest) to test. This method implements the D'Agostino-Pearson skewness test, one of many different tests (e.g., the Kolmogorov-Smirov test) that can be used to check the normality of a distribution. **If the skew test gives us a p-value of less than 0.05, the population is skewed.**\n", "\n", ">**Task**: Run the cell below, but then change the `sample` to `data_2` (or create a separate cell for `data_2` to test your second group of data points." ] }, { "cell_type": "code", "execution_count": 3, "id": "68ef3272", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The skewtest p-value is 0.346991576561619385898893597187\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABG4AAANhCAYAAAC2PP0xAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAB7CAAAewgFu0HU+AAB1tUlEQVR4nOzdeZhU5Z0+7qcAkVVRARXBXcQtxlGMO+JC4opoNAaNezSJ+tOMUWfiuEwmZjRxHTNJQFFi4pKIu5gENYJLVMQlwV0RIgoKuIFs0lC/P/xSA7J20119oO/7uvrydJ33vO+n6tTpsh7ec06pXC6XAwAAAEDhNGvsAgAAAABYPMENAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAF1aKxC6DhzZo1K6NHj06SdOrUKS1a2O0AAABQ32pqajJ58uQkyXbbbZdWrVqtcJ++wTcBo0ePzs4779zYZQAAAECTMXLkyPTs2XOF+3GqFAAAAEBBmXHTBHTq1KmyPHLkyKy//vqNWA0AAACsmiZOnFg542XB7+IrQnDTBCx4TZv1118/Xbt2bcRqAAAAYNVXX9eXdaoUAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABSU4AYAAACgoAQ3AAAAAAXVJIObqVOn5vbbb88555yTXr16ZfPNN8+aa66Zli1bpnPnztl7773z85//PB9++GG9jfmnP/0p/fr1S9euXbP66quna9eu6devX/70pz/V2xgAAADAqqVULpfLjV1EtT388MPZf//9l9muY8eO+f3vf5+vf/3rdR5r3rx5OfXUUzNo0KAltjnllFMyYMCANGvWMDnau+++m27duiVJxo8fn65duzbIOAAAANCUNcT37xYr3MNKqlu3bundu3d23HHHdOvWLeuvv37mzZuXd999N0OGDMldd92VKVOm5NBDD83IkSOz/fbb12mcCy64oBLa7LDDDjnvvPOy2WabZcyYMfn5z3+eF154ITfccEM6deqUn/3sZ/X5FAEAAICVXJOccTN37tw0b958qW3uueee9OvXL0nSr1+/3HXXXbUe54033sg222yTmpqa7LTTTnnsscfSunXryvoZM2akV69eGTVqVFq0aJFXX301m2++ea3HWRYzbgAAAKDhNcT37yZ5jZtlhTZJcthhh2XLLbdMkjz++ON1Gueaa65JTU1NkuS6665bKLRJkjZt2uS6665LktTU1OTqq6+u0zgAAADAqqlJBjfLq3379kmSWbNm1Xrbcrmce++9N0nSo0eP7LLLLottt8suu1QConvvvTdNcAIUAAAAsASCmyV4/fXX8+KLLyb5IniprbFjx2bChAlJkl69ei217fz17733XsaNG1frsQAAAIBVU5O9OPHizJgxI++9917uv//+/PznP6+c5nT22WfXuq9XXnmlsrys4GfB9a+++mo22WSTWo317rvvLnX9xIkTa9UfAAAAUAxNPrgZPHhwTjzxxCWu/7d/+7f079+/1v0uGKYs62JE8y9clHxx8aLaWnB7AAAAYNXR5IObJfnqV7+agQMHpmfPnnXaftq0aZXldu3aLbVt27ZtK8ufffZZncYDim/jfxva2CU0GeMuO6ixSwAAgHrR5IObww47LDvttFOSZObMmRkzZkz++Mc/5u677863v/3tXHPNNTn44INr3e+CFzRu2bLlUtuuvvrqleWZM2fWeqxlzdKZOHFidt5551r3CwAAADSuJh/cdOjQIR06dKj83rNnzxx99NH53e9+l+OPPz59+/bNoEGDcsIJJ9Sq31atWlWWP//886W2nT17dmX5y7cMXx71cV94AAAAoHjcVWoJvvOd7+TII4/MvHnzcsYZZ+Sjjz6q1fbzbyWeLPv0p+nTp1eWl3VaFQAAANB0CG6Wom/fvkm+CFb+/Oc/12rbBWfBLOuuTwue6uRCwwAAAMB8gpul6NSpU2X5n//8Z6223XrrrSvLr7322lLbLrh+q622qtU4AAAAwKpLcLMU7733XmW5tqcwbbLJJunSpUuSZMSIEUtt+9hjjyVJNthgg2y88ca1KxIAAABYZQluluKOO+6oLG+33Xa12rZUKlVOtXrttdfy9NNPL7bd008/XZlx07dv35RKpTpWCwAAAKxqmmRwM3jw4IVu1704V199dR588MEkX8ye2XPPPRdaP3z48JRKpZRKpSXecerss89O8+bNkyRnnnnmIrf6njlzZs4888wkSYsWLXL22WfX4dkAAAAAq6omeTvwSy65JOecc06OOOKI7LHHHtlss83Srl27TJs2LaNHj84tt9ySJ598MknSsmXLDBw4sBLA1Eb37t1z7rnn5rLLLsuoUaOy++675/zzz89mm22WMWPG5PLLL88LL7yQJDn33HOzxRZb1OvzBAAAAFZuTTK4SZKPPvoo119/fa6//voltunatWtuvPHG7LfffnUe59JLL82kSZNy44035oUXXsjRRx+9SJuTTz45P/3pT+s8BgAAALBqapLBzV/+8pcMHTo0Tz75ZN5666188MEH+fDDD9O6det07tw5X/3qV3PwwQfnqKOOSps2bVZorGbNmmXQoEE54ogjMnDgwDz77LOZMmVKOnbsmJ49e+a0007LAQccUE/PDAAAAFiVlMrlcrmxi6Bhvfvuu+nWrVuSZPz48enatWsjVwRN08b/NrSxS2gyxl12UGOXAABAE9QQ37+b5MWJAQAAAFYGghsAAACAghLcAAAAABSU4AYAAACgoAQ3AAAAAAUluAEAAAAoKMENAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABSU4AYAAACgoAQ3AAAAAAUluAEAAAAoKMENAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABSU4AYAAACgoAQ3AAAAAAUluAEAAAAoKMENAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABSU4AYAAACgoAQ3AAAAAAUluAEAAAAoKMENAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACqrJBjejRo3KT37yk/Tp0yddu3bN6quvnnbt2qV79+458cQT88QTT9TLOJdccklKpdJy/QwfPrxexgQAAABWDS0au4DGsNdee+Xxxx9f5PHPP/88b775Zt58880MHjw4xx13XK6//vq0bNmyEaoEAAAAmromGdxMmDAhSdKlS5cceeSR2XPPPbPhhhtm7ty5eeqpp3LllVfmvffey80335w5c+bk1ltvrZdxR48evdT1m2yySb2MAwAAAKwammRw06NHj/zsZz/LEUcckebNmy+0bpdddsl3vvOd7L777nnjjTdy22235Xvf+1722muvFR532223XeE+AAAAgKajSV7j5oEHHshRRx21SGgzX8eOHXPllVdWfh8yZEi1SgMAAACoaJLBzfLo3bt3ZXnMmDGNWAkAAADQVAlulmD27NmV5SXNzAEAAABoSE3yGjfLY8SIEZXlrbbaql767NOnT1588cV88skn6dChQ7beeut84xvfyGmnnZa11lqrzv2+++67S10/ceLEOvcNAAAANB7BzWLMmzcvl112WeX3o446ql76feihhyrLkydPzogRIzJixIhcfvnlGTx4cPr27Vunfrt161Yv9QEAAADFIrhZjKuvvjojR45Mkhx++OHZcccdV6i/7bbbLocddlh23nnndOnSJXPmzMnrr7+eW265JcOGDcsnn3ySI444Ivfff38OOOCA+ngKAAAAwCqgVC6Xy41dRJGMGDEi++23X2pqatK5c+eMHj06nTt3rnN/80+LWpIBAwbke9/7XpKkS5cuGTNmTFq1alWrMZbnVKmdd945STJ+/Ph07dq1Vv0D9WPjfxva2CU0GeMuO6ixSwAAoAl69913K2fF1Nf3bzNuFvDyyy+nX79+qampSatWrXLHHXesUGiTZKmhTZKcdtppefbZZzNo0KBMmDAhd955Z4455phajSGIAQAAgFWTu0r9P2PHjk2fPn3y8ccfp3nz5rn99tuz1157VWXs0047rbK84EWRAQAAgKZNcJNkwoQJ2W+//TJhwoSUSqXceOONdb5QcF1svfXWleX33nuvauMCAAAAxdbkg5spU6Zk//33z9tvv50kue6663LcccdVtYZSqVTV8QAAAICVQ5MObj799NN8/etfzyuvvJIkueyyy3L66adXvY754ydfXKAYAAAAIGnCwc2MGTNy0EEH5fnnn0+SXHDBBTn//PMbpZYBAwZUlnv16tUoNQAAAADF0ySDm88//zz9+vXLk08+mSQ566yz8tOf/rTW/QwePDilUimlUimXXHLJIutHjx6dt956a6l9DBw4MDfccEOSZL311ku/fv1qXQcAAACwamqStwP/9re/nWHDhiVJ9tlnn5x88sl56aWXlti+ZcuW6d69e63Hee6553LKKaekd+/eOeCAA7LddttlnXXWSU1NTV577bXccsstlTqaN2+egQMHpm3btnV7UgAAAMAqp0kGN3fddVdl+a9//Wu+8pWvLLX9RhttlHHjxtVprLlz5+bhhx/Oww8/vMQ266yzTgYNGpRDDjmkTmMAAAAAq6YmGdxUy4EHHphBgwblqaeeygsvvJAPPvggH374YcrlctZee+1sv/32+cY3vpETTjgha6yxRmOXCwAAABRMqVwulxu7CBrWu+++m27duiVJxo8fn65duzZyRdA0bfxvQxu7hCZj3GUHNXYJAAA0QQ3x/btJXpwYAAAAYGUguAEAAAAoKMENAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABSU4AYAAACgoAQ3AAAAAAUluAEAAAAoKMENAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABSU4AYAAACgoAQ3AAAAAAUluAEAAAAoKMENAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABSU4AYAAACgoAQ3AAAAAAUluAEAAAAoKMENAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABRUkw1uRo0alZ/85Cfp06dPunbtmtVXXz3t2rVL9+7dc+KJJ+aJJ56o9zFvu+229OnTJ+utt15atWqVjTbaKMcee2yeeuqpeh8LAAAAWPmVyuVyubGLqLa99torjz/++DLbHXfccbn++uvTsmXLFRpv5syZ+eY3v5kHH3xwseubNWuWiy66KBdffPEKjbMk7777brp165YkGT9+fLp27dog4wBLt/G/DW3sEpqMcZcd1NglAADQBDXE9+8mOeNmwoQJSZIuXbrkrLPOypAhQzJy5Mg89dRTueqqq7LBBhskSW6++eaccMIJKzzeSSedVAltevfunXvuuScjR47MoEGDstlmm2XevHm55JJLMnDgwBUeCwAAAFh1NMkZNwcffHCOO+64HHHEEWnevPki66dMmZLdd989b7zxRpJkxIgR2Wuvveo01l//+tfsu+++SZJDDjkkd99990JjTpkyJTvuuGPeeeeddOjQIW+//XbWWmutOo21JGbcQDGYcVM9ZtwAANAYzLipJw888ECOOuqoxYY2SdKxY8dceeWVld+HDBlS57GuuOKKJEmLFi3yq1/9apExO3bsmMsvvzxJ8sknn+SGG26o81gAAADAqqVJBjfLo3fv3pXlMWPG1KmPadOm5ZFHHkmS7LfffktM2g4//PCsscYaSZK77767TmMBAAAAqx7BzRLMnj27srykmTnL8uyzz+bzzz9PkvTq1WuJ7Vq2bJlddtmlss2cOXPqNB4AAACwamnR2AUU1YgRIyrLW221VZ36eOWVVyrLPXr0WGrbHj16ZNiwYampqcmbb76ZrbfeernHeffdd5e6fuLEicvdFwAAAFAcgpvFmDdvXi677LLK70cddVSd+lkwUFnWBYnmX7wo+eICRrUJbhbcFgAAAFh1CG4W4+qrr87IkSOTfHH9mR133LFO/UybNq2y3K5du6W2bdu2bWX5s88+q9N4qyJ34akOd+ABKC6fhdXhsxCAohLcfMmIESPyb//2b0mSzp0759e//nWd+5o1a1ZluWXLlkttu/rqq1eWZ86cWatxxo8fv9T1EydOzM4771yrPgEAAIDGJ7hZwMsvv5x+/fqlpqYmrVq1yh133JHOnTvXub9WrVpVludfpHhJFrwYcuvWrWs1Tn3cFx4AAAAoHneV+n/Gjh2bPn365OOPP07z5s1z++23Z6+99lqhPtu3b19ZXtbpT9OnT68sL+u0KgAAAKBpENwkmTBhQvbbb79MmDAhpVIpN954Y/r27bvC/S44E2ZZd35a8HQnFxsGAAAAEsFNpkyZkv333z9vv/12kuS6667LcccdVy99L3hnqNdee22pbeevb9GiRbbYYot6GR8AAABYuTXp4ObTTz/N17/+9bzyyitJkssuuyynn356vfXfs2fPykWJR4wYscR2n3/+eZ5++unKNquttlq91QAAAACsvJpscDNjxowcdNBBef7555MkF1xwQc4///x6HaN9+/bZd999kyQPP/zwEk+XuuuuuzJ16tQkSb9+/eq1BgAAAGDl1SSDm88//zz9+vXLk08+mSQ566yz8tOf/rTW/QwePDilUimlUimXXHLJYtv86Ec/SpLU1NTk9NNPz9y5cxdaP2XKlEpg1KFDh5xyyim1rgMAAABYNTXJ24F/+9vfzrBhw5Ik++yzT04++eS89NJLS2zfsmXLdO/evU5j7bPPPjn66KNz++2357777sv++++fs88+O126dMno0aNz6aWX5p133kmSXH755VlrrbXqNA4AAACw6mmSwc1dd91VWf7rX/+ar3zlK0ttv9FGG2XcuHF1Hu/GG2/M1KlT8+CDD+bRRx/No48+utD6Zs2a5cILL8ypp55a5zEAAACAVU+TPFWq2lq3bp2hQ4fmlltuyf7775/OnTunZcuW6datW/r3758nnnhiiadaAQAAAE1Xk5xxUy6X66WfE044ISeccMJyt+/fv3/69+9fL2MDAAAAq76qzriZM2dOXnnllbzyyiuZPXv2IutnzZqVc845J926dUvr1q2z9dZb57rrrqtmiQAAAACFUdUZN3fffXe+/e1vZ+21117srbH79euXYcOGVWbEvPbaazn77LPz+uuv55e//GU1SwUAAABodFWdcfOXv/wl5XI5hx12WFZfffWF1g0dOjR/+ctfkiRdu3ZNv379ssEGG6RcLufXv/51/va3v1WzVAAAAIBGV9Xg5vnnn0+pVEqvXr0WWXfjjTcmSbp3756XX345d955Z1566aVstdVWSZIbbrihmqUCAAAANLqqBjeTJk1Kkmy++eYLPT5v3rw88sgjKZVKOfPMM9O+ffskyZprrpkzzjgj5XI5Tz31VDVLBQAAAGh0VQ1upkyZkuSL22Mv6MUXX8zUqVOTJAcddNBC67bddtskyfjx46tQIQAAAEBxVDW4mX9dm/kBznyPPfZYki+ubbPRRhsttG7+7Ju5c+dWoUIAAACA4qhqcDM/lHnmmWcWevz+++9PqVTKXnvttcg2H330UZKkU6dODV8gAAAAQIFUNbjp3bt3yuVyrrvuurz66qtJkvvuuy/Dhw9Pkhx44IGLbPPSSy8lSdZff/2q1QkAAABQBFUNbs4888y0bNkykyZNyrbbbpuOHTumX79+KZfL2WCDDXLEEUcsss2wYcNSKpXyla98pZqlAgAAADS6qgY3W2yxRX73u9+lTZs2KZfL+eijj1Iul9OhQ4fcdtttadmy5ULt33///Tz00ENJkn322aeapQIAAAA0uhbVHvDII49Mr169MnTo0Lz//vtZf/31c+ihh2bttddepO0//vGP9O/fP8niT6MCAAAAWJVVPbhJks6dO+fEE09cZrs+ffqkT58+VagIAAAAoHiqeqoUAAAAAMtPcAMAAABQUI1yqlSSfPjhh3nqqafy9ttvZ9q0aZk7d+4yt7nooouqUBkAAABAMVQ9uJk0aVJ++MMfZsiQIampqanVtoIbAAAAoCmpanDz8ccfZ4899siYMWNSLperOTQAAADASqeq17i57LLL8tZbb6VcLqdPnz7585//nMmTJ2fu3LmZN2/eMn8AAAAAmpKqzri59957UyqVctBBB+W+++6r5tAAAAAAK52qzrh55513kiSnn356NYcFAAAAWClVNbhp165dkmTdddet5rAAAAAAK6WqBjfbbbddkuSf//xnNYcFAAAAWClVNbg57bTTUi6X87vf/a6awwIAAACslKoa3Bx11FE55phjcvfdd+eyyy6r5tAAAAAAK52q3lXqsccey8knn5yxY8fmggsuyF133ZX+/funR48eadOmzTK332uvvapQJQAAAEAxVDW42XvvvVMqlSq/P/fcc3nuueeWa9tSqZSampqGKg0AAACgcKoa3CRJuVyu9pAAAAAAK6WqBjePPvpoNYcDAAAAWKlVNbjp1atXNYcDAAAAWKlV9a5SAAAAACw/wQ0AAABAQVX94sQLeu655/Lwww/npZdeykcffZQkWXvttbPttttmv/32y4477tiY5QEAAAA0qkYJbkaPHp1TTz01I0eOXGKbH//4x/na176WAQMGZLvttqtidQAAAADFUPVTpR5++OHsvPPOGTlyZMrlcsrlclq0aJF111036667blq0aFF5/Omnn87OO++cRx55pNplAgAAADS6qgY3U6ZMyZFHHpnZs2enVCrllFNOyTPPPJPp06dnwoQJmTBhQmbMmJGRI0fmu9/9bpo3b57Zs2fnyCOPzIcffljNUgEAAAAaXVWDm2uvvTaffvppWrZsmaFDh2bgwIHp2bNnWrT4vzO2mjdvnp122ikDBgzI0KFDs9pqq+XTTz/NtddeW81SAQAAABpdVYOboUOHplQq5YwzzsjXv/71Zbbv06dPzjzzzJTL5QwdOrQKFQIAAAAUR1WDm7FjxyZJDj300OXeZn7bt99+u0FqAgAAACiqqgY3s2bNSpK0bdt2ubeZ33b27NkNUhMAAABAUVU1uFlvvfWSJC+88MJybzO/7brrrtsgNQEAAAAUVVWDmz333DPlcjmXXXZZpk6dusz206ZNy+WXX55SqZQ999yzChUCAAAAFEdVg5vTTjstyRfXutlrr70yatSoJbYdNWpUevXqlTFjxiy0LQAAAEBT0WLZTerP7rvvnh/84Af51a9+ldGjR+drX/tattlmm3zta19L586dUyqV8sEHH+SZZ57Jyy+/XNnuBz/4QXbfffdqlgoAAADQ6Koa3CTJddddlzZt2uSqq67KvHnz8tJLLy0U0iRJuVxOkjRr1iw/+tGPctlll1W7TAAAAIBGV9VTpZKkVCrl5z//eV588cV8//vfzxZbbJFyubzQzxZbbJHvf//7efHFFyvXuAEAAABoaqo+42a+bbfdNv/7v/+bJPn888/z8ccfJ0nWWmuttGzZsrHKAgAAACiMRgtuFtSyZUu3+wYAAAD4kqqfKgUAAADA8hHcAAAAABRUg5wqtc8++yT54kLEjzzyyCKP18WX+wIAAABY1TVIcDN8+PAkWeRuUMOHD0+pVKrc7nt5zG/vzlIAAABAU9Mgwc1ee+212KBlSY8DAAAAsKgGnXGzvI8DAAAAsCgXJwYAAAAoKMENAAAAQEFVNbhp1qxZWrRokVdeeWW5txkzZkxlOwAAAICmpOozbmpzR6n62A4AAABgZbXSnCrlblQAAABAU1P44GbKlClJkrZt2zZyJQAAAADV1SjBzfLOnpk+fXquu+66JMlmm23WkCUBAAAAFE6DXvF30003Xezjffr0yWqrrbbUbWfPnp1JkyZl3rx5KZVKOeSQQxqiRAAAAIDCatDgZty4cYs8Vi6X895779Wqn1122SXnnXdePVUFAAAAsHJo0ODm+OOPX+j33/72tymVSjn00EPToUOHJW5XKpXSqlWrrL/++tltt92yzz77uDgxAAAA0OQ0aHBz0003LfT7b3/72yTJpZdemq233rohhwYAAABY6TVocPNlF198cZKkc+fO1RwWAAAAYKXUKMENAAAAAMvWKLcDBwAAAGDZqjrjZnHGjRuXKVOmZObMmSmXy0ttu9dee1WpKgAAAIDG1yjBzeuvv56f/exnue+++zJ16tTl2qZUKqWmpqaBKwMAAAAojqoHN/fcc0+OOeaYzJo1a5kzbAAAAACasqoGN+PHj8+xxx6bmTNnZoMNNsi5556bNm3a5NRTT02pVMrDDz+cjz76KKNGjcrvfve7TJgwIXvssUcuueSSNG/evJqlAgAAADS6qgY3//M//5MZM2akffv2eeaZZ9KlS5e8/PLLlfW9e/dOkhxxxBG56KKLcvLJJ+cPf/hDBg0alFtuuaWapQIAAAA0uqreVerhhx9OqVTKD37wg3Tp0mWpbVu3bp3f//732WGHHXL77bfnzjvvrFKVAAAAAMVQ1eBm3LhxSZLddtut8lipVKosf/niw82aNcv/9//9fymXy7nxxhurUiMAAABAUVQ1uJk+fXqSpFu3bpXH2rRpU1n+9NNPF9lmm222SZL8/e9/b+DqAAAAAIqlqsHNmmuumSSZNWtW5bF11lmnsjxmzJhFtpkf5kyZMqWBqwMAAAAolqoGN1tuuWWS5O2336481r59+2y00UZJkmHDhi2yzUMPPZQk6dChQ8MXCAAAAFAgVQ1udt111yTJ008/vdDjBx98cMrlcn7xi1/k0UcfrTz+xz/+Mddee21KpVJ23333apYKAAAA0OiqGtwceOCBKZfLueuuuzJ37tzK4+eee27atGmTzz77LPvtt186deqU9u3b59vf/nZmzZqVZs2a5dxzz61mqQAAAACNrqrBzd57752LL744J554Yt57773K4xtuuGHuuOOOrLnmmimXy/nwww8zffr0lMvlrL766rn++uuzyy67VLNUAAAAgEbXopqDlUqlXHzxxYtdd8ABB+TNN9/MkCFD8vLLL6empiZbbLFFjjrqqGywwQbVLBMAAACgEKoa3CzLOuusk9NOO62xywAAAAAohKqeKgUAAADA8qtqcLPLLrvkl7/8ZSZPnlzNYQEAAABWSlUNbkaOHJmzzjorG2ywQQ444ID8/ve/z/Tp06tZAgAAAMBKo6rBzRZbbJFyuZyampoMGzYsxx9/fNZdd930798/Q4cOXegW4QAAAABNXVWDm9dffz3PPvtsfvjDH2b99ddPuVzOjBkz8oc//CGHHnpo1l9//Zxxxhn529/+Vs2yAAAAAAqp6hcn3nHHHXPllVdm/Pjxefjhh3PSSSdlzTXXTLlczpQpU/LrX/86e+65ZzbddNNceOGFefXVV6tdIgAAAEAhNNpdpUqlUvbZZ5/ccMMNef/993PnnXfmiCOOyOqrr55yuZxx48blZz/7Wbbddtv8y7/8S6666qrGKhUAAACgURTiduAtW7ZMv379cscdd+SDDz7IoEGDsu+++6ZZs2Ypl8t58cUXc+655zZ2mQAAAABVVYjgZkHt27fPiSeemGHDhmXw4MHp0KFDY5cEAAAA0ChaNHYBX/b888/n1ltvze23356JEyc2djkAAAAAjaYQwc3bb7+dW265JbfeemveeOONJEm5XE6StG3bNocddliOOeaYxiwRAAAAoOoaLbiZPHlybr/99tx6660ZOXJkkv8La1q0aJE+ffrkmGOOSd++fdOmTZvGKhMAAACg0VQ1uJk+fXruuuuu3HLLLfnrX/+auXPnJvm/wGbXXXfNMccck6OOOiodO3Zs0FomTZqUkSNHZuTIkXn22Wfz7LPP5sMPP0ySHH/88Rk8eHC9jHPJJZfkP//zP5er7aOPPpq99967XsYFAAAAVn5VDW46d+6cWbNmJfm/sKZHjx455phj0r9//2yyySZVq2Xdddet2lgAAAAAdVHV4GbmzJlJki5duuToo4/OMccckx122KGaJSzWhhtumB49emTYsGENOs7o0aOXur6awRUAAABQfFUNbk488cQcc8wx6d27d0qlUjWHXsRFF12Unj17pmfPnll33XUzbty4Bg9Ott122wbtHwAAAFi1VDW4Of7445Mkb731VrbYYotqDr2I5b3uDAAAAEBjaVbNwfbee+/07t07Tz75ZDWHBQAAAFgpVTW4adeuXZJku+22q+awAAAAACulqp4qteGGG+bVV1/NjBkzqjlsYfTp0ycvvvhiPvnkk3To0CFbb711vvGNb+S0007LWmutVed+33333aWunzhxYp37BgAAABpPVYObgw46KK+++moefvjh7LnnntUcuhAeeuihyvLkyZMzYsSIjBgxIpdffnkGDx6cvn371qnfbt261VeJAAAAQIFU9VSpH/7wh1l77bVzzTXX5KWXXqrm0I1qu+22y4UXXpj7778/zz33XJ5++un89re/TZ8+fZIkn3zySY444oj86U9/auRKAQAAgCKp6oyb9dZbLw888ECOOOKI7L777jn//PPTv3//bLzxxtUso6rOPvvsXHLJJYs8/rWvfS3HHXdcBgwYkO9973uZO3duTjnllIwZMyatWrWq1Rjjx49f6vqJEydm5513rlWfAAAAQOOranCz6aabJkk+//zzTJs2LRdeeGEuvPDCtGvXLh06dEjz5s2XuG2pVMqYMWOqVWq96dChw1LXn3baaXn22WczaNCgTJgwIXfeeWeOOeaYWo3RtWvXFagQAAAAKKqqBjfjxo1b6PdyuZwkmTZtWqZNm7bUbUulUkOV1ehOO+20DBo0KEkyYsSIWgc3AAAAwKqpqsHN8ccfX83hVhpbb711Zfm9995rxEoAAACAIqlqcHPTTTdVc7iVxqo8mwgAAACou6reVYrFe+WVVyrLXbp0acRKAAAAgCIR3BTAgAEDKsu9evVqxEoAAACAImnU4GbmzJl54oknMmTIkNx8882ZOnVqY5ZTa4MHD06pVEqpVFrsLb9Hjx6dt956a6l9DBw4MDfccEOSL26X3q9fv4YoFQAAAFgJVfUaN/ONHz8+P/7xj3PHHXdkzpw5lcd32mmnhS7UO2jQoAwYMCBrrrlmhg0bVq/XgnniiScWClWmTJlSWX7rrbcyePDghdqfcMIJtR7jueeeyymnnJLevXvngAMOyHbbbZd11lknNTU1ee2113LLLbdk2LBhSZLmzZtn4MCBadu2bZ2eDwAAALDqqXpw88wzz+Sggw7Kxx9/XLkdeLL4C/QecsghOf300zNnzpwMGzYsX//61+utjhtuuCG//e1vF7vuySefzJNPPrnQY3UJbpJk7ty5efjhh/Pwww8vsc0666yTQYMG5ZBDDqnTGAAAAMCqqaqnSn3yySfp27dvPvroo6y33nr51a9+ldGjRy+xfefOnXPAAQckSYYOHVqtMuvNgQcemEGDBuWUU07JjjvumK5du6Z169Zp1apVunTpkgMOOCDXXntt3n777fTt27exywUAAAAKpqozbv7nf/4nkyZNSseOHfPUU09lww03XOY2++23X+69996MHDmyXmsZPHjwIqdD1dYJJ5yw1Jk4nTt3zkknnZSTTjpphcYBAAAAmqaqzri5//77UyqV8q//+q/LFdokyTbbbJMkGTNmTEOWBgAAAFA4VQ1u5l8MeK+99lrubdZaa60kWenuOAUAAACwoqoa3MyaNStJstpqqy33NtOnT0+StG7dukFqAgAAACiqqgY3nTt3TpKMHTt2ubd58cUXkyRdunRpiJIAAAAACquqwc3Xvva1JMmf/vSn5WpfLpdz/fXXp1QqZc8992zI0gAAAAAKp6rBzTHHHJNyuZxbbrmlMpNmac4555z8/e9/T5Icf/zxDVwdAAAAQLFUNbjp27dvevfunZqamuy777759a9/nUmTJlXW19TUZMKECbnjjjuy55575tprr02pVMrhhx+e3XbbrZqlAgAAADS6FtUe8M4778y+++6bF154IWeccUbOOOOMlEqlJMkOO+ywUNtyuZxddtklgwcPrnaZAAAAAI2uqjNukqRDhw556qmn8u///u9ZY401Ui6XF/vTunXrnHfeeRk+fHjatm1b7TIBAAAAGl3VZ9wkScuWLXPppZfmxz/+cUaMGJFRo0Zl0qRJmTt3btZZZ53ssMMO2W+//bLmmms2RnkAAAAAhdAowc18bdu2zYEHHpgDDzywMcsAAAAAKKSqnyoFAAAAwPJp1Bk3i/PBBx/kgQceyJQpU7LJJpvk4IMPTps2bRq7LAAAAICqq2pw8+qrr+biiy9OqVTKgAED0qFDh4XW33fffenfv39mzpxZeaxr1665995789WvfrWapQIAAAA0uqqeKnXPPfdkyJAhmTBhwiKhzaRJk3LsscdmxowZC91davz48TnkkEPy2WefVbNUAAAAgEZX1eDmkUceSalUysEHH7zIul/96lf57LPP0qJFi1x11VX5+9//np///Odp1qxZJkyYkOuvv76apQIAAAA0uqoGN++8806SZIcddlhk3Z133plSqZTjjjsuZ599drbbbrv86Ec/ysknn5xyuZz77ruvmqUCAAAANLqqBjeTJk1KknTu3Hmhx6dMmZKXX345SdK/f/+F1h166KFJkldeeaUKFQIAAAAUR1WDm/kXHZ41a9ZCjz/xxBNJkpYtW2aPPfZYaN3666+fJPnkk08avkAAAACAAqlqcLP22msn+b9TpuZ75JFHkiQ77bRTWrZsudC6mpqaJEm7du2qUCEAAABAcVQ1uNl+++2TJLfeemvlsZkzZ+aOO+5IqVTKPvvss8g2//znP5Mk6667bnWKBAAAACiIqgY3Rx99dMrlcu6///4cffTR+eUvf5k+ffpk0qRJKZVK+fa3v73INs8880ySZKONNqpmqQAAAACNrqrBzXHHHZc99tgj5XI5d9xxR84666z87W9/S5KceOKJ6dGjxyLb3HXXXSmVStltt92qWSoAAABAo6tqcNOsWbP86U9/yr/+67+ma9euadGiRbp165YLL7wwv/71rxdp/8ADD2TcuHFJkgMPPLCapQIAAAA0uhbVHrBt27a54oorcsUVVyyz7e67756xY8cmcaoUAAAA0PRUPbipjbXWWitrrbVWY5cBAAAA0CiqeqoUAAAAAMuv0WbczJ07N/fee28efvjhjB49Oh999FGSZO211862226b/fbbL3379k2LFoWeFAQAAADQYBolFbnvvvtyxhln5L333qs8Vi6XkySlUil/+9vfMnDgwKy//vr55S9/mcMOO6wxygQAAABoVFU/Veraa69Nv3798t5771XCmo033ji77LJLdtlll2y88cZJvghyJkyYkCOOOCLXXHNNtcsEAAAAaHRVDW6eeeaZnHPOOSmXy2nfvn0uv/zyfPDBBxkzZkz+9re/5W9/+1vGjBmTDz74IJdffnnWXHPNlMvlnHvuuXnmmWeqWSoAAABAo6tqcHPVVVdl3rx5WXPNNfO3v/0t5557bjp27LhIu44dO+bcc8/N3/72t6y55pqZN29errrqqmqWCgAAANDoqhrcPP744ymVSjn//POz9dZbL7P9VlttlfPPPz/lcjmPPfZYFSoEAAAAKI6qBjcff/xxkqR3797Lvc38tp988klDlAQAAABQWFUNbtZff/1G2RYAAABgZVTV4Ga//fZLkowYMWK5txk+fHiSZJ999mmIkgAAAAAKq6rBzTnnnJPWrVvnsssuyxtvvLHM9m+88UYuv/zytG3bNueee24VKgQAAAAojqoGN1tuuWWGDBmSJNlll11yzTXX5KOPPlqk3ccff5xrr702u+22W5Lkj3/8Y7bccstqlgoAAADQ6Fo0RKfLOq2pU6dOefPNN3POOefkRz/6UTbZZJN07tw5pVIpH3zwQcaOHZtyuZwk2XzzzfOLX/wiV1xxRR555JGGKBcAAACgkBokuBk+fHhKpVIlfFlQqVSqLJfL5ZTL5YwZMyZjxoxZbF9vvfVW3nzzzYW2AwAAAGgKGiS42WuvvQQtAAAAACuowWbcAAAAALBiqnpxYgAAAACWX4PMuFke77//fj788MNMnTo1a6yxRtZZZ52st956jVUOAAAAQOFUNbgZOnRobrrppjzxxBOZPHnyIus7deqUPffcMyeeeGIOPPDAapYGAAAAUDhVOVXqH//4R7bffvsceuihufvuuzNp0qTKHaUW/Jk0aVLuuuuuHHLIIfnqV7+a0aNHV6M8AAAAgEJq8Bk3d955Z77zne9k9uzZlduDt27dOttvv33WXXfdtGvXLp999lk++OCD/OMf/8iMGTOSfBH27Lzzzrn11lvTr1+/hi4TAAAAoHAaNLh58sknc+yxx2b27NlJkm984xs5++yzs99++6VZs0Un+8ybNy8PPfRQrrvuujz44IOZPXt2jjnmmDz88MPZbbfdGrJUAAAAgMJpsFOl5s2bl9NOOy2zZ8/O6quvnt///vd58MEH06dPn8WGNknSrFmzfP3rX88DDzyQW2+9NS1btsysWbNy2mmnVWbrAAAAADQVDRbcDBkyJK+88kpKpVJuuumm9O/fv1bbH3300bn55puTJK+88kruuOOOhigTAAAAoLAaLLi57777kiT77LNPjj766Dr1cdRRR2WfffZJktx77731VhsAAADAyqDBgptnn302pVKp1jNtvuyYY45JuVzOs88+W0+VAQAAAKwcGiy4+eCDD5IkW2655Qr106NHj4X6AwAAAGgqGiy4mTNnTpKkZcuWK9TPaqutliSpqalZ4ZoAAAAAViYNFtx07tw5SfLPf/5zhfqZv32nTp1WuCYAAACAlUmDBTdbb711kuT+++9foX7mX+R4m222WeGaAAAAAFYmDRbcHHTQQSmXy7ntttsyevToOvXxj3/8I7fddltKpVIOOuigeq4QAAAAoNgaLLg59thjs84666SmpiaHHHJIxowZU6vt33777Rx66KGpqanJ2muvnWOPPbaBKgUAAAAopgYLbtZYY4387Gc/S7lczvjx47PDDjvkyiuvzLRp05a63bRp03LVVVdlhx12yDvvvJNSqZRLL700a6yxRkOVCgAAAFBILRqy8+9+97t5/fXXc9VVV2X69Ok577zzcvHFF2fPPffMv/zLv2S99dZLu3bt8tlnn+X999/PCy+8kMceeywzZ85MuVxOkpx11lk59dRTG7JMAAAAgEJq0OAmSa644opsuumm+dGPfpRZs2ZlxowZGTZsWIYNG7bY9vMDm9VXXz2/+MUvcsYZZzR0iQAAAACF1GCnSi3oBz/4QV577bWcddZZWXvttVMul5f4s/baa+fss8/Oa6+9JrQBAAAAmrQGn3Ez34Ybbpirr746V199dV5++eX8/e9/z5QpUzJt2rS0b98+HTt2zFe+8pVsu+221SoJAAAAoNCqFtwsaJtttsk222zTGEMDAAAArDSqcqoUAAAAALUnuAEAAAAoKMENAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABSU4AYAAACgoAQ3AAAAAAUluAEAAAAoKMENAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgmmxwM2nSpDzwwAO56KKLcsABB6Rjx44plUoplUo54YQTGmTM2267LX369Ml6662XVq1aZaONNsqxxx6bp556qkHGAwAAAFZuLRq7gMay7rrrVm2smTNn5pvf/GYefPDBhR5/5513csstt+S2227LRRddlIsvvrhqNQEAAADF12Rn3Cxoww03TJ8+fRqs/5NOOqkS2vTu3Tv33HNPRo4cmUGDBmWzzTbLvHnzcskll2TgwIENVgMAAACw8mmyM24uuuii9OzZMz179sy6666bcePGZZNNNqn3cf7617/m9ttvT5Iccsghufvuu9O8efMkSc+ePXPooYdmxx13zDvvvJPzzz8/Rx55ZNZaa616rwMAAABY+TTZGTf/+Z//mYMPPrjBT5m64oorkiQtWrTIr371q0poM1/Hjh1z+eWXJ0k++eST3HDDDQ1aDwAAALDyaLLBTTVMmzYtjzzySJJkv/32S9euXRfb7vDDD88aa6yRJLn77rurVh8AAABQbIKbBvTss8/m888/T5L06tVrie1atmyZXXbZpbLNnDlzqlIfAAAAUGxN9ho31fDKK69Ulnv06LHUtj169MiwYcNSU1OTN998M1tvvfVyj/Puu+8udf3EiROXuy8AAACgOAQ3DWjBQGVJp0nN161bt8ry+PHjaxXcLLgtAAAAsOoQ3DSgadOmVZbbtWu31LZt27atLH/22WcNVhMAADSWjf9taGOX0CSMu+ygxi6hyfCero6m/p4W3DSgWbNmVZZbtmy51Larr756ZXnmzJm1Gmf8+PFLXT9x4sTsvPPOteoTAAAAaHyCmwbUqlWryvL8ixQvyezZsyvLrVu3rtU4yzoNCwAAAFg5uatUA2rfvn1leVmnP02fPr2yvKzTqgAAAICmQXDTgBacCbOsOz8teLqTiw0DAAAAieCmQS14Z6jXXnttqW3nr2/RokW22GKLBq0LAAAAWDkIbhpQz549KxclHjFixBLbff7553n66acr26y22mpVqQ8AAAAoNsFNA2rfvn323XffJMnDDz+8xNOl7rrrrkydOjVJ0q9fv6rVBwAAABSb4GYFDB48OKVSKaVSKZdccsli2/zoRz9KktTU1OT000/P3LlzF1o/ZcqUnH/++UmSDh065JRTTmnQmgEAAICVR5O9HfgTTzyRt956q/L7lClTKstvvfVWBg8evFD7E044oU7j7LPPPjn66KNz++2357777sv++++fs88+O126dMno0aNz6aWX5p133kmSXH755VlrrbXqNA4AAACw6mmywc0NN9yQ3/72t4td9+STT+bJJ59c6LG6BjdJcuONN2bq1Kl58MEH8+ijj+bRRx9daH2zZs1y4YUX5tRTT63zGAAAAMCqx6lSVdC6desMHTo0t9xyS/bff/907tw5LVu2TLdu3dK/f/888cQTSzzVCgAAAGi6muyMm8GDBy9yOlRtnXDCCbWaidO/f//0799/hcYEAAAAmg4zbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABSU4AYAAACgoAQ3AAAAAAUluAEAAAAoKMENAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABSU4AYAAACgoAQ3AAAAAAUluAEAAAAoKMENAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABSU4AYAAACgoAQ3AAAAAAUluAEAAAAoKMENAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABSU4AYAAACgoAQ3AAAAAAUluAEAAAAoKMFNkn/+858555xz0qNHj7Rt2zZrr712evbsmV/84heZMWPGCvU9ePDglEql5foZPHhw/TwhAAAAYJXQorELaGz3339/jj322EydOrXy2IwZMzJq1KiMGjUqN9xwQ4YOHZrNN9+8EasEAAAAmqImHdy88MIL+da3vpWZM2emXbt2+fd///f07t07M2fOzO23357rr78+b7zxRg466KCMGjUq7du3X6Hx/vKXv6RLly5LXN+1a9cV6h8AAABYtTTp4Oass87KzJkz06JFiwwbNiy77rprZd0+++yTLbbYIuedd17eeOONXHnllbnkkktWaLzu3btn4403XrGiAQAAgCajyV7jZuTIkXn88ceTJCeffPJCoc1855xzTrbaaqskybXXXps5c+ZUtUYAAACgaWuywc0999xTWT7xxBMX26ZZs2Y57rjjkiSffPJJHn300WqUBgAAAJCkCQc3TzzxRJKkbdu22XHHHZfYrlevXpXlJ598ssHrAgAAAJivyV7j5tVXX02SbL755mnRYskvQ48ePRbZpq5OPPHEvP7665kyZUrWWGONbL755tlvv/3y/e9/PxtssEGd+3333XeXun7ixIl17hsAAABoPE0yuJk1a1amTJmSZNl3clprrbXStm3bTJ8+PePHj1+hcYcPH15Z/vDDD/Phhx/mmWeeyZVXXplrrrkmp512Wp367dat2wrVBQAAABRTkwxupk2bVllu167dMtvPD24+++yzOo236aab5vDDD8+uu+5aCVnefvvt3HnnnRkyZEhmzZqV733veymVSjn11FPrNAYAAACw6mmSwc2sWbMqyy1btlxm+9VXXz1JMnPmzFqP1a9fvxx//PEplUoLPd6zZ89861vfygMPPJDDDz88c+bMyQ9/+MMceuihWW+99Wo1xrJmAk2cODE777xzrWsHAAAAGleTvDhxq1atKsuff/75MtvPnj07SdK6detaj7XmmmsuEtos6OCDD85FF12UJJkxY0YGDRpU6zG6du261J/111+/1n0CAAAAja9JBjft27evLC/P6U/Tp09PsnynVdXFqaeeWgl3RowY0SBjAAAAACufJhnctGrVKuuss06SZd+R6eOPP64ENw11EeDOnTtX6nnvvfcaZAwAAABg5dMkg5sk2XrrrZMkb731VmpqapbY7rXXXqssb7XVVg1Wz9JOpwIAAACapiYb3Oyxxx5JvjgN6rnnnltiuwVPXdp9990bpJbJkydXbk/epUuXBhkDAAAAWPk02eDmsMMOqyzfdNNNi20zb9683HzzzUmSDh06pHfv3g1Sy8CBA1Mul5MkvXr1apAxAAAAgJVPkw1udt555+y5555JkkGDBuWpp55apM2VV16ZV199NUly1llnZbXVVlto/fDhw1MqlVIqlXLCCScssv24cePywgsvLLWOBx54ID/5yU+SfHHXqhNPPLEuTwcAAABYBbVo7AIa07XXXpvdd989M2fOTJ8+ffLjH/84vXv3zsyZM3P77bdn4MCBSZLu3bvnnHPOqXX/48aNS+/evbPrrrvmkEMOyfbbb5/OnTsnSd5+++0MGTIkQ4YMqcy2ueKKK7LBBhvU3xMEAAAAVmpNOrjZYYcd8oc//CHHHntspk6dmh//+MeLtOnevXuGDh260C3Ea+upp55a7Iye+dq0aZOrr746p556ap3HAAAAAFY9TTq4SZJDDjkk//jHP3Lttddm6NCheffdd9OyZctsvvnmOfLII3PGGWekTZs2dep7xx13zO9///s89dRTGTVqVCZOnJgpU6akpqYma621VrbZZpvsu+++OeWUUyozcQAAAADma/LBTZJstNFGueqqq3LVVVfVaru99967cprT4rRv3z7HHHNMjjnmmBUtEQAAAGiCmuzFiQEAAACKTnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABSU4AYAAACgoAQ3AAAAAAUluAEAAAAoKMENAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABSU4AYAAACgoAQ3AAAAAAUluAEAAAAoKMENAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABSU4AYAAACgoAQ3AAAAAAUluAEAAAAoKMENAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABSU4AYAAACgoAQ3AAAAAAUluAEAAAAoKMFNkn/+858555xz0qNHj7Rt2zZrr712evbsmV/84heZMWNGvY3zpz/9Kf369UvXrl2z+uqrp2vXrunXr1/+9Kc/1dsYAAAAwKqjRWMX0Njuv//+HHvssZk6dWrlsRkzZmTUqFEZNWpUbrjhhgwdOjSbb755nceYN29eTj311AwaNGihx99777289957ueeee3LKKadkwIABadZMlgYAAAB8oUmnBC+88EK+9a1vZerUqWnXrl0uvfTS/O1vf8sjjzyS7373u0mSN954IwcddFCmTZtW53EuuOCCSmizww475LbbbsvIkSNz2223ZYcddkiS3HDDDfmP//iPFX9SAAAAwCqjSc+4OeusszJz5sy0aNEiw4YNy6677lpZt88++2SLLbbIeeedlzfeeCNXXnllLrnkklqP8cYbb+SKK65Ikuy000557LHH0rp16yRJz549c+ihh6ZXr14ZNWpUfvGLX+Skk05aodk9AAAAwKqjyc64GTlyZB5//PEkycknn7xQaDPfOeeck6222ipJcu2112bOnDm1Hueaa65JTU1NkuS6666rhDbztWnTJtddd12SpKamJldffXWtxwAAAABWTU02uLnnnnsqyyeeeOJi2zRr1izHHXdckuSTTz7Jo48+WqsxyuVy7r333iRJjx49sssuuyy23S677JItt9wySXLvvfemXC7XahwAAABg1dRkg5snnngiSdK2bdvsuOOOS2zXq1evyvKTTz5ZqzHGjh2bCRMmLNLP0sZ57733Mm7cuFqNAwAAAKyamuw1bl599dUkyeabb54WLZb8MvTo0WORbZbXK6+8sth+lmecTTbZZLnHeffdd5e6fvz48ZXliRMnLne/RVAzdUpjl9AkLOs9RP3wfq4e72lWJf52VIe/G9Xh/Vwd3s/V4z1dHSvTe3rB79zzL5uyoppkcDNr1qxMmfLFAda1a9eltl1rrbXStm3bTJ8+faEAZHks+OZa1jjdunWrLNd2nAW3XZadd965Vn3TNHT7dWNXAPXLexqoLX83WJV4P7OqWVnf05MnT87GG2+8wv00yVOlFry1d7t27ZbZvm3btkmSzz77rMHGmT9GXcYBAAAAVk1NdsbNfC1btlxm+9VXXz1JMnPmzAYbZ/4YdRlnWTN0Zs2alddeey3rrrtuOnXqtNRTw4pi4sSJldlBI0eOzPrrr9/IFVFb9uHKzf5b+dmHKz/7cOVnH67c7L+Vn3248lsZ92FNTU0mT56cJNluu+3qpc/if4NvAK1ataosf/7558tsP3v27CRZ5Fbe9TnO/DHqMs6yTsNKvriWz8pq/fXXX67nSHHZhys3+2/lZx+u/OzDlZ99uHKz/1Z+9uHKb2Xah/VxetSCmuSpUu3bt68sL89pSdOnT0+yfKdV1XWc+WPUZRwAAABg1dQkg5tWrVplnXXWSbLsq1N//PHHlVClNhcBThaeCVObOz/VdhwAAABg1dQkg5sk2XrrrZMkb7311lJv0fXaa69Vlrfaaqs6jfHlfup7HAAAAGDV1GSDmz322CPJF6coPffcc0tsN2LEiMry7rvvXqsxNtlkk3Tp0mWRfhbnscceS5JssMEG9X4+HAAAALByarLBzWGHHVZZvummmxbbZt68ebn55puTJB06dEjv3r1rNUapVErfvn2TfDGj5umnn15su6effroy46Zv374plUq1GgcAAABYNTXZ4GbnnXfOnnvumSQZNGhQnnrqqUXaXHnllXn11VeTJGeddVZWW221hdYPHz48pVIppVIpJ5xwwmLHOfvss9O8efMkyZlnnrnIrb5nzpyZM888M0nSokWLnH322SvytAAAAIBVSJMNbpLk2muvTevWrVNTU5M+ffrkv//7v/P000/n0UcfzWmnnZbzzjsvSdK9e/ecc845dRqje/fuOffcc5Mko0aNyu67754//OEPGTVqVP7whz9k9913z6hRo5Ik5557brbYYov6eXIAAADASq9ULpfLjV1EY7r//vtz7LHHZurUqYtd37179wwdOjSbb775IuuGDx9eOX3q+OOPz+DBgxfbx7x58/Ld7343N9544xLrOPnkkzNw4MA0a9akszQAAABgAU0+JTjkkEPyj3/8Iz/84Q/TvXv3tGnTJh06dMhOO+2Uyy+/PC+88MJiQ5vaaNasWQYNGpShQ4emb9++6dKlS1q2bJkuXbqkb9++efDBB3PDDTcIbQAAAICFNPkZNwAAAABFZYoHAAAAQEEJbgAAAAAKSnADAAAAUFCCGwAAAICCEtwAAAAAFJTgBgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluqHeTJk3KAw88kIsuuigHHHBAOnbsmFKplFKplBNOOKFBxrztttvSp0+frLfeemnVqlU22mijHHvssXnqqacaZLxVXbX24SWXXFLpd1k/w4cPr7dxV3WjRo3KT37yk/Tp0yddu3bN6quvnnbt2qV79+458cQT88QTT9T7mI7B+lWtfegYbBhTp07N7bffnnPOOSe9evXK5ptvnjXXXDMtW7ZM586ds/fee+fnP/95Pvzww3ob809/+lP69etXeb907do1/fr1y5/+9Kd6G6MpqdY+HDx48HIfg4MHD66fJ0fOP//8Bvn75rOwOupz//kcbFjL+9ruvffe9TLeKn0MlqGeJVniz/HHH1+vY82YMaN84IEHLnG8Zs2alS+55JJ6HbMpqNY+vPjii5c61oI/jz76aL2Nuyrbc889l+v1PO6448qzZ89e4fEcg/WvmvvQMdgwHnrooeV6TTt27Fj+85//vEJjzZ07t3zyyScvdZxTTjmlPHfu3Hp6dk1DtfbhTTfdtNzH4E033VR/T7AJe+GFF8otWrSo179vPgurp773n8/BhrW8r22vXr1WaJymcAy2CDSgDTfcMD169MiwYcMapP+TTjopDz74YJKkd+/eOeuss9KlS5eMHj06P/vZzzJmzJhccsklWX/99XPqqac2SA2ruobeh/ONHj16qes32WSTBh1/VTFhwoQkSZcuXXLkkUdmzz33zIYbbpi5c+fmqaeeypVXXpn33nsvN998c+bMmZNbb711hcZzDNa/au/D+RyD9atbt27p3bt3dtxxx3Tr1i3rr79+5s2bl3fffTdDhgzJXXfdlSlTpuTQQw/NyJEjs/3229dpnAsuuCCDBg1Kkuywww4577zzstlmm2XMmDH5+c9/nhdeeCE33HBDOnXqlJ/97Gf1+RRXedXah/P95S9/SZcuXZa4vmvXrivUP8m8efNy6qmnpqamJp07d86kSZPqpV+fhdXRUPtvPp+DDef73/9+fvCDHyxxfdu2bVeo/yZxDDZ2csSq56KLLirff//95ffff79cLpfLY8eObZDZGo888kil30MOOaRcU1Oz0PrJkyeXN9xww3KScocOHcofffRRvY29qqvWPlzwXzmoHwcddFD5D3/4wyLHw3yTJ08ud+/evfK6jxgxos5jOQYbRjX3oWOwYSxp3y3o7rvvrrz2/fr1q9M4r7/+euVfnnfaaafyjBkzFlo/ffr08k477VROUm7RokX5zTffrNM4TVG19uGCM27Gjh1bpz5YfldffXU5SblHjx7lf//3f6+XmRQ+C6unIfafz8GGNf+1vfjiixtsjKZyDLrGDfXuP//zP3PwwQdn3XXXbdBxrrjiiiRJixYt8qtf/SrNmzdfaH3Hjh1z+eWXJ0k++eST3HDDDQ1az6qkWvuQ+vfAAw/kqKOOWuR4mK9jx4658sorK78PGTKkzmM5BhtGNfchDWNJ+25Bhx12WLbccsskyeOPP16nca655prU1NQkSa677rq0bt16ofVt2rTJddddlySpqanJ1VdfXadxmqJq7UOq55133smFF16YJPnNb36Tli1b1ku/Pguro6H2Hyu/pnIMCm5YKU2bNi2PPPJIkmS//fZb4vThww8/PGussUaS5O67765afVBkvXv3riyPGTOmTn04BhtXfexDGl/79u2TJLNmzar1tuVyOffee2+SpEePHtlll10W226XXXaphAv33ntvyuVyHatlcVZkH1Jdp59+ej777LMcf/zx6dWrV7306bOwehpi/7Hya0rHoOCGldKzzz6bzz//PEmW+se7ZcuWlf+ZffbZZzNnzpyq1AdFNnv27Mry8vyr8uI4BhtXfexDGtfrr7+eF198MckXwUttjR07tnI9pGV9iZm//r333su4ceNqPRaLt6L7kOr54x//mAceeCBrr7125V/n64PPwupoqP3Hyq8pHYOCG1ZKr7zySmV5Wf+zNH99TU1N3nzzzQati7rr06dPOnfuvNCtVi+77LJ8/PHHjV3aKmfEiBGV5a222qpOfTgGG1d97MMvcww2vBkzZuTNN9/MVVddlV69elVOczr77LNr3VddjsEkefXVV2s9Fv+nPvfhl5144onp0qVLWrZsmY4dO2aXXXbJf/zHf+S9995b4b6bsk8++SRnnXVWkuTyyy9Px44d661vn4UNryH335f5HGw4d9xxR7beeuu0adMm7du3zxZbbJHjjz8+jz766Ar125SOQcENK6V33323srysuyx069atsjx+/PgGq4kV89BDD2Xy5MmZM2dOJk+enBEjRuTf//3fs+mmm1ZOB2DFzZs3L5dddlnl96OOOqpO/TgGG0997cMvcww2jMGDB6dUKqVUKqVt27bp3r17zjnnnHzwwQdJkn/7t39L//79a92vY7B6Gmofftnw4cMzceLEzJkzJx9++GGeeeaZXHrppdl8880zYMCAFe6/qTrvvPPy/vvvZ/fdd8/JJ59cr307DhteQ+6/L/M52HBeeeWVvPrqq5k5c2Y+++yzvPXWW7n55puzzz77pF+/fvn000/r1G9TOgbdDpyV0rRp0yrL7dq1W2rbBW8v99lnnzVYTdTNdtttl8MOOyw777xzunTpkjlz5uT111/PLbfckmHDhuWTTz7JEUcckfvvvz8HHHBAY5e70rv66qszcuTIJF+c77vjjjvWqR/HYOOpr304n2OwcXz1q1/NwIED07Nnzzpt7xhsfCu6D+fbdNNNc/jhh2fXXXetfLF4++23c+edd2bIkCGZNWtWvve976VUKq28t7FtJI8//nhuuOGGtGjRIr/5zW9SKpXqtX/HYcNq6P03n8/BhtOmTZsceuih2XfffdOjR4+0a9euEor95je/yYcffph77rknffv2zUMPPZTVVlutVv03qWOwsW9rxaqvIW4lfdJJJ1X6HDNmzFLbDho0qNL2d7/7Xb2M39Q01O3AP/7446Wu/81vflMZt0uXLuWZM2fW29hN0fDhwyu3Du7cuXP5gw8+qHNfjsHGUZ/7sFx2DFbDxx9/XB49enR59OjR5ZEjR5Zvu+22cr9+/cpJyptttln5/vvvr1O/P/nJTyr75pFHHllq2wVvlfpf//VfdRqvKWuofVgul8uffPJJed68eUtcf//995dXW221cpJymzZtyhMnTqzzWE3N7Nmzyz169CgnKZ977rmLrF/wNtB1vZ20z8KGU439Vy77HGxoS3t933///fIOO+xQeX2vvfbaWvfflI5Bp0qxUmrVqlVlef4FqZZkwYt4fvlWqTSuDh06LHX9aaedVpkWO2HChNx5551VqGrV9PLLL6dfv36pqalJq1atcscdd6Rz58517s8xWH31vQ8Tx2A1dOjQIdtuu2223Xbb9OzZM0cffXTuuuuu3HzzzXn77bfTt2/fDB48uNb9Ogarp6H2YZKsueaaS51FcPDBB+eiiy5K8sX1dQYNGlSncZqin/3sZ3nttdey4YYb5uKLL26QMRyHDaca+y/xOdjQlvb6rrvuuhkyZEhlls11111X6/6b0jEouGGlNP/2m8myp7pNnz69srysKXQUz2mnnVZZXvCCrCy/sWPHpk+fPvn444/TvHnz3H777dlrr71WqE/HYHU1xD5cXo7BhvGd73wnRx55ZObNm5czzjgjH330Ua22dww2vhXdh8vr1FNPrYQ7jsHl89prr+W///u/k3zxZXDBUyTqk+OwYVRr/y0vn4MNZ9NNN83++++fJHnrrbcqd0tcXk3pGHSNG1ZKC1586t13381OO+20xLYLXnxqwYtSsXLYeuutK8vurFF7EyZMyH777ZcJEyakVCrlxhtvTN++fVe4X8dg9TTUPlxejsGG07dv3/zxj3/M9OnT8+c//7lWF7j98jG4NI7BhrMi+3B5de7cOeuss06mTJniGFxOV199dT7//PNsuummmTFjRm6//fZF2rz00kuV5b/+9a95//33kySHHHLIcgcFPgsbRrX23/LyOdiwtt566zz44INJvnh9u3TpstzbNqVjUHDDSmnBP6CvvfbaUtvOX9+iRYtsscUWDVoX9a+hLkTXFEyZMiX7779/3n777SRf/KvVcccdVy99OwaroyH34fJyDDacTp06VZb/+c9/1mrbuhyDSf3dPp4vrMg+rA3HYe3MPyXi7bffzre//e1ltv+v//qvyvLYsWOX+4u/z8KGUa39t7wcfw1rRV7fpnQMOlWKlVLPnj3TsmXLJEufsvj555/n6aefrmxT2yuV0/heeeWVynJtEvim7tNPP83Xv/71yut32WWX5fTTT6+3/h2DDa+h9+Hycgw2nAX/5ba207Y32WSTyv5Y1tT9xx57LEmywQYbZOONN65dkSzViuzD5TV58uRMmTIliWOwaHwWNg0+BxvWiry+TekYFNywUmrfvn323XffJMnDDz+8xGnid911V6ZOnZok6devX9Xqo/4MGDCgstyrV69GrGTlMWPGjBx00EF5/vnnkyQXXHBBzj///HodwzHYsKqxD5eXY7Dh3HHHHZXl7bbbrlbblkqlyilzr732WuV/SL/s6aefrvwrY9++ff3LcT1bkX24vAYOHJhyuZzEMbi8Bg8enHK5vNSfBS94++ijj1Yer0246bOwYVRr/y0vn4MNZ+zYsXnooYeSJJtttlk22GCDWm3fpI7Bqt7DiiapLreSvummmyrbXHzxxYtts+DtTQ899NByTU3NQusnT55c3nDDDctJyh06dCh/9NFHK/hMmq6G2If/+Mc/ym+++eZS+xgwYEClj/XWW6/82Wef1aH6pmX27NnlPn36VF63s846q079OAYbT7X2oWOw4dx0003LvGXsVVddVXltN9lkk0WOn0cffXSZf3dff/31cvPmzctJyjvttFN5xowZC62fMWNGeaeddionKbdo0aL8xhtvrNDzakqqsQ/Hjh1bfv7555c6xv33319u2bJlOUm5devW5XfffbfWz4XFW57bSfssLK762H8+BxvWfffdV54zZ84S13/5duBXXnnlIm0cg//HNW6od0888UTeeuutyu/zp/cmX1wt/Mu3zDzhhBPqNM4+++yTo48+Orfffnvuu+++7L///jn77LPTpUuXjB49OpdeemneeeedJMnll1+etdZaq07jNEXV2IfPPfdcTjnllPTu3TsHHHBAtttuu6yzzjqpqanJa6+9lltuuSXDhg1LkjRv3jwDBw5s9LsKrAy+/e1vV163ffbZJyeffPJCF/D7spYtW6Z79+51Gssx2DCqtQ8dgw3nkksuyTnnnJMjjjgie+yxRzbbbLO0a9cu06ZNy+jRo3PLLbfkySefTPLF/hs4cGCaN29e63G6d++ec889N5dddllGjRqV3XffPeeff34222yzjBkzJpdffnleeOGFJMm55567Up7T31iqsQ/HjRuX3r17Z9ddd80hhxyS7bffPp07d07yxbU9hgwZkiFDhlRm21xxxRW1/tdoGp7PwpWXz8GGdeaZZ2bOnDk54ogjsuuuu2bjjTdO69atM2XKlAwfPjwDBgyofMfYY4896nw6eJM5Bhs7OWLVc/zxx1dSz+X5WZzlSVfL5S/+NfHAAw9cYt/NmjVb6vYsXjX24YLrl/azzjrrlO+5554GfsarjtrstyTljTbaaLH9OAYbT7X2oWOw4Wy00UbL9dp27dq1PGzYsMX2sTwzbsrlcnnu3Lnlk046aanjnHzyyeW5c+c20LNdNVVjHy64fmk/bdq0KQ8YMKCBn3HTU18zbspln4WNoT72n8/BhrW8f0ePOOKI8scff7zYPhyD/8eMG1ZqrVu3ztChQ3Prrbdm8ODB+fvf/55PPvkk6667bvbcc8+cccYZ2XXXXRu7TBbjwAMPzKBBg/LUU0/lhRdeyAcffJAPP/ww5XI5a6+9drbffvt84xvfyAknnJA11lijsctlCRyDKy/HYMP5y1/+kqFDh+bJJ5/MW2+9VXltW7dunc6dO+erX/1qDj744Bx11FFp06bNCo3VrFmzDBo0KEcccUQGDhyYZ599NlOmTEnHjh3Ts2fPnHbaaTnggAPq6Zk1HdXYhzvuuGN+//vf56mnnsqoUaMyceLETJkyJTU1NVlrrbWyzTbbZN99980pp5xSmYlDMfksXDn5HGxYv/3tbzNixIg89dRTefvttzNlypRMnTo17dq1S7du3bLbbrvl+OOPr5djoykcg6Vy+f/NvwQAAACgUNxVCgAAAKCgBDcAAAAABSW4AQAAACgowQ0AAABAQQluAAAAAApKcAMAAABQUIIbAAAAgIIS3AAAAAAUlOAGAAAAoKAENwAAAAAFJbgBAAAAKCjBDQAAAEBBCW4AAAAACkpwAwAAAFBQghsAAACAghLcAAAAABSU4AYAquyEE05IqVTKxhtvvEL9bLzxximVSjnhhBPqpS6geoYPH55SqZRSqZThw4c3djkAFJjgBgCWw7hx4ypfslbkh5XTgl+yAQCqSXADAAAAUFAtGrsAAFgZbLDBBhk9evQS12+33XZJkp122ik33XRTVWoaN25cVcYB6t/ee++dcrnc2GUAsBIQ3ADAclhttdWy7bbbLrNd27Ztl6sdAAAsD6dKAQAAABSU4AYAGtknn3ySiy66KNtss03atm2bDh06ZK+99sott9yy1O2Wdlepxd2x5o9//GP23XffdOrUKa1bt86WW26Z8847Lx999NEya3znnXfy/e9/P5tssklatWqVLl265LDDDsujjz6aJLnkkkvqfPHeIUOGVLZ97bXXlvpcS6VS7rnnnsW2+cY3vpFSqZRddtlliWM9//zz+d73vpctt9wy7dq1S9u2bbPlllvm+9//ft54441a1/7l+ubvi+eeey4nnHBCNtlkk6y++uqLfV0+/fTT/Pd//3d23333dOrUKS1btsz666+fQw45JEOGDFmh02gWvJj24MGDkyR33XVX+vTpk86dO6dt27bZfvvtc91112XOnDmV7crlcm699dbsvffe6dy5c9q0aZN/+Zd/yW9+85vlqmdFntP06dPzhz/8Iaecckq++tWvZs0118xqq62WTp06pVevXrniiivy2WefLbOGu+++O4cddli6du2a1VdfPe3bt8+mm26aPffcMxdeeGFGjhy5yDbLe6e3wYMHV17XxZ2qWJv3wbLuKvXlmur6d2K++++/P9/4xjfSqVOntGnTJt27d8+5556b999/f7G1A1AgZQBghSUpJyn36tVrmW2PP/74cpLyRhttVH7ttdfKG2+8cWX7L/+cfvrpS+xno402KicpH3/88Yuse/TRRyt9PPLII+Vjjz12iWNsvvnm5YkTJy5xnEceeaTcrl27xW5bKpXKl156afniiy+uPFZbkyZNqmz761//epH148aNW2jMs846a5E2c+bMqdR4/vnnL7J+7ty55R/+8IflUqm0xNehRYsW5QEDBiy2xgVfz8VZcF/8+te/Lrdo0WKR/hf08MMPl9dZZ50l1pKkfOCBB5anTZu2HK/gosaOHVvp56abbip///vfX+I4hx9+eLmmpqY8a9as8je/+c0ltvvud7+71DFX9Dn16tVrqdsmKW+yySblV199dbHb19TUlI888shl9rHjjjsusu2Cx+TS3HTTTZV+xo4du8j62rwPFnxPPfroo0utaUX+TpTL5fIPfvCDJW673nrrlZ9//vml/j0BoHGZcQMAjWTGjBk55JBD8uGHH+Y//uM/Mnz48IwaNSrXX399unbtmiT53//93/zlL39ZoXEuvPDC/P73v89hhx2Wu+66K88991wefPDBHHTQQUmSt956Kz/84Q8Xu+3bb7+dQw89NJ999llatGiRM888M4888kieffbZ3HTTTdlqq61ywQUX5M9//nOd6+vUqVO23nrrJFnszIMvP7a4Ns8991xlNkavXr0WWX/mmWfm6quvTrlczl577ZUbb7wxw4cPz8iRI3P99ddnm222SU1NTU477bTcd999dX4uzz77bM4444x07do1v/zlL/P000/niSeeyH//939X2jz55JM54IAD8uGHH2bdddfNT3/609x///157rnncv/99+fYY49Nkjz44IM5/vjj61zLfL/5zW/y61//OgceeGBl/99zzz352te+luSLmTg33XRTzj333AwZMiT9+/fPAw88kOeeey633357evTokSS5/vrrl7if6+M51dTUZLvttssFF1yQu+++O88880yefvrp/OEPf8jRRx+dZs2aZezYsTnssMMya9asRbb/9a9/nTvuuCNJsscee2Tw4MF5/PHH8/zzz+ehhx7KlVdemf333z/Nmzdf4dd0WZbnfbC8VvTvxM9//vP86le/SpJ069Yt//u//5tnnnkmjz32WC644IJ8+umn+eY3v5kZM2bU/QkD0LAaOzkCgFVB6jDjJkl5zTXXLL/00kuLtHnzzTfLrVq1KicpH3rooYvtZ3ln3CQp//SnP12kzbx588p9+vSpzDaZNGnSIm0OO+ywSh933333IuunT59e3nnnnZc4s2R5zZ8Rst566y2y7sQTTywnKR9yyCGVWT4ffvjhQm0uv/zycpJy8+bNy1OnTl1o3bBhwyq13XDDDYsdf+bMmeV99tmnMsNhzpw5tap//r5IUt5uu+3KH3/88WLbff7555WZE9/4xjfK06dPX2y7gQMHVvobNmxYrWoplxeecZOkfPbZZy/SZvr06ZW611lnnXKpVCpfc801i7SbOHFiuX379kt8L9bXc3rjjTeW+pweeuihcrNmzZa4H/fcc89ykvLXvva1pe6/L793yuX6n3GzrPdBubz8M25W5O/ExIkTK+s333zz8uTJkxdp8+STT5ZbtmxZGcuMG4DiMeMGABrRf/3Xf2WbbbZZ5PHNN988hx12WJLkiSeeWKExdtxxx/z4xz9e5PFSqZR//dd/TfLFbIennnpqofUTJkzI/fffnyT55je/WalnQW3atMnAgQNXqL7ki1sjJ8n777+/yHVu5s+wOe6447LJJpukXC7nscceW2ybf/mXf0n79u0XWnfZZZclSY444oicfPLJix2/VatW+eUvf5kk+ec//1m5dk9d/O///m86dOiw2HW33357xo0bl1atWuXmm29OmzZtFtvuu9/9bnbeeeckqVyjpq66deuWn//854s83qZNm8rslw8//DBf+9rXctZZZy3Sbr311ku/fv2SJI8//vgi6+vrOW2xxRZLfR777bdfDj300CRZ7HWO5l+rZbfddkuLFku+ceraa6+91HHqy9LeB7VV178Tv/3tbyuzk6655pp07NhxkTa77bZbTj/99HqpE4CGIbgBgEZSKpXSv3//Ja7fcccdkyQfffRRPvnkkzqP079//yVeNHj+GMkXp0Ut6NFHH83cuXOTJN/5zneW2P/222+f7bffvs71JQuf3rTgqVDjx4/P2LFjUyqV0qtXr0rAs2CbuXPn5sknn0zyfwHQfFOnTq20/eY3v7nUGrbaaqvKF9svh1jLq1u3btlzzz2XuH7+aVi9evVKp06dltrXXnvttUK1zHf44YdntdVWW+y6Bffbt771rSX2Mb/dxx9/vMh7saGe0+TJk/Pmm2/mpZdeqvzM7//vf//7Iu3XX3/9JF9chHfKlCnL7L8hLet9UBsr8nfi4YcfTpJ07NgxBxxwwBL7OO6441a8UAAajOAGABpJx44ds8466yxx/YIzA6ZNm1bnceZfo6S2Y7z00kuV5QUDnsXZaaed6ljdF9Zdd91KnQuGMvOXt95663Tq1Gmxwc3zzz+fqVOnJln0+jYvvPBC5s2blyT59re/XbmLz5J+5n/hnz97o7a+8pWvLHX9qFGjkiR/+ctfllnLFVdcsUK1zNe9e/clrltwRsjytvvy+6Q+n9OTTz6Zb33rW1lnnXXSuXPndO/ePdttt13l5/rrr0+SxQYz82cPvfXWW9l8881z0kkn5bbbbsu77767xOfVUJb1PqiNFfk7Mf8Y/upXv5pmzZb8v/3bbbddWrZsuYKVAtBQBDcA0EiWdErJfAt+0Zo/86W+x1naGB9//HFleVkzKZa1fnnMD11GjBhReWz+8vzAZv5///GPf1RuYz6/TfPmzReZ5TBp0qQ61VLXC7WutdZaS11fl3pmzpxZp1rmW979X9f3SX09p0suuSR77LFH/vjHPy7zFvWL2/6kk07Kj3/847Ro0SKffvppbrrppvTv3z/dunXL5ptvnnPOOWeRWWUNZVnvg9pYkb8T84/hZR2fzZs3r9opZADU3pJPAAYAqKK99947AwYMqFznpkePHosENxtuuGE23njjjBs3Lo899lgOO+ywSpuvfvWrWWONNRbqc8EvsgMGDMhuu+22XLXU9Yv3su5YNL+eAw44YLHXnVkZ1cdzeuSRR/Kf//mfSZJNN900P/rRj7LHHntkww03TNu2bSvXrLnooovyX//1X0vs59JLL82pp56aW265JY888kiefvrpzJgxI2PGjMlVV12V6667Lv/zP/+T733ve3Wqc3lV485VADQdghsAYLEWDC8mT56cDTbYYIltJ0+evMLjffk6N+3bt89bb71Vub7NfHvvvXcGDx6c4cOH59BDD61cMPfL17dJstApJm3atMm22267wnWuiHXWWScTJkzI559/3ui11Jf6eE7zT4Faa6218vTTTy9xhsiyZuIkyUYbbZQf//jH+fGPf5w5c+bk2WefzR//+McMGDAgs2bNyg9+8IN87Wtfyw477FDZZv6slfmn1S3J9OnTl/cpFcJaa62V999/f5nH59y5cxeaYQdAsThVCgBYrAXvYvPcc88tte3865ysiPXXX79ynZXhw4dXZtLMv77NfAte5+bFF1/Mp59+mmTR69skX8zCmX9h5vkXMG5M88OCUaNG5fPPP2/kaupHfTynl19+OUnSu3fvpZ7WU9v32WqrrZbddtst11xzTW699dYkSblczpAhQxZqN/9OZMu6CPgbb7xRq/Eb2/xj+MUXX1xqKDV69OjMnj27WmUBUEuCGwD+//buLSSqtg3j+GWCYxspLIssmQSjVCpCgwkyJUtECTLMEzMNpUjKoiI6qDSkg2jjgZmGZUxqG9sHkQRmiSllapFEVgdtTC2jaCNWRr4HMoPWzPC+abn6vv/vaJz1rLWeR2YO5uJe9wM4FBERYa9EKC4udjru3r17Dnf5+RV9+9zYGhD/WEnTt8/NuXPnJPVWTDjaxcfHx0cWi0WSdPz48UGpDBoI23bWth4s/wsGY03fvn2T5LqipbGxUbdu3fql60tSZGSk/fWPzY39/f0l9Tb3bW5udnj+169fdfbs2V++/1CwrfnNmze6cuWK03HHjh37U1MCAPwCghsAAODQ5MmTFRsbK0k6c+aMLly48NOYrq4urVq1atDuaQtl2tvbVVZW1u89G7PZLLPZrJ6eHh04cEBS73bVfXc+6mvbtm2SercGj4+Pd1lV8eXLF+Xl5enz588DWoczycnJ8vPzkyRt3rxZVVVVLsdXV1f3a9ZsRIOxpqlTp9qPPXny5KdzOjo6XG5JL0klJSX2AMiRq1ev2l/bghqbvtVa+/btc3j+xo0b9fLlS5dzMJrk5GSZTCZJ0oYNGxzuxlVbW6u8vLw/PTUAwH9AcAMAAJzav3+/fVebZcuWKSMjQ5WVlaqvr5fValVoaKhu376tOXPmDMr9+v6Afv/+/U/9bWxsYY7tMSlH/W1sYmJitH79eklSVVWVAgMDtXPnTlVUVOju3bu6efOmrFar0tLSNHHiRK1du9ZlADAQJpNJZWVlMplM+vTpkxYsWKDly5frzJkzqq+vV11dnS5duqTMzEzNnDlTYWFhun///m+Zy2AZjDWtWLFCUm/FTXh4uHJzc1VTU6Oamhrt3btXs2bN0oMHDzR37lyn80hKStLkyZOVnp6ukpIS1dbWqrGxUeXl5dq0aZP9HqNGjVJiYmK/c2fPnm2/dmFhoVJSUlRZWamGhgadOnVKkZGRysvL+9fNrY3C19dXmZmZknq3SQ8JCVF+fr7q6upUXV2t7du3KzIyUr6+vvZH1GyPFgIAjIPmxAAAwKmAgABduHBBcXFx6uzsVG5urnJzc/uNyczM1Pfv31VXVydPT88B3W/SpEkKCAiwV1382N/GJiIiQlar1f63o3Cnr5ycHHl7eys7O1vt7e3KyspyOnbkyJG/dVcgi8Wi69evKyEhQS9evFBpaalKS0udjv9xpywjGuia4uPjtXLlSh09elStra3KyMjod9zd3V05OTl69+6damtrnV731atXys/PV35+vsPjo0eP1smTJ+0VQn0VFRUpPDxcr1+/ltVq7ff5knqriYKDg1VTU+P0/ka0detWPXv2TIcOHdLz58+Vnp7e7/i4ceN0+vRpLV26VJIG/B0GAAw+Km4AAIBLixYtUlNTk1avXi2z2SwPDw9NmDBBsbGxKi8vV1ZWlj58+CCp94fxQP24g5Qjfd8fNmyY5s+f7/Kabm5u2rFjhx49eqQtW7YoNDRU3t7ecnd3l5eXl4KCgpSYmCir1aq2tjYNHz58wOtwxWKx6PHjxyooKFBsbKx8fX3l4eEhT09P+fn5KSoqSrt27dLDhw/tlSJGN9A1FRUVqbi4WGFhYfLy8pLJZJLZbFZSUpJqamrsVVPONDU1affu3Vq8eLGCgoI0duxYubu7a8yYMbJYLMrMzFRzc7Oio6Mdnj99+nQ1NDRozZo19s+5j4+PoqOjdfnyZe3Zs2dQ/k9/mpubmwoKCnTx4kVFRUXJ29tbnp6eCggIUEZGhhobGxUaGjqo32EAwOBy6+np6RnqSQAAgL/bwoULVVFRoXnz5tm35wbwd2hpabFXIR0+fFipqalDPCMAQF9U3AAAgAFpbW21N6S17eAE4O9x4sQJ+2u+wwBgPAQ3AADAJUe7/Nh0dXUpJSVF3d3dkvTXPNYD/L/o7OxUW1ub0+ONjY3Kzs6WJIWEhCg4OPhPTQ0A8C/RnBgAALiUlpamzs5OJSQkKCQkRN7e3vr48aPu3LmjgwcP2oOd1NRUzZgxY4hnC6Cvjo4OBQYGasmSJYqOjta0adNkMpnU2tqq8vJyHTlyRF1dXXJzc9P+/fuHeroAAAfocQMAAFyKiIjQjRs3XI6Ji4tTaWnpb2/qC+C/efr0qfz9/V2O8fDwUGFhIRVzAGBQBDcAAMClhoYGnT9/XteuXVNLS4s6OjrU09Oj8ePHy2KxKDk5WTExMUM9TQAOdHd36/z58yovL1ddXZ06Ojr09u1bjRgxQlOmTNHChQu1bt06mc3moZ4qAMAJghsAAAAAAACDojkxAAAAAACAQRHcAAAAAAAAGBTBDQAAAAAAgEER3AAAAAAAABgUwQ0AAAAAAIBBEdwAAAAAAAAYFMENAAAAAACAQRHcAAAAAAAAGBTBDQAAAAAAgEER3AAAAAAAABgUwQ0AAAAAAIBBEdwAAAAAAAAYFMENAAAAAACAQRHcAAAAAAAAGBTBDQAAAAAAgEER3AAAAAAAABgUwQ0AAAAAAIBBEdwAAAAAAAAY1D+vMMFLMMQTTQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 432, "width": 567 } }, "output_type": "display_data" } ], "source": [ "from scipy import stats\n", "\n", "sample = data_1 # Choose which data to use\n", "\n", "stat,pvalue = stats.skewtest(sample) # Run the skew test\n", "\n", "# Print the p value of the skew test up to 30 decimal points\n", "print('The skewtest p-value is ' + '%.30f' % pvalue) \n", "\n", "plt.hist(sample) # Create a histogram\n", "plt.ylabel('Observations')\n", "plt.xlabel('Thing we\\'re measuring')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "38e616cb", "metadata": {}, "source": [ "## Run two-sample statistics\n", "\n", "### *Inferential statistics* generalize from observed data to the world at large\n", "Most often, the goal of our hypothesis testing is to test whether or not two distributions are different, or if a distribution has a different mean than the underlying population distribution.\n", "\n", "The SciPy stats package has [many hypothesis testing tools](https://docs.scipy.org/doc/scipy/reference/stats.html). For many simple cases in biology or neuroscience research, we'd like to test whether two or more distributions are different from eachother.\n", "\n", "If we know our distributions are normal (they're generated from a normal distribution!) we can use **parametric statistics** to test our hypothesis. To test for differences between normal populations, we can use the independent t-test in our stats package: `stats.ttest_ind()`.\n", "\n", "If we had paired samples, we would use a dependent t-test [as seen here](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ttest_rel.html#scipy.stats.ttest_rel).\n", "\n", "If one of our populations is skewed, however, we **cannot use a t-test**. A t-test assumes that the populations are normally distributed. For skewed populations, we can use either the [Mann-Whitney U](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.mannwhitneyu.html#scipy.stats.mannwhitneyu) (for independent samples, `stats.mannwhitneyu()`) or the [Wilcoxon Signed Rank Test](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.wilcoxon.html#scipy.stats.wilcoxon) (for dependent/paired samples,`stats.wilcoxon()`).\n", "\n", "Below, there is sample code to run three different statistical tests. **You should use *only* the one that is most appropriate for your data by uncommenting that line.**" ] }, { "cell_type": "code", "execution_count": 4, "id": "80e78e69", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "TtestResult(statistic=-2.4382276613229465, pvalue=0.026796307428331737, df=16.0)\n", "TtestResult(statistic=-2.6832815729997477, pvalue=0.027784351010990083, df=8)\n" ] } ], "source": [ "print(stats.ttest_ind(data_1,data_2)) # to run an independent t-test\n", "# print(stats.ttest_rel(data_1,data_2)) # to run an dependent t-test\n", "# print(stats.mannwhitneyu(data_1,_2)) # to run a mannwhitneyu\n", "# print(stats.wilcoxon(data_1,data_2)) # to run a wilcoxon signed rank test" ] }, { "cell_type": "markdown", "id": "2c2bb7de", "metadata": {}, "source": [ "That's it for this notebook! You can adapt this code for lots of different projects (including your final project!)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 5 }