{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## ## A/B Testing Part 2 : Bootstrap resampling \n", "\n", "--------" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# ref \n", "# https://github.com/yennanliu/hackermath/blob/master/Module_2f_ABTesting.ipynb\n", "# https://github.com/omoju/Fundamentals/blob/master/Data/data_Stats_4_ABTesting.ipynb\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "# Import libraries\n", "from __future__ import absolute_import, division, print_function\n", "\n", "# Ignore warnings\n", "import warnings\n", "#warnings.filterwarnings('ignore')\n", "\n", "import sys\n", "sys.path.append('tools/')\n", "\n", "# OP \n", "import pandas as pd\n", "import numpy as np\n", "#from scipy import stats\n", "import scipy.stats as st\n", "%matplotlib inline\n", "%pylab inline\n", "import seaborn as sns \n", "#import matplotlib.pyplot as plt\n", "import matplotlib.pyplot as pyplt\n", "from matplotlib import pyplot\n", "import matplotlib as mpl\n", "from IPython.display import display" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "\n", "# set plot style\n", "matplotlib.style.use('fivethirtyeight')\n", "matplotlib.rcParams['font.size'] = 12\n", "matplotlib.rcParams['figure.figsize'] = (10,10)" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [], "source": [ "# help func \n", "\n", "def axis_tick_frequency(ax, axis, freq):\n", " \"\"\"The frequency of the y axis tick marks\n", " Attributes\n", " ----------\n", " ax: matplotlib axis object\n", " axis: char eithher 'y' or 'x'\n", " freq: int, the integer value of which the range moves\n", " \"\"\"\n", " \n", " if axis == 'y':\n", " start, end = ax.get_ylim()\n", " ax.yaxis.set_ticks(np.arange(start, end, freq))\n", " elif axis == 'x':\n", " start, end = ax.get_xlim()\n", " ax.xaxis.set_ticks(np.arange(start, end, freq))\n", " else:\n", " raise ValueError('{argument} is not a valid axis object'.format(argument=repr(axis)))\n", " \n", " \n", " \n", "def sample(num_sample, top, with_replacement=False):\n", " \"\"\"\n", " Create a random sample from a table\n", " \n", " Attributes\n", " ---------\n", " num_sample: int\n", " top: dataframe\n", " with_replacement: boolean\n", " \n", " Returns a random subset of table index\n", " \"\"\"\n", " df_index = []\n", " lst = np.arange(0, len(top), 1)\n", "\n", " for i in np.arange(0, num_sample, 1):\n", "\n", " # pick randomly from the whole table\n", " sample_index = np.random.choice(lst)\n", "\n", " if with_replacement:\n", " # store index\n", " df_index.append(sample_index)\n", " else:\n", " # remove the choice that was selected\n", " lst = np.setdiff1d(lst,[sample_index])\n", " df_index.append(sample_index)\n", " \n", " return df_index\n", "\n", "\n", "\n", "\n", "def get_means(df, variable, classes):\n", " \"\"\"\n", " Gets the means of a variable grouped by its class\n", " \n", " Attributes\n", " -------------\n", " df: a pandas dataframe\n", " variable: column\n", " classes: column (bool) \n", " \"\"\"\n", " class_a = df[classes] == True\n", " class_b = df[classes] == False\n", "\n", " df_class_b = df.ix[df[class_b].index, :]\n", " df_class_a = df.ix[df[class_a].index, :]\n", "\n", " a = df_class_b[variable].values\n", " b = df_class_a[variable].values\n", " \n", " # difference in the means\n", " a.mean() - b.mean()\n", " \n", " raw = {\n", " classes: [False, True],\n", " variable: [a.mean(), b.mean()]\n", " }\n", " means_table = pd.DataFrame(raw)\n", " \n", " return means_table\n", "\n", "\n", "def bootstrap_ci_means(table, variable, classes, repetitions):\n", "\n", " \"\"\"Bootstrap approximate 95% confidence interval\n", " for the difference between the means of the two classes\n", " in the population\n", " \n", " Attributes\n", " -------------\n", " table: a pandas dataframe\n", " variable: column\n", " classes: column (bool) \n", " repetitions: int\n", " \"\"\"\n", "\n", " t = table[[variable, classes]]\n", "\n", " mean_diffs = []\n", " for i in np.arange(repetitions):\n", " bootstrap_sampl = table.ix[sample(len(table), table, with_replacement=True), :]\n", " m_tbl = get_means(bootstrap_sampl, variable, classes)\n", " new_stat = m_tbl.ix[0, variable] - m_tbl.ix[1, variable]\n", " mean_diffs = np.append(mean_diffs, new_stat)\n", "\n", " left = np.percentile(mean_diffs, 2.5) \n", " right = np.percentile(mean_diffs, 97.5)\n", "\n", " # Find the observed test statistic\n", " means_table = get_means(t, variable, classes)\n", " obs_stat = means_table.ix[0, variable] - means_table.ix[1, variable]\n", "\n", " df = pd.DataFrame()\n", " df['Difference Between Means'] = mean_diffs\n", " df.plot.hist(bins=20, normed=True)\n", " plot([left, right], [0, 0], color='yellow', lw=8);\n", " print('Observed difference between means:', obs_stat)\n", " print('Approximate 95% CI for the difference between means:')\n", " print(left, 'to', right)\n", "\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 0) Load data" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# titanic dataset \n", "# https://www.kaggle.com/c/titanic/data#\n", "\n", "df=pd.read_csv('train.csv')" ] }, { "cell_type": "code", "execution_count": 8, "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", "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.25NaNS
\n", "
" ], "text/plain": [ " PassengerId Survived Pclass Name Sex Age SibSp \\\n", "0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 \n", "\n", " Parch Ticket Fare Cabin Embarked \n", "0 0 A/5 21171 7.25 NaN S " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head(1)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[,\n", " ,\n", " ],\n", " [,\n", " ,\n", " ],\n", " [,\n", " ,\n", " ]], dtype=object)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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GDAAnTt3RkxMDLS1tbFv3z7s378f1tbW+Pzzz7Fv3z5oa2u3RLmJiIiIqI1T+magF198EYcPH64zrV+/fkhLS1P2EkRERESkhvgISiIiIiISBANNIjWTm5sLU1NThISEyPclJyfDxcUFFhYWCAwMxL179+Rp9+7dw7Rp02BhYQEXFxckJyerothERNQBMdAkUjPh4eEYMGCAfFsikWD+/PnYtm0bsrOzoa+vj4ULFyrk19bWRnZ2Nnbs2IGFCxfywQlERNQqGGgSqZGUlBR06dJFYfWG5ORk+Pj4YOjQoRCJRIiKikJqaipKS0shk8lw6NAhREVFQSQSYciQIfDx8UFSUpIKa0FERB0FA00iNVFSUoKYmBisWrVKYb9EIoGLi4t828bGBtra2sjNzcW1a9egpaUFOzs7ebqrqyt7NImIqFUofdc5EbWOVatWISgoCJaWlgr7ZVpNbh0AACAASURBVDJZnY97LS0tRadOnWBoaFgrraFHwQL1P36zocdy0vN13NdP+ccI1/fa8QleRG0bA00iNXDp0iWkpaXhzJkztdIMDAxqPe61tLQUhoaG0NDQaPKjYIG6v7xzcnL4pa6EDv36tcBjhDvsa0ek5hhoEqmBs2fPoqCgQD5ELpPJUFlZiaysLIwYMQKZmZnyvPn5+SgvL4etrS00NTVRUVGB3Nxc2NraAgAyMzP5KFgiImoVDDSJ1EBwcDAmTpwo396yZQsKCgqwceNG3L17F6NGjUJGRgb69euHmJgY+Pn5yYfM/fz8EBMTg82bN+Py5cs4evQovvnmG1VVhYiIOhAGmkRqQF9fH/r6/5vnZmBgAF1dXZiYmMDExAQbN25ESEgIiouL4eXlhfj4eHneDRs2ICwsDPb29jA2NsaGDRvYo0lERK2CgSaRGoqMjFTY9vf3h7+/f515u3btioSEhNYoFhERkQIub0REREREgmCgSURERESCYKBJRERERIJgoElEREREgmCgSURERESCYKBJRERERIJgoElEREREgmCgSURERESCYKBJRERERIJgoElEREREgmCgSURERESCYKBJRERERIJgoElEREREgmixQDMlJQWDBg2ChYUF+vfvj4yMDABAWloaPDw8YG5uDl9fXxQUFLTUJYmIiIioDWuRQPPUqVP44IMPEBcXh5s3b+LIkSPo3bs3ioqKEBQUhKioKFy/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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.hist()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1 ) Is \"survived or not survived\" associated with fare ?" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 549\n", "1 342\n", "Name: Survived, dtype: int64" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.Survived.value_counts()" ] }, { "cell_type": "code", "execution_count": 21, "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", "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
\n", "
" ], "text/plain": [ " PassengerId Survived Pclass \\\n", "1 2 1 1 \n", "\n", " Name Sex Age SibSp \\\n", "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", "\n", " Parch Ticket Fare Cabin Embarked \n", "1 0 PC 17599 71.2833 C85 C " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df.Survived==1.0 ].head(1)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5,1,'Fare histgram : Survived VS. non-Survived group ')" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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IMBu3ZEjR7Rz507buNK6detqwIABGjFihLZs2aKGDRtKun7H6oEHHtCiRYv02muv5fg83I4JEyaoZ8+e6tChg/z9/XXfffepVatWeuihh2x/mNyJkiVLav369SpdurRtWVBQkDZt2qQtW7booYcesi1fsWKFSpUqle05ysrRfZOTkzVhwgR1795dCxcutG03cuRItW/fXi+99JJ69uwpk8mk0NBQ7d+/X3PnztWQIUMkSU888YSGDBmi6Ohoh86zb9+++vzzz7VkyRJNnz7dtjzzbmzWD3R1795d77//vj788EMtW7ZMrVu3VvPmzdW+fftcX+N5sW/fPkVFRcnf31/S9Q+L+fn5aeHChbbwGh0drdDQUHXt2lWLFi2SyWSSJLVs2VJDhgzRnDlz9Morr9i16+TkpO+++842ZKd+/foaMmSIoqKibjlGd+jQofr00081depUffzxx2rdurVatmyp9u3bq2bNmnd8zkeOHNGOHTvk6elpW1alShW9/vrrWrZsmV588UXb8vXr1+vSpUsKCgrKtb3AwECH93X02hcdHa3w8HAFBQVpwYIFtv29vb01ZcoUh8Lr66+/rqtXryoqKsr2R9KwYcOyfa4hK09PTy1ZssTWx5K0cOFCxcTEaMaMGXr66aclXX/NT5o0SQsWLNCPP/6o9u3b37Ke3Pj6+tqdY7169fTCCy8oPDzc9juGfweGDaBAjBkzRl9//bXdzyOPPGJbnzVopaSkKCEhQSVKlFCTJk1yHDpQuXLlbOHi3LlzioyMVI8ePZSWlqZz587Zfjp06CCr1aotW7Y4VO+IESPsHme+dXfkyJFc98m8Q7R+/fpsb3k54ocffpAk20U808CBA+3eNs+qcePGOd6pzHw+rVarLl68qHPnzsnPz0/lypXL8fns3Lmz3Qei7rvvPklSixYtbMFVkvz9/eXq6nrT5yFTu3btbG8J3sqDDz6oH374Qd27d9fRo0f16aefaujQoapfv77eeOMNpaen37KNmxk8eLBdcJWkrl27qkyZMnbDINLS0rR69Wq1b99ed911V67tObrvxo0blZiYqD59+ti9Hi9cuKAOHTroxIkTOnjwoCTpu+++U8WKFdW/f39bmyaTSWPGjHH4PFu0aKH69etryZIltg/+WK1WLV26VHXq1NH9999v29bFxUXfffednn/+ebm4uGjFihWaOnWqmjVrpi5duujo0aMOHzcnLVu2tAVXSSpTpozuvfdeu9dO5tCJ8ePH24WaHj16qE6dOlq/fn22docMGWI31tyR381MlStXVmRkpEaNGqW0tDRFRETo2WeflZ+fnwYNGnTHY14fffRRu+AqXf9DuGXLllq+fLnd8mXLlqlSpUp218EbObpvXq59mc/5jdeZoUOH5noHOKv09HRt3rxZjzzyiN3dfVdX15sGwuHDh9v1sXT9WlmhQgUNHz7cbvn48eNt6+/Ejec4YsQIlS1b9o7bRfFDeEWBaNCggdq1a2f3k3V844ULFzRp0iR5e3urRo0aqlu3rurVq6eNGzfa3mLKqlatWtkuhAcPHpTVatWcOXNUr149u5/evXtLuj5e0RGZb79nygym58+fz3WfBx98UAEBAZo5c6bq1KmjwMBAzZ8/36Exn9L1u8nS9bueWZUqVSrbf4iZ6tSpk+PyAwcOqH///qpZs6YsFovteUhOTs7x+byx/cy7nTndjapYseJNn4fbde+99+qLL77Q0aNHtX37dr377rvy8PDQu+++a7tbfbtyep7Kly+vTp06ad26dbpy5Yqk62EzISHhpnfD8rJvZjDt169fttdk5rytma/JuLg41apVK9vbmbcannGjPn366Pjx49q2bZsk6eeff1ZcXFyOww8y31HYvXu3Dh48qPDwcHXp0kXbtm1Tv379lJaWlqdjZ5XTa9ZsNtu9djJf8zlNm+ft7Z3jfMu3+t28du2aTp8+bfeT2UeSVKNGDb3zzjvau3ev/vzzT33++edq06aN1q5dm+MH3fIit9/HoKAgHTt2TNu3b7fVumnTJgUEBNzy7WtH9s3LtS/zOb/x7rqzs3O25zYnmc9nTu9g3Xjtyiqn5ybzNX/jMKaaNWuqXLlyDs23fTM3nqOLi4tq1qxpew7w78GwARSJoUOH6pdfftHo0aPVqFEjlS9fXiVKlNCsWbP0999/Z9s+p2m2Mu80jRw5Ul26dMnxOI68JSbZj0PN6Rg5MZlMWrhwoXbv3q3vv/9ekZGRmjZtmt555x2tWbNGd999t0PHzoucnofExER17txZLi4umjp1qurWrauyZcvKZDJpyJAhOX5wLbexgrktL8jpfEqUKCFvb295e3srICBATZo0UUREhJ5//vmb7nezGQlym5YtMDBQq1at0vfff68ePXpoxYoVKl++fLYPXN3uvpnP09y5c3Mc9iHJ7s52fujTp4/eeustLVmyRG3atNHixYtlMpluOQds5cqV1blzZ3Xu3FnDhw/XypUr9fvvv6tFixa3VUdBvXZu9bt57NgxNW3a1G7d/PnzcwzvHh4e6tWrl3r27KmOHTtq06ZNio+Pl7u7e7Y/jrPK7bWW2+ssICBAU6ZM0bJly9SiRQutWbNGV69eveUfSY7um5/XvoJyp1Mj5tYf+TkTCYyL8IpCd+7cOW3evDnHD/a8+uqrDreT9S/7du3a5Vd5eda4cWM1btxYU6ZM0R9//KGHHnpIH3zwgW0ca24X4cy7HocPH1bjxo1ty9PS0nT8+HG7T0LfTFRUlM6ePav169fbvU2cnJysixcv3u5pFYnKlSvLYrHYvYVtNpt17do1JScn273NeTtvc3fo0EFms1nLly9Xhw4d9O2336pbt24OTW/kyL6Zd6LMZvMtX5MWi0W7d+9WWlqa3d242NjYPJ2TxWJR69attXr1ar3++utavXq17rvvvjyFl3vvvVcrV67UqVOn8nTsvMoM9AcOHFDz5s3t1sXGxuYa+G+mevXq+vrrr+2W+fr63nQfk8mkJk2aaPv27Tp16pTc3d1t7z4kJibabZuSkpLnacTc3Nz08MMP6+uvv9bMmTO1bNkyeXp62obn3Om+ebn2ZV5nDh48aBfyU1NTFRcXd8vrTNWqVeXi4qJDhw5lW5fTspupVauWdu3apatXr9oN6zl58qSSk5Pt+r9ixYo5vh5v9nt/4zleuXJFJ06c0IMPPpinOlH8MWwAhS7zDs2Nd2QiIyP1+++/O9xOtWrV9MADDyg8PNw2JU5WFy5cuK2xqI46f/58tnNo0KCBnJ2d7f4DdHV1zfYfonQ9DEnSvHnz7JZ/+eWXSkpKcriO3J7POXPmFOoE6HmZKisyMjLHO8KHDx/WwYMH7d5Wzny7MioqyrYsIyPD7kNujipdurR69OihDRs2aMmSJbp06ZIef/zxfNu3ffv2qlixot59911dvnw5WxtZh7F07NhRFy5cUHh4uG2Z1Wq1TX+WF/369dPFixc1btw4Xbx40Ta3a1Z79uzJcRhNRkaGNmzYIMn+7fzjx4/nOUjfSqdOnSRJH374od1rc+3atTp8+LBDd8BvVKZMmWxDlDLHc2/fvj3H36UrV65oy5YtcnJysgXB2rVrq2TJktnGyc+bN++2fo+CgoL0zz//KCIiQj///LOCgoJuenc3L/vm5dqXOb/tjdeZhQsX2k27lZtSpUqpXbt22rhxo93rISUlxe5Dro7o1KmTLl68qNDQULvlH3zwgSTZ9X+9evW0b98+uz8cEhMTFRERkWv7N57jZ599ppSUFNvrDv8e3HlFoTObzWrdurVmz56tS5cuqW7duoqJidHixYvl6+trN17tVmbPnq1OnTrpwQcf1KBBg9SgQQNduHBBf/31l9auXasdO3bIw8OjQM7jyy+/1Oeff66uXbuqTp06SktL04oVK5SSkmL3Fl/Tpk0VGRmp4OBgNW3aVE5OTurZs6caN26soKAgWxBq166d9u/frxUrVqh27doO/0fXqlUrVapUSaNGjdLIkSNVtmxZRUVF6Y8//sg27VBBystUWZMmTVJKSoo6d+4sX19flSxZUrGxsYqIiNC1a9f0wgsv2LZt3769LBaLxo4dq71796pcuXJavXq1UlNTb6vOwMBAffHFF3rppZdUtWpVtW3bNt/2rVChgubOnasnnnhC9913n/r27SsPDw+dOnVKO3bs0NGjR7Vz505J1z+tHRoaqgkTJujPP/+Ul5eXNmzYcFt3P3v06KFJkyZp7dq1KlOmTI4zJ2zatEkzZ85Uhw4d1KJFC1WqVElnz57VmjVrtGvXLj3++ON2dyxHjhypHTt25Os8mX5+frbzDgoKUseOHXXs2DEtWLBAFosl2wwkdyoiIkLLly9Xp06d1KRJE5UvX16nTp3S8uXLdeDAAU2cONH2O2I2m9W7d299+umnunbtmnx8fPTrr79q+/btN/0wX246d+4sV1dXBQcHKyMjw6EhA3nZ19Fr3z333KM+ffrYrjMPP/yw9u7dqxUrVjh8p3v69OmKiopS586dNXLkSLm6uioiIsI2y4Gj16qhQ4fqyy+/VHBwsPbt2yc/Pz9t27ZNK1euVOfOne1mGhg6dKjmzZungIAADRkyRJcuXdLChQtVs2bNXO+E7927V/3797edY2hoqPz8/Ow+FIl/B8IrisTnn3+u6dOn66uvvlJKSor8/f0VHh6uRYsWaceOHQ63U79+fUVGRurdd9/V2rVr9b///U933XWX6tWrp+DgYFWuXLnAzuGBBx7QH3/8odWrV+vMmTMqU6aMfHx89NVXX9mNQ3vmmWd09OhRRUREaN68eSpZsqRtyq+PPvpI7u7utjkTGzdurJUrV2rs2LEOf8tTpUqVtGLFCk2fPl2zZs1SyZIl1bZtW61bt67Y3nF46623tG7dOv30009asmSJUlJSVKVKFbVp00bjxo2zm1GhVKlSCg8P16RJkzRr1ixVqFBBgYGBGjhwYK4Tut9M69at5eHhoZMnT6p///55mu/UkX0DAgLk4eGh999/XwsWLFBycrKqVq0qPz8/u1BepkwZrVmzRtOmTVNERIRMJpMeeeQRLVmyJM/jYsuVK6euXbtq6dKl6ty5sy1UZNWzZ0+lpqYqKipKH3/8sc6ePauyZcvKx8dH7777roYNG5anY96u9957T3Xr1lVYWJimTZumihUrqnfv3nrppZfy/Y+tESNGqGLFitqyZYsiIyN1/vx5lS9fXv7+/po8ebICAwPttn/nnXeUkZGhiIgIWa1WtW3bVmvWrMn27VyOcHV1VefOnbVs2TLdfffdtxzKkNd983Lt+/DDD1W9enWFh4dr06ZNaty4sVasWGH3erwZPz8/rVq1Si+99JLee+89VapUyTYV2tChQx0e3+ri4qJ169bpjTfe0Lp16/Tll1+qRo0amjx5crZ5lr28vPT555/rzTff1PTp0+Xp6alnn31WTk5OOc6gIl2flWHy5Mm2af169+6tGTNmZJt5BMZnSkxM5IuVgWIkPT1ddevWVVBQkN57772iLgcAcjR37ly9/PLLio2NdXiMfkEYNWqUli5dmuPwLPw7MeYVKEI5jYsMDQ3VxYsX+ZABgGLjxmtVcnKyPvvsM/n6+hZpcMV/E8MGgCIUEhKiX375Re3atVPZsmW1Y8cOLVmyRE2bNs11ChwAKGxNmjRRYGCg6tevrzNnzigiIkLHjx/XokWLiro0/AcRXoEi1Lx5c23atEmzZ89WUlKSqlSpohEjRmj69Ol23yoEAEWpY8eOWrduneLj41WiRAn5+flpxowZxXZcPf7dGPMKAAAAw2DMKwAAAAyD8AoAAADDILwCAADAMAivdyi/vz4Rt4d+KB7oh+KBfig+6IvigX4oHvKrHwivAAAAMAzCKwAAAAyD8AoAAADDYBZ0AABQbFitViUnJysjIyPf2nRxcdGFCxfyrT3cnsx+cHFxkbOz8223Q3gFAADFRnJyspydnVW6dOl8a9PZ2VkuLi751h5uj7Ozs5ydnZWSkqL09HS5urreVjsMGwAAAMVGRkZGvgZXFC8mk0murq5KT0+/7TYIrwAAADAMwisAAAAMg/AKAABQjAQGBio8PDzf23366af1xhtv5Hu7hY0PbAEAgGJtxu8X72j/9PR0OTldzXV9cJMKd9R+flu+fHlRl1CscecVAACgkNzJB5VwHeEVAADAQXPmzJGvr69q1qypZs2aKSoqKtvb8Vu3blXDhg1tj/39/TVnzhy1atVKNWrU0Jw5czR48GC7dqdMmaLJkydLkrp06aKwsDClpqbKYrHor7/+sm139uxZubu7659//pEkfffdd2rTpo0sFoseffRRxcTE2Lbds2ePHnzwQdWsWVPDhg1TampqgTwnhY3wCgAA4IDY2FgtWLBAmzZt0okTJ7RixQpZLBaH9l2+fLmWLl2qY8eOqVevXtqwYYOSkpIkSdeuXdPXX3+toKAgu32cnZ3VrVs3rVixwrZs1apVat26tapUqaI9e/Zo7NixmjNnjo4cOaKhQ4eqX79+Sk1N1dWrVzVgwAD16dNHR44cUUBAgNasWZN/T0YRIrwCAAA4oGTJkkpNTdX+/fuVlpamWrVqqU6dOg7t++STT6pmzZoqU6aMLBaLGjVqpHXr1kmStmzZojJlyqh58+bZ9gsKCrILr8uXL1dgYKAk6YsvvtDQoUPVrFkzlSxZUv3795ezs7N27NihHTt2KD09XaNHj1apUqXUo0cPNW3aNB+ehaJHeAUAAHBA3bp1NWPGDM2cOVP169fX8OHDderUKYf2rVmzpt3jwMBAWyhdtmyZLZDe6IEHHtDly5e1c+dOHTt2TNHR0eratask6fjx4woJCZHFYrH9nDx5UvHx8YqPj1f16tVlMplsbXl6et7OaRc7hFcAAAAHBQUF6bvvvlN0dLRMJpNefvllubq6KiUlxbbNmTNnsu2XNURKUkBAgH766SedPHlS69atyzZkIFPJkiUVEBCg5cuXa8WKFerYsaPKly8vSfLw8NDzzz+vuLg428+pU6cUGBioatWq6dSpU7Jarba2Tpw4kR9PQZEjvAIAADggNjZWUVFRSk1NlYuLi1xcXFSiRAn5+/trw4YNOn/+vE6fPq158+bdsq3KlSurTZs2GjNmjGrVqqUGDRrkum1QUJBWrVqV7Q7tkCFDFBoaqp07d8pqterSpUv6/vvvlZSUpBYtWsjJyUmffPKJ0tLStGbNGv3222/58jwUNcIrAACAA1JTU/Xqq6+qXr168vb21tmzZ/Xyyy+rT58+8vPz0z333KOePXuqZ8+eDrUXGBioyMjIXO+6ZmrWrJnKli2rU6dOqUOHDrblTZo00dy5czVp0iTVqlVLTZs2tX25QenSpbVo0SKFh4erTp06WrVqlbp163b7J1+MmBITE6233gy5iY2NlZeXV1GX8Z9HPxQP9EPxQD8UH/RF3l24cEEVK1bM1zavXLkiFxeXfG0TeZe1H+6kn7nzCgAAAMMgvAIAAMAwCK8AAAAwDMIrAAAADIPwCgAAAMNfk90pAAAgAElEQVQgvAIAAMAwnIq6AKNzj1qj0jGV8qWtqz2H5Us7AAAA/1bceQUAAIBhEF4BAAD+o+677z5t3bo139vt0qWLwsLC8r1diWEDAACgmCu9KvSO9i+Rni4np9wjz3952N7//d//FXUJecadVwAAgH+h9PT0oi6hQBBeAQAAHOTv768PP/xQrVq1ksVi0bBhw3TlyhVJ0hdffKEmTZqodu3a6tu3r06dOmXbz2w26/PPP1fTpk1lsVg0ceJEWa3WHI9htVoVHBys+vXry9PTU61atdJff/0lKfvb8V999ZU6depkd5wFCxaoadOmatq0qSZMmKDp06fbtd+vXz999NFHtvOJjIzUqVOn5O7urvPnz9u227Nnj+rWrau0tDRJ0qJFi9SiRQvVqlVLvXr1UlxcnG3bzZs3q3nz5rJYLJo0aVKu55YfCK8AAAB5sGrVKq1YsUJ79uzRn3/+qfDwcEVFRenVV19VaGio9u/fL09PTw0fPtxuv++//16bNm3Stm3btGrVKm3cuDHH9jdt2qSff/5ZO3fuVFxcnEJDQ1WpkuMzG33zzTfauHGjfv31V/Xu3VurVq2yhcnExERt3rxZvXv3ttunevXqat68udasWWNbtnz5cvXo0UOlSpXSN998o/fff1+LFi3SoUOHdP/99+uJJ56QJJ07d06DBg3S9OnTdejQIdWuXVu//vqrw/XmFeEVAAAgD5588klVr15dd911lzp16qTo6GgtW7ZMAwcOVOPGjeXs7KyXX35ZO3bs0LFjx2z7PfvsszKbzfL09NQDDzyg6OjoHNt3cnJScnKyYmNjZbVa1aBBA7m7uztc33PPPae77rpLZcqUUatWrWQymfTzzz9LklavXq3mzZurevXq2fYLCgrS8uXLJV2/+7ty5UoFBgZKkkJDQ/Xcc8+pQYMGcnJy0vPPP6/o6GjFxcXphx9+kI+Pjy3ojh49WtWqVXO43rwivAIAAORB1mBWpkwZXbp0SfHx8fL09LQtL1eunCpVqmQ3dCCn/aTrn/j38PCQh4eHfv75Z7Vt21YjR47UxIkTVb9+fY0fP14XL150uL6aNWva/m0ymdSrVy+tWLFCkrRs2TIFBQXluF/37t21Y8cOxcfHa9u2bTKZTGrVqpUk6fjx4woODpbFYpHFYlHt2rVltVp16tQpxcfHy8PDw+6YWR/nN8IrAADAHXJ3d9fx48dtjy9duqSEhIQc73De6P/+7/908uRJnTx50hYWn3rqKUVFRenXX3/VwYMH9cEHH0iSXF1dlZKSYtv3zJkz2dozmUx2j3v37q3Vq1crLi5Ov/32m7p3755jHWazWQ899JBWrlyp5cuXq3fv3ra2PDw8NHv2bMXFxdl+4uPj1bJlS1WrVk0nT560tWO1Wu0e5zfCKwAAwB0KDAzUV199pT/++EOpqal67bXX1KxZM9WqVSvPbe3atUs7d+5UWlqaypYtKxcXF5UocT2y+fv7a+3atUpJSdHhw4e1aNGiW7bXqFEjubm56ZlnntHDDz8ss9mc67ZBQUFavHixVq9ebRsyIEnDhg3T7NmztXfvXknShQsX9PXXX0uSOnbsqH379mnNmjVKT0/XJ598otOnT+f5vB1FeAUAALhD7dq10wsvvKDBgwerQYMGOnr0qD777LPbaispKUnPPPOMateuLX9/f1WqVEnPPPOMJGn06NEqXbq0vL299fTTT+c6BOBGgYGBioyMvOX2jz32mA4fPqxq1arJ39/ftrxbt24aP368RowYYZsBYcOGDZIkNzc3LVy4UK+++qrq1q2rw4cPq2XLlrd17o4wJSYmFtxcBv8BSf97T25ujn8C8Gb+y5Mk36nY2Fh5eXkVdRn/efRD8UA/FB/0Rd5duHBBFStWzNc2r1y5IhcXl3xtE3mXtR/upJ+58woAAADDILwCAADAMAivAAAAMAzCKwAAAAyD8AoAAADDILwCAIBixWplIqR/szvtX8IrAAAoNlxcXOy+QQr/LlarVYmJiXJ1db3tNpzysR4AAIA74uzsrPT0dF24cCHf2rx48aIqVKiQb+3h9mT2Q/ny5eXkdPsRlPAKAACKlTu5K5eTM2fOyNPTM1/bRN7lVz8wbAAAAACGQXgFAACAYRBeAQAAYBiEVwAAABgG4RUAAACGQXgFAACAYRBeAQAAYBiEVwAAABgG4RUAAACGQXgFAACAYRBeAQAAYBiEVwAAABgG4RUAAACGUWjhNTU1VWPHjpWfn59q1qypNm3aaMOGDZKkY8eOyWw2y8PDw/bzzjvv2O07ZswYeXp6ytvbWx999FFhlQ0AAIBixKmwDpSeni4PDw9988038vT01A8//KBhw4Zp27Zttm2OHTsmJ6fsJc2cOVOHDx9WdHS0Tp8+rW7dusnHx0ft27cvrPIBAABQDBTanVdXV1cFBwerVq1aKlGihDp16iSLxaLdu3ffct+IiAhNmjRJZrNZDRo00ODBgxUeHl4IVQMAAKA4KbIxr2fOnNGhQ4fk6+trW+bv76+GDRtq9OjROnfunCQpMTFR8fHx8vPzs9tu3759hV4zAAAAipYpMTHRWtgHTUtLU2BgoOrUqaM5c+YoOTlZsbGx8vf3V0JCgiZOnKjk5GStXLlSJ06ckJ+fn+Lj4+Xi4iJJ2rx5s5555hlFR0fn2H5sbGyhnYt71Jp8ayu+bfd8awsAAMBIvLy8HNqu0Ma8ZsrIyNCTTz6p0qVLa9asWZKkcuXKqUmTJpKkqlWratasWWrQoIGSkpJUrlw5SVJSUpItvF68eFHly5fP9RiOnnx+SIqS3Nwq5Utb5Qux7n+b2NjYQu135Ix+KB7oh+KDvige6IfiIb/6oVCHDVitVo0dO1ZnzpxRWFiYSpUqleN2JpNJ0vWgazab5e7urpiYGNv6mJgY+fj4FErNAAAAKD4KNbxOmDBBBw4c0OLFi1WmTBnb8p07dyo2NlYZGRlKSEjQlClT1KZNG1WsWFGS1LdvX82aNUuJiYk6cOCAwsLC1L9//8IsHQAAAMVAoQ0biIuLU2hoqJydndWgQQPb8tmzZ6tEiRJ67bXXdPbsWZUvX17t2rXTZ599ZtsmODhYEyZMkL+/v1xcXDR+/HimyQIAAPgPKrTwarFYlJiYmOv6wMDAXNc5OzsrJCREISEhBVEaAAAADIKvhwUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhEF4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhFFp4TU1N1dixY+Xn56eaNWuqTZs22rBhg219VFSUmjdvrurVq6tr166Ki4uz23fMmDHy9PSUt7e3Pvroo8IqGwAAAMVIoYXX9PR0eXh46JtvvlFcXJymT5+uYcOG6dixYzp37pwGDRqkF154QUeOHFGTJk00fPhw274zZ87U4cOHFR0drbVr1+qDDz7Qjz/+WFilAwAAoJhwKqwDubq6Kjg42Pa4U6dOslgs2r17t86fPy8fHx8FBARIkqZOnap69erpwIED8vb2VkREhD7++GOZzWaZzWYNHjxY4eHhat++fWGVDwAAgGKgyMa8njlzRocOHZKvr6/27t0rPz8/2zpXV1fVqVNHe/fuVWJiouLj4+3W+/v7a9++fUVRNgAAAIpQod15zSotLU0jR45Uv3795O3trUuXLqly5cp221SoUEHJyclKTk62Pc66LikpKdf2Y2NjC6bwHLhLOncuIV/aii/Euv+NCrPfkTv6oXigH4oP+qJ4oB+Kh5v1g5eXl0NtFHp4zcjI0JNPPqnSpUtr1qxZkq7fab0xjCYlJalcuXIqV66c7bGLi4sk6eLFiypfvnyux3D05PNDUpTk5lYpX9oqX4h1/9vExsYWar8jZ/RD8UA/FB/0RfFAPxQP+dUPhTpswGq1auzYsTpz5ozCwsJUqlQpSZKvr69iYmJs2126dElHjhyRr6+vzGaz3N3d7dbHxMTIx8enMEsHAABAMVCo4XXChAk6cOCAFi9erDJlytiWd+3aVXv37tXq1at15coVvfPOO7r77rvl7e0tSerbt69mzZqlxMREHThwQGFhYerfv39hlg4AAIBioNDCa1xcnEJDQxUdHa0GDRrIw8NDHh4eWrp0qSpXrqywsDC98cYbql27tnbu3KnPPvvMtm9wcLDq1Kkjf39/denSRePGjWOmAQAAgP+gQhvzarFYlJiYmOv6du3aaceOHTmuc3Z2VkhIiEJCQgqqPAAAABgAXw8LAAAAwyC8AgAAwDAIrwAAADAMwisAAAAMg/AKAAAAwyC8AgAAwDAIrwAAADAMwisAAAAMg/AKAAAAwyC8AgAAwDAIrwAAADAMwisAAAAMg/AKAAAAwyC8AgAAwDAIrwAAADAMwisAAAAMg/AKAAAAwyC8AgAAwDAIrwAAADAMwisAAAAMg/AKAAAAwyC8AgAAwDAIrwAAADAMwisAAAAMg/AKAAAAwyC8AgAAwDAIrwAAADAMwisAAAAMg/AKAAAAwyC8AgAAwDAIrwAAADAMwisAAAAMg/AKAAAAwyC8AgAAwDAIrwAAADAMwisAAAAMg/AKAAAAwyC8AgAAwDAIrwAAADAMwisAAAAMg/AKAAAAwyC8AgAAwDAIrwAAADAMwisAAAAMg/AKAAAAwyC8AgAAwDAIrwAAADAMwisAAAAMg/AKAAAAwyC8AgAAwDAIrwAAADAMwisAAAAMg/AKAAAAwyC8AgAAwDAIrwAAADAMwisAAAAMg/AKAAAAwyC8AgAAwDDyHF4TEhJktVoLohYAAADgphwKr9euXdNbb72lWrVqycvLS8eOHZMkvfLKKwoNDS3QAgEAAIBMDoXXOXPmKCIiQm+//bZKly5tW37PPfcoPDy8wIoDAAAAsnIovEZERGj27Nnq27evSpYsaVvesGFDHTx4sMCKAwAAALJyKLyeOHFC3t7e2ZY7OTnpypUr+V4UAAAAkBOHwqvFYlFMTEy25ZGRkfLy8sr3ogAAAICcODmy0YgRIzR16lS5uLhIkg4dOqQff/xRr732mt58880CLRAAAADI5FB4ffLJJ5WQkKCBAwfq8uXLCgwMlIuLiyZMmKBBgwYVdI0AAACAJAfDa2pqqqZMmaJnn31W+/btU0ZGhnx8fOTq6lrQ9QEAAAA2twyv6enpqlGjhn766Sf5+vqqSZMmhVEXAAAAkM0tP7Dl5OQkDw8PZWRkFEY9AAAAQK4cmm1g7Nixmjlzpi5fvlzQ9QAAAAC5cmjM67fffqtdu3bJ19dXDRo0UNmyZe3Wr1q1qkCKAwAAALJyKLzWqFFDNWrUKOhaAAAAgJtyKLx+/PHHBV0HAAAAcEsOjXkFAAAAigOH7rxKUnh4uJYvX67jx4/r6tWrduv27NmT74UBAAAAN3LozutHH32kKVOmyNvbW3FxcXr00UdVt25dnT9/Xn369CnoGgEAAABJDobXL774Qu+//75mzpypUqVKacyYMVq1apVGjRql8+fPF3SNAAAAgCQHw+uJEyfUsmVLSZKzs7OSkpIkSf369dPKlSsLrjoAAAAgC4fCq5ubmy5cuCDp+rRZ0dHRkqS///5baWlpBVcdAAAAkIVDH9hq1aqVNm3aJH9/f/Xq1UvBwcHauHGjfvrpJ7Vv376gawQAAAAkORhe33nnHdsMA88++6xKliypn3/+WY8//rgmTZpUoAUCAAAAmXIdNjBmzBjb2NY///xTlSpVkiSZTCY988wzWrx4sV5//XVVqFChcCoFAADAf16u4XXJkiVKSUmRJHXr1o1ZBQAAAFDkch024OnpqQULFqh9+/ayWq3atWuXzGZzjttmzkQAAAAAFKRcw+vLL7+scePG6b333pPJZFLfvn1z3M5kMikhIaHACgQAAAAy5RpeAwIC1L17d506dUp+fn7atGmT3NzcCrM2AAAAwM5NZxsoUaKEPDw8FBISooYNG8rZ2bmw6gIAAACycWiqrP79+xd0HQAAAMAtOfQNWwAAAEBxQHgFAACAYRBeAQAAYBi3DK9paWkaMWKEjhw5Uhj1AAAAALm6ZXgtVaqUNmzYIJPJVBj1AAAAALlyaNhAx44d9eOPPxZ0LQAAAMBNOTRVVrNmzTRjxgxFR0eradOmKlu2rN36oKAghw726aefKjw8XH/99Zd69+6tefPmSZKOHTumRo0aydXV1bbt+PHjNXnyZElSamqqJkyYoDVr1qhMmTJ65plnNHbsWIeOCQAAgH8Ph8Lr1KlTJUlhYWEKCwuzW2cymRwOr+7u7po4caI2bdqky5cvZ1t/7NgxOTllL2nmzJk6fPiwoqOjdfr0aXXr1k0+Pj5q3769Q8cFAADAv4ND4fX8+fP5crDu3btLknbv3q2TJ086vF9ERIQ+/vhjmc1mmc1mDR48WOHh4YRXAACA/5hiNVWWv7+/GjZsqNGjR+vcuXOSpMTERMXHx8vPz89uu3379hVVmQAAACgiDt15laQvv/xS8+fP19GjR7V161bVrl1bc+fOVe3atdWjR487KsLNzU2bN2+Wv7+/EhISNHHiRI0cOVIrV65UcnKyJKlChQq27StUqKCkpKRc24uNjb2jevLCXdK5cwn50lZ8Idb9b1SY/Y7c0Q/FA/1QfNAXxQP9UDzcrB+8vLwcasOh8Lpw4UK98sorGj16tN5//33bcjc3Ny1YsOCOw2u5cuXUpEkTSVLVqlU1a9YsNWjQQElJSSpXrpwkKSkpSS4uLpKkixcvqnz58rm25+jJ54ekKMnNrVK+tFW+EOv+t4mNjS3UfkfO6IfigX4oPuiL4oF+KB7yqx8cGjbw6aefas6cOZo8ebLdB6oaN25cIG/fZ84pm5GRIbPZLHd3d8XExNjWx8TEyMfHJ9+PCwAAgOLNofB6+PBhNW3aNNtyV1fXm759f6P09HRduXJF165d07Vr13TlyhWlp6dr586dio2NVUZGhhISEjRlyhS1adNGFStWlCT17dtXs2bNUmJiog4cOKCwsDD179/f4eMCAADg38Gh8FqtWrUcvx52+/btql27tsMHmzVrltzd3TV79mwtXbpU7u7umjVrlo4eParevXurZs2auv/++1W6dGl99tlntv2Cg4NVp04d+fv7q0uXLho3bhwzDQAAAPwHOTTmtW/fvnrhhRe0cOFCmUwmXb58WT/88INtHKyjgoODFRwcnOO6wMDAXPdzdnZWSEiIQkJCHD4WAAAA/n0cCq+TJk1SXFycWrRoIavVqtatW0uSBgwYwDddAQAAoNA4FF6dnJw0b948TZkyRXv27FFGRoYaN26sOnXqFHR9AAAAgI3D87xKUu3atVW5cmVJsk1hBQAAABQWh79ha/78+fLz85PFYpHFYpGfn58++eSTgqwNAAAAsOPQndfXX39dn3zyiZ566im1bNlSkvTrr7/qjTfe0D///KMXX3yxQIsEAAAApDx8w9bs2bP1+OOP25Y9+uij8vHx0dSpUwmvAAAAKBQODRtIS0vTvffem21506ZNlZaWlu9FAQAAADlxKLwGBARo6dKl2ZYvX75c3bt3z/eiAAAAgJw4NGygatWqmjdvnrZu3aoWLVpIknbs2KHo6GiNGjVK7733nm3b559/vmAqBQAAwH+eQ+F16dKlMpvNOnHihE6cOGFbbjab7e7ImkwmwisAAAAKjEPh9Y8//ijoOgAAAIBbcnieVwAAAKCoEV4BAABgGIRXAAAAGAbhFQAAAIZBeAUAAIBhOBReGzVqpISEhGzLExMT1ahRo3wvCgAAAMiJQ+E1Li5O165dy7b86tWr+vvvv/O9KAAAACAnN53nddu2bbZ/b9++XWaz2fb42rVr2rx5szw8PAquOgAAACCLm4bXrl27ymQyyWQyaeDAgdnWlytXTu+++26BFQcAAABkddPw+ueff8pqtcrPz09RUVGqXLmybV3p0qXl5uYmk8lU4EUCAAAA0i3Ca40aNSRJ58+fL5RiAAAAgJu5aXjN6sKFC9q1a5fOnDmjjIwMu3X9+vXL98IAAACAGzkUXn/88UcNHz5cSUlJKlmypN06k8lEeAUAAEChcGiqrOnTp6tbt246cOCAzp49a/fzzz//FHSNAAAAgCQH77zGxcUpIiJCVapUKeh6AAAAgFw5dOe1cePGOnr0aAGXAgAAANycQ3deJ0+erBdffFFTp06Vn5+fSpcubbe+evXqBVIcAAAAkJVD4bVnz56SpIEDB9rN62q1WmUymZSQkFAw1QEAAABZOBRe165dW9B1AAAAALfkUHht06ZNQdcBAAAA3JJDH9iSpNjYWE2bNk19+vTR6dOnJUnffvutoqOjC6w4AAAAICuHwuvPP/+sBx54QDExMdq8ebMuX74sSdq/f7/eeeedAi0QAAAAyORQeH399dc1efJkrVmzxm6mgQcffFC7du0qsOIAAACArBwKrzExMerVq1e25VWqVNHZs2fzvSgAAAAgJw6FV2dnZ124cCHb8kOHDqly5cr5XhQAAACQE4fCa4cOHTR79mxlZGTYlp07d05vvPGGHnvssQIrDgAAAMjKofD62muvad++fbrnnnt05coVDRgwQI0aNdLly5c1ffr0gq4RAAAAkOTgPK9VqlRRZGSkVqxYod27dysjI0NPPfWUHn/8cTk7Oxd0jQAAAIAkB8OrJLm4uGjAgAEaMGBAQdYDAAAA5MqhYQOzZ89WWFhYtuVhYWGaO3duvhcFAAAA5MSh8Lpw4UJ5eXllW96gQQOFhobme1EAAABAThwKr/Hx8apRo0a25e7u7jp16lS+FwUAAADkxKHwWqVKFf3111/Zlv/555+qVKlSvhcFAAAA5MSh8Nq1a1dNmzZNe/bssS3bvXu3pk+fru7duxdYcQAAAEBWDs028OKLLyo6OloPPfSQzGazJCkxMVH33XefXnrppQItEAAAAMjkUHh1dXXVN998o6ioKNvd10aNGqlt27YFWhwAAACQ1S3Da1pamjp37qyQkBC1bduWwAoAAIAic8sxr6VKldKhQ4fk5OTw9xkAAAAABcKhD2z16tVLy5YtK+haAAAAgJty6Haq2WxWSEiIfvnlF917770qW7as3frnn3++QIoDAAAAsnIovC5dulRms1mHDx/W4cOH7daZTCbCKwAAAAqFQ+H1jz/+KOg6AAAAgFtyaMxrVgkJCbJarQVRCwAAAHBTDoXXa9eu6a233lKtWrXk5eWlY8eOSZJeeeUVhYaGFmiBAAAAQCaHwuucOXMUERGht99+W6VLl7Ytv+eeexQeHl5gxQEAAABZORReIyIiNHv2bPXt21clS5a0LW/YsKEOHjxYYMUBAAAAWTkUXk+cOCFvb+9sy52cnHTlypV8LwoAAADIiUPh1WKxKCYmJtvyyMhIeXl55XtRAAAAQE4cmiprxIgRmjp1qlxcXCRJhw4d0o8//qjXXntNb775ZoEWCAAAAGRyKLw++eSTSkhI0MCBA3X58mUFBgbKxcVFEyZM0KBBgwq6RgAAAECSg+FVkoKDg/Xss89q3759ysjIkI+Pj1xdXQuyNgAAAMCOw+E1k7OzsySpRIk8f78BAAAAcEccSqBXr17VCy+8oLp166pNmzZq3bq16tatq2nTpik1NbWgawQAAAAkOXjndfLkyfrmm280c+ZMtWzZUpL066+/6q233lJKSormzJlToEUCAAAAkoPhdeXKlVqwYIE6duxoW+bj4yN3d3eNHDmS8AoAAIBC4dCwgVKlSqlu3brZltepU0dOTnkeNgsAAADcFofC6+DBgxUSEiKr1WpbZrVaNX/+fKbKAgAAQKH5f+3df2yV5d348U8R27L+GFYjRUBFobRaXJgwR/QbGA+LGIpzy1CsA6eZ8jBZFJUo4Q/FKf5onJk/8DsTN0MyHBBmhBmNIuBw6Dfj8dHQpKadojh/oUAf2oYWi3z/MOtjJyia03PORV+vhD9636cX1zmXN7y5vHvOEW2bfvTRR7F27drYuHFjnH322RER8corr8Tu3bvjRz/6UVx77bU9j/3tb3/bNzMFAKDfO6J4feutt+Kss86KiIidO3dGRMTw4cNj+PDhsX379p7HFRQU9MEUAQDgM0cUr3/5y1/6eh4AAPCVfNIAAADJEK8AACRDvAIAkAzxCgBAMsQrAADJEK8AACRDvAIAkAzxCgBAMsQrAADJEK8AACRDvAIAkAzxCgBAMsQrAADJENdx0/EAABUTSURBVK8AACRDvAIAkAzxCgBAMsQrAADJEK8AACRDvAIAkAzxCgBAMgbmegL8r8In/pDR8fb/+IqMjgcAkGt2XgEASEZW4/WRRx6JyZMnx4knnhjz5s3rde6FF16ICRMmxNChQ6Ouri527NjRc66rqyuuueaaGDFiRFRVVcWDDz6YzWkDAJAnshqvlZWVceONN8bPfvazXsd37doVs2fPjsWLF8f27dtj3LhxceWVV/acv+uuu+LNN9+Mbdu2xbp16+L++++P9evXZ3PqAADkgazG64UXXhh1dXVRUVHR6/i6deuiuro6LrrooiguLo6bb745Ghsbo7m5OSIiHn/88Vi4cGEMHjw4xowZE3PmzIkVK1Zkc+oAAOSBvLjntampKWpra3u+LikpiZEjR0ZTU1O0trbGBx980Ov82LFj4/XXX8/FVAEAyKG8eLeBjo6OOOGEE3odKy8vj/b29mhvb+/5+vPn2traDjteS0tL30z0ECojYteu3Vn7/b6OD7L4OuSDbK47h2cd8oN1yB/WIj9Yh/zwZeswevToIxojL+K1pKTkCzHa1tYWpaWlUVpa2vN1cXFxRETs3bs3ysrKDjvekT75TGh7IeL44yu++oE5UJbF1yHXWlpasrruHJp1yA/WIX9Yi/xgHfJDptYhL24bqKmpicbGxp6vOzo6Yvv27VFTUxODBw+OysrKXucbGxujuro6F1MFACCHshqv3d3d0dnZGQcOHIgDBw5EZ2dndHd3R11dXTQ1NcWTTz4ZnZ2dcc8998SZZ54ZVVVVERExa9asaGhoiNbW1mhubo7ly5dHfX19NqcOAEAeyGq8NjQ0RGVlZdx3332xatWqqKysjIaGhjjhhBNi+fLlcfvtt8epp54aW7dujUcffbTn+xYtWhQjR46MsWPHxvTp0+NXv/pVTJ06NZtTBwAgD2T1ntdFixbFokWLDnlu8uTJ8fe///2Q54qKiuKhhx6Khx56qC+nBwBAnsuLe14BAOBIiFcAAJIhXgEASIZ4BQAgGeIVAIBkiFcAAJIhXgEASIZ4BQAgGeIVAIBkiFcAAJIhXgEASIZ4BQAgGeIVAIBkiFcAAJIhXgEASIZ4BQAgGeIVAIBkiFcAAJIhXgEASIZ4BQAgGeIVAIBkiFcAAJIhXgEASIZ4BQAgGeIVAIBkiFcAAJIhXgEASIZ4BQAgGeIVAIBkiFcAAJIhXgEASIZ4BQAgGeIVAIBkiFcAAJIhXgEASIZ4BQAgGeIVAIBkiFcAAJIhXgEASMbAXE+AvlP4xB8yOt7+H1+R0fEAAL4uO68AACRDvAIAkAzxCgBAMtzzmkc2v9+V0fH+z9CijI4HAJBrdl4BAEiGeAUAIBniFQCAZIhXAACSIV4BAEiGeAUAIBniFQCAZIhXAACSIV4BAEiGeAUAIBniFQCAZIhXAACSIV4BAEiGeAUAIBniFQCAZIhXAACSIV4BAEiGeAUAIBkDcz2B1P3X/wyIQfu7cj0NAIB+wc4rAADJEK8AACRDvAIAkAzxCgBAMsQrAADJEK8AACRDvAIAkAzxCgBAMsQrAADJEK8AACRDvAIAkAzxCgBAMsQrAADJEK8AACRDvAIAkAzxCgBAMsQrAADJEK8AACRjYK4nQN/Z/H5XRsc7J6OjAQB8fXZeAQBIhngFACAZ4hUAgGSIVwAAkiFeAQBIhngFACAZ4hUAgGSIVwAAkiFeAQBIhngFACAZ4hUAgGTkVbxOnz49hgwZEsOGDYthw4bF+PHje86tXr06amtr46STTor6+vrYs2dPDmcKAEAu5FW8RkQ0NDTEu+++G++++25s3bo1IiKamppiwYIF8bvf/S6am5vjW9/6Vtxwww05nikAANk2MNcTOBKrV6+OadOmxbnnnhsREYsXL47vfe970dbWFmVlZTmeHQAA2ZJ3O69LliyJ0047Lc4///zYvHlzRHy281pbW9vzmJEjR0ZhYWG88cYbuZomAAA5kFc7r0uWLIkxY8ZEYWFhrFmzJi699NLYvHlzdHR0RHl5ea/HlpeXR1tb2yHHaWlpycZ0e+zbty+rv1+uZPt1/bryfX79hXXID9Yhf1iL/GAd8sOXrcPo0aOPaIy8itfP/4BWfX19rFmzJp599tkoKSn5Qqh+2S0DR/rkM+HdiBg0aFDWfr9cyubr+nW1tLTk9fz6C+uQH6xD/rAW+cE65IdMrUPe3TbweQUFBXHw4MGoqamJxsbGnuNvvfVWdHV1xemnn57D2QEAkG15E6+tra3x/PPPR2dnZ3R3d8eqVatiy5YtMXXq1Jg5c2Y888wzsWXLlujo6IilS5fGjBkz/LAWAEA/kze3DXR3d8ftt98eLS0tMWDAgKiqqoo//vGPMWrUqIiI+M1vfhNXX3117N69OyZNmhTLli3L8YwBAMi2vInXE044ITZu3HjY8zNnzoyZM2dmcUYAAOSbvLltAAAAvop4BQAgGeIVAIBkiFcAAJIhXgEASIZ4BQAgGeIVAIBkiFcAAJIhXgEASIZ4BQAgGeIVAIBkiFcAAJIhXgEASIZ4BQAgGeIVAIBkiFcAAJIhXgEASIZ4BQAgGeIVAIBkiFcAAJIhXgEASIZ4BQAgGeIVAIBkDMz1BEhH4RN/yNhY+398RcbGAgD6DzuvAAAkQ7wCAJAM8QoAQDLEKwAAyRCvAAAkQ7wCAJAM8QoAQDLEKwAAyRCvAAAkQ7wCAJAM8QoAQDLEKwAAyRCvAAAkQ7wCAJAM8QoAQDIG5noCpGPz+10ZG+ucjI0EAPQndl4BAEiGeAUAIBluG+Co8Mjbx0ZF+96MjbdoXHnGxgIAMsfOKwAAyRCvAAAkQ7wCAJAM8QoAQDLEKwAAyRCvAAAkQ7wCAJAM8QoAQDLEKwAAyRCvAAAkQ7wCAJAM8QoAQDLEKwAAyRCvAAAkQ7wCAJAM8QoAQDLEKwAAyRCvAAAkQ7wCAJCMgbmeABzt7vzvvRkdb9G48oyOBwApsfMKAEAyxCsAAMkQrwAAJEO8AgCQDPEKAEAyxCsAAMkQrwAAJMP7vEJivG8sAP2ZnVcAAJIhXgEASIbbBjgqTH/tiRg0aFDmBhz3nxkbaspLKzI2VkTEhon1GR0PAFJi5xUAgGTYeSUnCp/4Q66n8KXyfX4A0F/ZeQUAIBniFQCAZIhXAACSIV4BAEiGeAUAIBniFQCAZIhXAACS4X1eoZ+787/3Zmysn5ZmbCgAOCQ7rwAAJMPOKxzC5ve7cj0F8lwmd6wjIhaNK8/oeABHKzuvAAAkw84rkLcyubtpZxPg6GDnFQCAZNh5JSfcU0q2Zfoe1Xz2yNvHRkW7XWvoC+53zz07rwAAJMPOK8BRZvprT8SgQYMyN+C4/8zcWHxj+fx/D+wekk12XgEASEYyO6979uyJ+fPnx8aNG6OioiJuueWWmDlzZq6nBVk35aUVGR1vw8T6jI317tq/xO4M7vhNydhImX2efSGTu2oTMzbSZ9zjd3TK6J8l/Wh3PtN/Bven1y5TkonXG2+8MQoLC6O5uTm2bdsWl1xySdTW1kZNTU2upwYAQJYkEa8dHR2xdu3aeOmll6K0tDQmTpwY06ZNi5UrV8att96a6+lB0jK5i7AvYyPlv3zeAefolPEdvzz2/5b934yOV/HD/8joeORWQWtr68FcT+KrvPbaazFt2rR4//33e4498MAD8eKLL8bKlStzODMAALIpiR/Y6ujoiLKysl7HysvLo729PUczAgAgF5KI15KSkmhra+t1bO/evVFaWpqjGQEAkAtJxOuoUaOiu7s73njjjZ5jjY2NflgLAKCfSSJeS0pKYsaMGbF06dLo6OiIl19+OZ5++um45JJLcj01AACyKIl4jYi49957Y9++fTF69Oj4xS9+Effee6+dVwCAfiaZeD3uuONixYoV8d5770VjY2POP6Bgz549cdlll8VJJ50UtbW1sXr16pzOp7+YPn16DBkyJIYNGxbDhg2L8ePH95xbvXp11NbWxkknnRT19fWxZ8+eHM706PLII4/E5MmT48QTT4x58+b1OvfCCy/EhAkTYujQoVFXVxc7duzoOdfV1RXXXHNNjBgxIqqqquLBBx/M9tSPKodbh7fffjsGDx7cc10MGzYs7rnnnp7z1iGzurq6Yv78+VFbWxvDhw+P8847L5577rme866J7PiydXBNZNfVV18dY8aMiREjRsTZZ58dy5cv7znXF9dDEu/zmo98aELuNDQ0xJw5c3oda2pqigULFsTKlSvjO9/5Tlx33XVxww03xO9///sczfLoUllZGTfeeGNs2LAh9u3733dz3bVrV8yePTvuv//+mDZtWtxxxx1x5ZVXxvr16yMi4q677oo333wztm3bFh9++GHMmDEjqqurY+rUqbl6Kkk73Dr8y9tvvx0DB37xj3XrkFnd3d0xbNiweOqpp2LEiBHx7LPPxhVXXBF/+9vforS01DWRJV+2Dv/imsiOBQsWxAMPPBBFRUXR3NwcdXV1cdZZZ8WIESP65HpIZuc1n/zrQxMWL178hQ9NIDdWr14d06ZNi3PPPTdKS0tj8eLFsW7dui+8SwXfzIUXXhh1dXVRUVHR6/i6deuiuro6LrrooiguLo6bb745Ghsbo7m5OSIiHn/88Vi4cGEMHjw4xowZE3PmzIkVK/rPG61n2uHW4atYh8wqKSmJRYsWxSmnnBIDBgyIadOmxcknnxyvvvqqayKLvmwdvop1yKyampooKiqKiIiCgoIoKCiI7du399n1IF6/gX/84x8xcODAGDVqVM+xsWPHRlNTUw5n1X8sWbIkTjvttDj//PNj8+bNEfHZzmttbW3PY0aOHBmFhYW93qGCzPv3172kpCRGjhwZTU1N0draGh988EGv82PHjo3XX389F1PtF8aOHRtnnHFG/PKXv4xdu3ZFRFiHLNi5c2e88cYbUVNT45rIoc+vw7+4JrLnhhtuiKFDh8aECRNiyJAh8cMf/rDPrgfx+g340ITcWbJkSbz66qvR1NQUl19+eVx66aWxffv26OjoiPLy8l6PLS8vt/Paxw73ure3t/dcD58/b036xvHHHx8bN26Mbdu2xaZNm6K9vT2uuuqqiAjr0Mc++eSTuOqqq+LSSy+Nqqoq10SO/Ps6uCay7957741//vOf8fTTT8eMGTOiqKioz64H8foN+NCE3Bk/fnyUlZVFUVFR1NfXxznnnBPPPvvsIdekra3tC//IILMO97qXlpb2XA+fP793715r0gdKS0tj3LhxMXDgwDjxxBOjoaEhNmzY0LMWEdahL3z66acxd+7cKCwsjIaGhohwTeTCodbBNZEbxxxzTEycODHee++9ePTRR/vsehCv34APTcgfBQUFcfDgwaipqYnGxsae42+99VZ0dXXF6aefnsPZHf3+/XXv6OiI7du3R01NTQwePDgqKyt7nW9sbIzq6upcTLVfKSgoiIjP/lK3Dn3j4MGDMX/+/Ni5c2csX748jj322IhwTWTb4dbh37kmsqu7u7vnv/u+uB7E6zfgQxNyo7W1NZ5//vno7OyM7u7uWLVqVWzZsiWmTp0aM2fOjGeeeSa2bNkSHR0dsXTp0pgxY4Z/SWdId3d3dHZ2xoEDB+LAgQM9a1BXVxdNTU3x5JNPRmdnZ9xzzz1x5plnRlVVVUREzJo1KxoaGqK1tTWam5tj+fLlUV9fn+Nnk67DrcPWrVujpaUlPv3009i9e3fcdNNNcd5558W3v/3tiLAOfeH666+P5ubm+NOf/hSDBg3qOe6ayK7DrYNrIns++uijWLNmTbS3t8eBAwfi+eefjzVr1sSkSZP67HooaG1tPdjXT+xotGfPnrjmmmti06ZNUVFREbfcckvO33v2aPfxxx/HzJkzo6WlJQYMGBBVVVWxePHi+MEPfhARn73jwJIlS2L37t0xadKkWLZsWRx33HE5nvXR4c4774y7776717GbbropFi1aFJs2bYqFCxfGO++8E2effXYsW7YsTjnllIj47D38rr/++li7dm0UFxfHtddeG/Pnz8/FUzgqHG4dRo8eHbfddlt8/PHHUVZWFpMnT47bbrsthgwZEhHWIdN27NgRZ511VhQVFfV6G6b77rsvLr74YtdElnzZOgwYMMA1kSUff/xxzJkzJxobG+PgwYMxYsSImDt3blx++eUREX1yPYhXAACS4bYBAACSIV4BAEiGeAUAIBniFQCAZIhXAACSIV4BAEiGeAUAIBniFSDL5s2bF4MHD/7CrzVr1uR6agB5b+BXPwSATJs4cWI89thjvY7966Mrv679+/dHYWFhBmYFkP/svALkQGFhYQwZMqTXr+Li4njllVfiJz/5SZx++ukxfPjwmDJlSmzYsKHX955xxhmxdOnSWLBgQYwcOTJmzJgRERFtbW2xcOHCqK6ujqFDh8akSZPiqaeeysXTA+gz4hUgj7S1tcVPf/rTeOqpp2LTpk0xadKkmDVrVrz55pu9Hvfwww/H0KFDY/369XH//ffHwYMH4+KLL47XX389HnvssXjppZfi8ssvj5///Ofx4osv5ujZAGReQWtr68FcTwKgP5k3b16sWrUqiouLe44NHTo0tm7desjHf//7349Zs2bFddddFxGf7bxWV1fHn//8557HbNq0KWbNmhUtLS1RVlbWc3zu3Lmxb9++WL58eR89G4Dscs8rQA6MHz8+Hn744Z6vjznmmIiI+Oijj+LOO++Mv/71r7Fz5844cOBA7Nu3L955551e3//d736319evvPJKdHV1RXV1da/j+/fvj6qqqj56FgDZJ14BcqC4uDhOO+20LxyfO3dufPjhh/HrX/86Tj755Bg0aFDMmTMn9u/f3+txJSUlvb7+9NNPo6KiIp577rkvjHnsscdmdvIAOSReAfLIli1b4u67744LLrggIj67B3bHjh0xbty4L/2+cePGxa5du6K7u9tOK3BUE68AeWTUqFGxcuXKmDBhQnzyySdxxx13HNH3TZkyJc4777y47LLL4tZbb40zzzwzWltb4+WXX46SkpKYPXt2H88cIDu82wBAHnn44Ydj//79MWXKlJg9e3ZccMEFMXbs2K/8voKCgli1alVccMEFcfPNN8eECRPi4osvjvXr18epp57a9xMHyBLvNgAAQDLsvAIAkAzxCgBAMsQrAADJEK8AACRDvAIAkAzxCgBAMsQrAADJEK8AACRDvAIAkIz/D+4+MCyLtx7RAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# visualize Fare on Survived & non-Survived group \n", "df[df.Survived==1.0 ]['Fare'].hist(alpha=.5,bins=np.arange(0, 300, 10))\n", "df[df.Survived==0.0 ]['Fare'].hist(alpha=.5,bins=np.arange(0, 300, 10))\n", "plt.legend([\"survived\",\"non-survived\" ])\n", "pyplt.ylabel(\"percent per fare\")\n", "pyplt.xlabel(\"Fare\")\n", "plt.title('Fare histgram : Survived VS. non-Survived group ')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Both distributions are skew shaped while the \"survived\" group is \n", "with median ~ fare 26.0 ; the \"non-survived\" group is with median ~ fare 10.5. We can nearly say *** The distributions are not identical. ***\n", "But then it raises another question : *** whether the difference (\"survived\" and \"non-survived\") reflects just chance variation or a difference in the distributions in the population. ***\n", "\n", "\n", "So we have set up \"Hypothesis Test\" \n", "\n", "> * Null hypothesis (N0): The difference in the sample is due to chance.\n", "i.e. The distribution of fare of \"survived group\" is the same for \"non survived group\" \n", "> * Alternative hypothesis(N1): The two distributions are different in the population.\n", "> * Test statistic: T test\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2) Hypothesis Test" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "a = df[df.Survived==1.0 ]['Fare'].values\n", "b = df[df.Survived==0.0 ]['Fare'].values" ] }, { "cell_type": "code", "execution_count": 39, "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", "
Fare meanSurvived
048.395408True
122.117887False
\n", "
" ], "text/plain": [ " Fare mean Survived\n", "0 48.395408 True\n", "1 22.117887 False" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# mean value table \n", "\n", "raw = {\n", " 'Survived': [True, False],\n", " 'Fare mean': [a.mean(), b.mean()]\n", "}\n", "means_table = pd.DataFrame(raw)\n", "means_table" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "26.277520717093282" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# difference in the means\n", "a.mean() - b.mean()" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "T statistic: 7.94 \n", "P-value:0.00\n" ] } ], "source": [ "# t-test \n", "statistic, pvalue = st.ttest_ind(a, b)\n", "print ('T statistic: %.2f'%statistic,'\\nP-value:%.2f'%pvalue)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> The P-value (0.00) is super small. As a result, we can reject the Null hypothesis (N0) and conclude that in the population, the distribution of \n", "\"survived\" and \"non-survived\" are different.\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3) Bootstrap Confidence Interval For the Difference" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our hypothesis Test (via t-test) conclude that the 2 distributions \n", "are 2 different with very high possibility.\n", "But, in general cases, the difference above maybe is due to \"randomness\".\n", "To avoid the \"randomness affects\", we need to generate more samples\n", "via the the \"Bootstrap resampling\" tricks here. (It simply replicates the original random sample and computes new values of the statistic.)\n", "\n", "PS. However maybe it not 100% sense to re-sample on the titanic dataset,\n", "since they may only happen once lol.\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "# !pip install scikits.bootstrap\n", "import scikits.bootstrap as bootstrap \n", "import scipy" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Bootstrapped 95% confidence interval around the mean\n", "Low: 14.5346638655 \n", "High: 15.6042787115\n" ] } ], "source": [ "# compute 95% confidence intervals around the mean \n", "\n", "### drop the nan here, since the scikits.bootstrap seems doesn't work with nan\n", "### will fix later \n", "\n", "df_ = df[['Age', 'Survived']].dropna()\n", "CIs = bootstrap.ci(df_[['Age', 'Survived']], scipy.mean) \n", "print (\"Bootstrapped 95% confidence interval around the mean\\nLow:\", CIs[0], \"\\nHigh:\", CIs[1])\n" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "all data : 891\n", "non null (Age) data : 714\n" ] } ], "source": [ "print ('all data : ', len(df))\n", "print ('non null (Age) data : ' , len(df_))" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Bootstrapped 95% confidence interval with 5,000 samples\n", "Low: 14.5130182073 \n", "High: 15.5919677871\n" ] } ], "source": [ "# bootstrap 5000 samples instead of only 1174 \n", "CIs = bootstrap.ci(df_[['Age', 'Survived']], scipy.mean, n_samples=5000) \n", "\n", "print (\"Bootstrapped 95% confidence interval with 5,000 samples\\nLow:\", CIs[0], \"\\nHigh:\", CIs[1])\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/yliu/anaconda3/envs/zip_dev/lib/python3.5/site-packages/ipykernel_launcher.py:69: DeprecationWarning: \n", ".ix is deprecated. Please use\n", ".loc for label based indexing or\n", ".iloc for positional indexing\n", "\n", "See the documentation here:\n", "http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated\n", "/Users/yliu/anaconda3/envs/zip_dev/lib/python3.5/site-packages/ipykernel_launcher.py:107: DeprecationWarning: \n", ".ix is deprecated. Please use\n", ".loc for label based indexing or\n", ".iloc for positional indexing\n", "\n", "See the documentation here:\n", "http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated\n", "/Users/yliu/anaconda3/envs/zip_dev/lib/python3.5/site-packages/ipykernel_launcher.py:115: DeprecationWarning: \n", ".ix is deprecated. Please use\n", ".loc for label based indexing or\n", ".iloc for positional indexing\n", "\n", "See the documentation here:\n", "http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Observed difference between means: 2.28248959011\n", "Approximate 95% CI for the difference between means:\n", "-1.56344938156 to 6.38324598383\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAArgAAAJmCAYAAAC39PNwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvAOZPmwAAIABJREFUeJzs3X1U1HWix/HP5IQPDITcSmQU0EAZHazNdENzH93VvOKmm0Jqlkr3rklPylYezrlabWYPtG6u1tlqLT2JLG0W5bWH7UkR2W65m5CwgOUT2uqqCIyQInP/6Da3CZ1heBjg6/t1TufIb76/3+/7+5r0bvzND0t1dbVbAAAAgCEu6uwJAAAAAO2JwAUAAIBRCFwAAAAYhcAFAACAUQhcAAAAGIXABQAAgFEIXAAAABiFwAUAAIBRCNwWqKio6OwpdGmsj2+sj2+sj2+sj2+sj2+sj2+sj3/ddY0IXAAAABiFwAUAAIBRCFwAAAAYxdrZEwAA4ELidrtVV1enpqamDj9Xr169dPLkyQ4/T3fF+vjX2Wt00UUXyWazyWKxBLQfgQsAQBDV1dWpZ8+eCgkJ6fBz9ezZU7169erw83RXrI9/nb1Gp0+fVl1dncLCwgLaj1sUAAAIoqampqDELWCCkJCQVv1tB4ELAAAAoxC4AAAAMAqBCwAAWuyee+7RY4895vn6+eefV0JCgux2u44fP66ioiJdffXVstvteuONNzpxpriQ8SEzAAA6WcTaqg49fvVce4vGJSUl6ejRo7JarbrooouUmJiotLQ03Xrrrbrooq/fE/vtb3/rGX/mzBllZWXpnXfeUVJSkiRp+fLluu2227RgwYL2v5AgWbBggV5++WWFhITIYrHoiiuu0MMPP6zrrruuRftHRERo586dGjx4cAfPtHX27dunK6+8UklJSdq2bZtn+7Fjx5SYmKioqCgVFxd34gzbjndwAQCAx8aNG3Xw4EEVFxfr7rvv1sqVK5WRkXHOsUeOHFFDQ4McDodn24EDB7y+DkRjY2Or9usId911l6qqqnTgwAHNnz9fN998s86ePdvZ02pX9fX12r17t+frvLw8xcbGduKM2g+BCwAAmrnkkks0adIkrV27Vjk5OZ4QWrBggX7zm9+osrJSo0aNkiTFxsYqJSVFV111lfbu3au0tDTZ7XZ99dVXOnnypDIyMjR06FA5HA795je/8YTiSy+9pAkTJmjJkiUaNGiQVqxYIUlav369Ro8erdjYWE2bNk379+/3zCsiIkJ//OMfdfXVVysmJkaZmZlyu92e11988UWNHj1aAwYM0Pe//339/e9/lyQdPnxYN998s6644gqNGDFCzzzzTIvWwWKx6MYbb9SJEyd05MgRz/bzzfH666+XJF133XWy2+165ZVXNGnSJL322muSpKKiIkVEROitt96SJH344Yde7wz7uvby8nLdcMMNiouL0zXXXKNNmzZ5XluwYIEyMzM1Y8YMDRgwQD/96U/1xRdf+Ly21NRU5eTkeL7euHGj0tLSvMZ8+eWX5123Tz75RD/72c8UExOjoUOH6te//rVOnz7ted3X79Xnn3+uSZMmKSYmRoMHD9bcuXN9zjVQBC4AADivkSNHym63a8eOHV7b4+PjPdv27dun119/XX//+981YMAAbdy4UVVVVerZs6duv/12Wa1W7dy5U1u3btV7772ndevWeY7z8ccfKy4uThUVFVq8eLE2b96sJ598UuvXr9eePXuUnJys9PR0r3O/9dZbeu+997R9+3Zt2rRJ7777riTp1Vdf1YoVK/TMM8/owIEDysnJUWRkpJqampSWlian06nS0lLl5+fr6aef1vvvv+/3+s+ePauNGzcqNjZWl19+uST5nOOWLVskSQUFBaqqqtK0adM0duxYFRQUSJK2b9+uuLg4FRYWesaNHTvW73FdLpemTp2qG2+8UZWVlXr++ee1ePFilZWVeeb65z//Wffdd5/27t2rwYMH66GHHvJ5bTNmzNArr7yis2fPqqysTC6XS9dcc43n9aamJs2ZM6fZun2z3j169NDy5cv1+eef6+2339aHH36o5557rkW/Vw8//LB+8pOfaO/evdq9e7f+4z/+w+/vRSAIXAAA4FNUVJROnDgR8H5HjhzRO++8o0ceeUShoaG67LLLdPvtt+vPf/6zZ0z//v31n//5n7Jarerdu7fWrl2re+65R0OHDpXVatXixYtVXFzs9U7m3XffrYiICA0cOFDjxo3z3C+6bt063Xnnnbr66qtlsVg0ePBgxcTEaOfOnTp27Jjuu+8+hYSEKC4uTrfccoteffXV88591apViomJkd1u15IlS5SVlaUePXpIUovm+G3XXXedtm/fLkkqLCzUokWLPF9v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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "bootstrap_ci_means(df_, 'Age', 'Survived', 5000)" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/yliu/anaconda3/envs/zip_dev/lib/python3.5/site-packages/ipykernel_launcher.py:69: DeprecationWarning: \n", ".ix is deprecated. Please use\n", ".loc for label based indexing or\n", ".iloc for positional indexing\n", "\n", "See the documentation here:\n", "http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated\n", "/Users/yliu/anaconda3/envs/zip_dev/lib/python3.5/site-packages/ipykernel_launcher.py:107: DeprecationWarning: \n", ".ix is deprecated. Please use\n", ".loc for label based indexing or\n", ".iloc for positional indexing\n", "\n", "See the documentation here:\n", "http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated\n", "/Users/yliu/anaconda3/envs/zip_dev/lib/python3.5/site-packages/ipykernel_launcher.py:115: DeprecationWarning: \n", ".ix is deprecated. Please use\n", ".loc for label based indexing or\n", ".iloc for positional indexing\n", "\n", "See the documentation here:\n", "http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Observed difference between means: 2.28248959011\n", "Approximate 95% CI for the difference between means:\n", "-1.51827737087 to 6.43301059337\n" ] }, { "data": { "image/png": "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xn3nnXcUGhqq++67Tz4+PhozZoymT5+uN954w3WcadOmaezYsfLx8dGsWbPaXEdrs9kUGRmpDz/8UNu3b1dycrLb9rbm7bbbbtO4cePk4+OjsLAwPfDAA67zaut35ePjoxMnTuj06dMaMGCA4uLiWq3VU3zIDAAAtOr06dMaPHiwx/udOHFCly5d0qhRo1xtTqdTNts/PvT21cdX9nnqqae0cuVKt31Onz6t0NBQSdKQIUNc2wYOHCiHwyFJqqysVERERIt1fHV/6curk62FqocfflhPPfWUnE6nSktLNWvWLA0ePFh33XWXTpw4oeXLl+upp566ao1fNW7cOB05ckRnzpxRcXGxcnJy9Oyzz+rs2bM6cOCAK+C2Nu6JEyf08ccfu41/+fJlt1B6tXlpTUpKirZt26bf/e53ys/P15EjR9o9bxUVFcrKytIf//hH1dXVqbGxUbfddpvb+FeradWqVVq9erX+7d/+TYGBgVqyZInmz5/fZr3tRcAFAABXdeDAAZ06dUp33nmnx/vabDb1799fn332mXx8Wo4cFoul2T5Lly7VvHnzOnS8ltad2mw2hYWF6cCBAx6PabFYNHr0aH3jG9/Qu+++q7vuuks2m00ZGRmaPXt2u8YYNGiQbrvtNm3atEl2u12+vr4aP368NmzYoIiICP3Lv/yLq86rjXvixAlNmDDB7YptV5g+fboef/xxjRkzRsOHD3cLuG3N27Jly3Trrbfq5Zdflr+/vzZu3Ki8vLx2HXfIkCFav369JOmjjz7SjBkzNGHChC678wRLFAAAQDPV1dV6++23tXDhQs2ePVu33HKLx2MEBwfr29/+trKyslRdXa2mpib95S9/ca1HbUlqaqrWr1+v0tJSSdL58+fbHeoWLFig//qv/9Inn3wip9Opzz77TMePH9fYsWNltVq1bt061dXV6fLlyzp06FC7A29ZWZn279+v6OhoV40//elPr1rjTTfdpKNHj7qNMWHCBL300kuuq7UTJ050e97WuFOmTFFFRYW2b9+uS5cu6dKlSzpw4ID+/Oc/t+scrsbPz095eXl68cUXm21ra95qa2vl7+8vq9WqsrIy/fKXv2z3cd944w1VVn55e7zAwEBZLBbXrei6AgEXAAC4pKSkaNiwYYqJiVF2draWLFmijRs3dni8TZs26dKlS7rzzjsVHh6uBQsW6G9/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GxQUpLffflsDBw7UbbfdJkn605/+pAsXLighIaFbCgQAAAA84VHAjYiI0N13360NGzaof//+kqSLFy/q4YcfVlhYmLKysrqlSAAAAKC9PFqD+8orrygzM9MVbiWpf//+evTRR/Xqq692eXEAAACApzwKuLW1tTp79myz9i+++EIOh6PLigIAAAA6yqOAO3nyZP3whz9UYWGhGhoa1NDQoIKCAi1btkyTJ0/urhoBAACAdvNoDe66dev0gx/8QNOmTVO/fl9mY6fTqbvuukvr1q3rlgIBAAAAT3gUcAcPHqzc3FyVlZXpz3/+syQpOjpaUVFR3VIcAAAA4CmPAu4VI0eO1JAhQxQQENDu++ICAAAA3uDRGtzLly/r+eef180336wRI0bo2LFjkqRVq1ZxFwUAAAD0Ch4F3PXr12vLli16+umn5evr62ofPXq0tm7d2uXFAQAAAJ7yaInCtm3b9NOf/lR33XWXnnzySVd7TEyMysvLu7w4AH1D4ObKLhxtkFTQleMBAK41Hl3BPXHihEaNGtWs/frrr1ddXV2XFQUAAAB0lEcBd/jw4Tp06FCz9j179nAnBQAAAPQKHi1RWLhwoZ588kkNHDhQknTs2DF9+OGHevrpp/XMM890S4EAAPQW7V9O03VLZapSbV0yDtCXeBRwFy9erLNnzyolJUX19fWaMWOG+vfvr0ceeUQLFizorhoBAACAdvMo4F6+fFlZWVl69NFHdejQITU1NWn06NHy9/fvrvoAAAAAj7Q74DY2NmrIkCHat2+fRo8erXHjxnVnXQAAAECHtPtDZj4+PgoJCZHT6ezOegAAAIBO8eguCg899JBeeOEFXbx4sbvqAQAAADrFozW47733nn73u9/JbrcrOjpafn5+btt37NjRpcUBAAAAnvIo4AYFBemee+7prloAAACATmtXwN25c6e++93v6uc//3l31wMAAAB0SrvW4C5atEjnz593PR8/frxOnDjRbUUBAAAAHdWugPvPd044deqULl++3C0FAQAAAJ3h0V0UAAAAgN6uXQHXYrHIYrF0dy0AAABAp7XrQ2ZOp1P333+/fH19JUn19fVavHixBgwY4NZv586dXV8hAAAA4IF2Bdw5c+a4PZ89e3a3FAMAAAB0VrsC7saNG7u7DgAAAKBL8CEzAAAAGIWACwAAAKMQcAEAAGAUAi4AAACM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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "bootstrap_ci_means(df_, 'Age', 'Survived', 5000)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 71, "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", "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
\n", "
" ], "text/plain": [ " PassengerId Survived Pclass \\\n", "0 1 0 3 \n", "1 2 1 1 \n", "\n", " Name Sex Age SibSp \\\n", "0 Braund, Mr. Owen Harris male 22.0 1 \n", "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", "\n", " Parch Ticket Fare Cabin Embarked \n", "0 0 A/5 21171 7.2500 NaN S \n", "1 0 PC 17599 71.2833 C85 C " ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head(2)" ] } ], "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.5.4" } }, "nbformat": 4, "nbformat_minor": 2 }