{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Introduction to mathematical statistics \n", "\n", "Welcome to the lecture 12 in 02403\n", "\n", "During the lectures we will present both slides and notebooks. \n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import scipy.stats as stats\n", "import statsmodels.api as sm\n", "import statsmodels.formula.api as smf\n", "import statsmodels.stats.power as smp\n", "import statsmodels.stats.proportion as smprop" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example: CI for exponential rate or mean" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAkv0lEQVR4nO3df1CU94HH8c/6g0VPWX8VFhCU1tQfUVAx6pK7ai+k1GNSubvJeI53kES9MYdzWDtJJW3jGSe3zjgm8Rqrsamhd4YjMY3YMyaWYtSxkkQUWrEXExsrJGUhmUZWSbI67Pf+yLjtnqAuP/yGx/dr5pnpPvt9dr9fl8C7D88uLmOMEQAAgCUDbE8AAADc2ogRAABgFTECAACsIkYAAIBVxAgAALCKGAEAAFYRIwAAwCpiBAAAWDXI9gRuRDgc1h/+8AcNHz5cLpfL9nQAAMANMMbowoULSklJ0YABXZ//6Bcx8oc//EFpaWm2pwEAALqhqalJY8eO7fL+fhEjw4cPl/T5YhISEizPBgAA3IhgMKi0tLTIz/Gu9IsYufKrmYSEBGIEAIB+5nqXWHABKwAAsIoYAQAAVhEjAADAKmIEAABYRYwAAACriBEAAGAVMQIAAKwiRgAAgFXECAAAsIoYAQAAVvUoRjZs2CCXy6VVq1Zdc9yuXbs0adIkxcfHa9q0adq3b19PnhYAADhIt2Pk2LFjeuaZZ5SZmXnNcUePHtXixYu1dOlS1dXVqaCgQAUFBWpoaOjuUwMAAAfpVoxcvHhRS5Ys0Y9//GONHDnymmM3b96sb37zm3rooYc0efJkrV+/XjNnztTTTz/drQkDAABn6VaMFBcXKz8/X7m5udcdW1NTc9W4vLw81dTUdHlMKBRSMBiM2gAAgDMNivWAiooKnThxQseOHbuh8YFAQElJSVH7kpKSFAgEujzG7/dr3bp1sU6tW8aveeWmPE9v+v2GfNtTAACg18R0ZqSpqUklJSV6/vnnFR8f31dzUmlpqdra2iJbU1NTnz0XAACwK6YzI8ePH1dra6tmzpwZ2dfR0aHDhw/r6aefVigU0sCBA6OO8Xq9amlpidrX0tIir9fb5fO43W653e5YpgYAAPqpmM6M3HXXXTp58qTq6+sj26xZs7RkyRLV19dfFSKS5PP5VF1dHbWvqqpKPp+vZzMHAACOENOZkeHDh2vq1KlR+/7iL/5Co0ePjuwvLCxUamqq/H6/JKmkpETz5s3Tpk2blJ+fr4qKCtXW1mr79u29tAQAANCf9fonsDY2Nqq5uTlyOycnR+Xl5dq+fbuysrL00ksvqbKy8qqoAQAAtyaXMcbYnsT1BINBeTwetbW1KSEhoVcfm3fTAADQN2705zd/mwYAAFhFjAAAAKuIEQAAYBUxAgAArCJGAACAVcQIAACwihgBAABWESMAAMAqYgQAAFhFjAAAAKuIEQAAYBUxAgAArCJGAACAVcQIAACwihgBAABWESMAAMAqYgQAAFhFjAAAAKuIEQAAYBUxAgAArCJGAACAVcQIAACwihgBAABWESMAAMAqYgQAAFhFjAAAAKuIEQAAYBUxAgAArCJGAACAVcQIAACwihgBAABWESMAAMAqYgQAAFgVU4xs3bpVmZmZSkhIUEJCgnw+n1599dUux5eVlcnlckVt8fHxPZ40AABwjkGxDB47dqw2bNig2267TcYY/fSnP9XChQtVV1en22+/vdNjEhISdPr06chtl8vVsxkDAABHiSlG7rnnnqjbjz/+uLZu3ao33nijyxhxuVzyer3dnyEAAHC0bl8z0tHRoYqKCrW3t8vn83U57uLFixo3bpzS0tK0cOFCnTp16rqPHQqFFAwGozYAAOBMMcfIyZMnNWzYMLndbq1YsUK7d+/WlClTOh07ceJE7dixQ3v27NHOnTsVDoeVk5Oj999//5rP4ff75fF4IltaWlqs0wQAAP2EyxhjYjng0qVLamxsVFtbm1566SU9++yzOnToUJdB8ucuX76syZMna/HixVq/fn2X40KhkEKhUOR2MBhUWlqa2tralJCQEMt0r2v8mld69fFuht9vyLc9BQAArisYDMrj8Vz353dM14xIUlxcnCZMmCBJys7O1rFjx7R582Y988wz1z128ODBmjFjhs6cOXPNcW63W263O9apAQCAfqjHnzMSDoejzmJcS0dHh06ePKnk5OSePi0AAHCImM6MlJaWasGCBUpPT9eFCxdUXl6ugwcPav/+/ZKkwsJCpaamyu/3S5Iee+wxzZ07VxMmTND58+e1ceNGnTt3TsuWLev9lQAAgH4pphhpbW1VYWGhmpub5fF4lJmZqf379+vuu++WJDU2NmrAgD+dbPn444+1fPlyBQIBjRw5UtnZ2Tp69OgNXV8CAABuDTFf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HvOb3/zGLFy4sN+9pe7BBx80Ho/HHDx4MOptdZ988klkzIoVK0x6ero5cOCAqa2tNT6fz/h8Pouzjt2aNWvMoUOHzNmzZ81vfvMbs2bNGuNyucwvfvELY4wz1tiVP383jTHOWOt3vvMdc/DgQXP27Fnzq1/9yuTm5poxY8aY1tZWY4wz1mjM52/PHjRokHn88cfNu+++a55//nkzdOhQs3PnzsgYJ3wfuqKjo8Okp6eb7373u1fd54TXtKioyKSmpkbe2vvyyy+bMWPGmIcffjgy5ma+no6LEWOM+eEPf2jS09NNXFycmT17tnnjjTdsT6nHXn/9dSPpqq2oqMgY8/nbsH7wgx+YpKQk43a7zV133WVOnz5td9Ix6mx9ksxzzz0XGfPpp5+af/mXfzEjR440Q4cONX/7t39rmpub7U26Gx544AEzbtw4ExcXZ770pS+Zu+66KxIixjhjjV35/zHihLUuWrTIJCcnm7i4OJOammoWLVoU9dkbTljjFf/zP/9jpk6datxut5k0aZLZvn171P1O+D50xf79+42kTufvhNc0GAyakpISk56ebuLj482Xv/xl873vfc+EQqHImJv5erqM+bOPWwMAALjJHHXNCAAA6H+IEQAAYBUxAgAArCJGAACAVcQIAACwihgBAABWESMAAMAqYgQAAFhFjAAAAKuIEQAAYBUxAgAArCJGAACAVf8HC+mRDEdhCd8AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "wait_times = np.array([32.6, 1.6, 42.1, 29.2, 53.4, 79.3, 2.3, 4.7, 13.6, 2.0])\n", "\n", "plt.hist(wait_times)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We think the underlying distribution is an exponential distribution" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "26.080000000000002\n" ] } ], "source": [ "# lets compute the mean from the data: \n", "print(wait_times.mean())" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.03834355828220859\n" ] } ], "source": [ "# calculate the average rate:\n", "lamb = 1/wait_times.mean()\n", "print(lamb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Parametric bootstrap" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGdCAYAAAAxCSikAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAji0lEQVR4nO3dfXBU1cHH8V9eSIJiFk1KlmAgqGgUAlECYakd2iFjsGk1fdHAUIlI29EqxsYiCQLR8aHBdrDgwJjBWrWjCKajqY0UG1egWiIxL4iZKmIFQoVNQIcsRk2c7Hn+cFi7sCAbgnt2/X5mdpR7z13OmeskX+/u3o0xxhgBAABYLDbcEwAAAPgqBAsAALAewQIAAKxHsAAAAOsRLAAAwHoECwAAsB7BAgAArEewAAAA68WHewIDwefz6cCBAzrvvPMUExMT7ukAAIDTYIzR0aNHlZ6ertjYU19DiYpgOXDggDIyMsI9DQAA0A/79+/XhRdeeMoxUREs5513nqQvFpycnBzm2QAAgNPh9XqVkZHh/z1+KlERLMdeBkpOTiZYAACIMKfzdg7edAsAAKxHsAAAAOsRLAAAwHoECwAAsB7BAgAArEewAAAA6xEsAADAegQLAACwHsECAACsR7AAAADrESwAAMB6BAsAALBev4JlzZo1yszMVFJSkvLy8tTY2HjK8TU1NcrKylJSUpKys7O1cePGgP0333yzYmJiAh4zZszoz9QAAEAUCjlYNmzYoLKyMlVWVqqlpUUTJkxQQUGBOjs7g47ftm2bZs2apXnz5qm1tVVFRUUqKipSW1tbwLgZM2bo4MGD/sczzzzTvxUBAICoE2OMMaEckJeXp0mTJmn16tWSJJ/Pp4yMDM2fP1/l5eUnjC8uLlZ3d7fq6ur826ZMmaKcnBxVV1dL+uIKy5EjR1RbW9uvRXi9XjkcDnV1dSk5Oblfz4HIlln+Yr+P3bu8cABnAgA4XaH8/g7pCktvb6+am5uVn5//5RPExio/P18NDQ1Bj2loaAgYL0kFBQUnjN+yZYuGDRumyy67TLfddps+/PDDk86jp6dHXq834AEAAKJXSMFy+PBh9fX1KS0tLWB7WlqaPB5P0GM8Hs9Xjp8xY4b+/Oc/y+1268EHH9TWrVt17bXXqq+vL+hzVlVVyeFw+B8ZGRmhLAMAAESY+HBPQJJmzpzp//fs7GyNHz9eF198sbZs2aLp06efML6iokJlZWX+P3u9XqIFAIAoFtIVltTUVMXFxamjoyNge0dHh5xOZ9BjnE5nSOMl6aKLLlJqaqree++9oPsTExOVnJwc8AAAANErpGBJSEjQxIkT5Xa7/dt8Pp/cbrdcLlfQY1wuV8B4Saqvrz/peEn673//qw8//FDDhw8PZXoAACBKhfyx5rKyMj366KN68skn9fbbb+u2225Td3e35s6dK0maM2eOKioq/ONLS0u1adMmrVixQu+8847uu+8+NTU16Y477pAkffzxx1qwYIFef/117d27V263W9dff70uueQSFRQUDNAyAQBAJAv5PSzFxcU6dOiQli5dKo/Ho5ycHG3atMn/xtr29nbFxn7ZQVOnTtW6deu0ePFiLVq0SGPGjFFtba3GjRsnSYqLi9POnTv15JNP6siRI0pPT9c111yjBx54QImJiQO0TAAAEMlCvg+LjbgPC7gPCwBEnrN2HxYAAIBwsOJjzYB0ZldJAADRjSssAADAegQLAACwHsECAACsR7AAAADrESwAAMB6BAsAALAewQIAAKxHsAAAAOsRLAAAwHoECwAAsB7BAgAArEewAAAA6xEsAADAegQLAACwHsECAACsFx/uCQDhlln+Yr+P3bu8cABnAgA4Ga6wAAAA6xEsAADAegQLAACwHsECAACsR7AAAADrESwAAMB6BAsAALAewQIAAKxHsAAAAOsRLAAAwHoECwAAsB7BAgAArEewAAAA6xEsAADAegQLAACwHsECAACsR7AAAADrESwAAMB6BAsAALAewQIAAKxHsAAAAOsRLAAAwHoECwAAsB7BAgAArEewAAAA6xEsAADAegQLAACwHsECAACsR7AAAADrESwAAMB6BAsAALAewQIAAKxHsAAAAOsRLAAAwHoECwAAsB7BAgAArEewAAAA6xEsAADAegQLAACwHsECAACsR7AAAADr9StY1qxZo8zMTCUlJSkvL0+NjY2nHF9TU6OsrCwlJSUpOztbGzduPOnYW2+9VTExMVq5cmV/pgYAAKJQyMGyYcMGlZWVqbKyUi0tLZowYYIKCgrU2dkZdPy2bds0a9YszZs3T62trSoqKlJRUZHa2tpOGPv888/r9ddfV3p6eugrAQAAUSvkYHnooYf0i1/8QnPnztUVV1yh6upqnXPOOfrTn/4UdPyq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tmCWL1/uvzXBMZG+xvvuu08xMTEBj6ysLP/+SF+fJH3wwQf62c9+ppSUFA0ePFjZ2dlqamry74/0nzOZmZknnMOYmBjdfvvtkiL/HPb19WnJkiUaPXq0Bg8erIsvvlgPPPBAwPfxRPo5DMrAKhs3bjT33nuvee6554wk8/zzzwfsX758uXE4HKa2tta8+eab5rrrrjOjR482n376aXgmHKKCggLz+OOPm7a2NrNjxw7z/e9/34wcOdJ8/PHH/jG33nqrycjIMG632zQ1NZkpU6aYqVOnhnHWp++FF14wL774onn33XfNrl27zKJFi8ygQYNMW1ubMSay13a8xsZGk5mZacaPH29KS0v92yN9jZWVlWbs2LHm4MGD/sehQ4f8+yN9fR999JEZNWqUufnmm8327dvN+++/b1566SXz3nvv+cdE+s+Zzs7OgPNXX19vJJnNmzcbYyL/HC5btsykpKSYuro6s2fPHlNTU2OGDBliVq1a5R8T6ecwGILFYscHi8/nM06n0/z+97/3bzty5IhJTEw0zzzzTBhmeOY6OzuNJLN161ZjzBfrGTRokKmpqfGPefvtt40k09DQEK5pnpHzzz/f/PGPf4yqtR09etSMGTPG1NfXm2nTpvmDJRrWWFlZaSZMmBB0XzSsb+HChebqq68+6f5o/DlTWlpqLr74YuPz+aLiHBYWFppbbrklYNuPf/xjM3v2bGNMdJ5DY4zhJaEIsmfPHnk8HuXn5/u3ORwO5eXlqaGhIYwz67+uri5J0gUXXCBJam5u1ueffx6wxqysLI0cOTLi1tjX16f169eru7tbLpcrqtZ2++23q7CwMGAtUvScv927dys9PV0XXXSRZs+erfb2dknRsb4XXnhBubm5uuGGGzRs2DBdeeWVevTRR/37o+3nTG9vr5566indcsstiomJiYpzOHXqVLndbr377ruSpDfffFOvvfaarr32WknRdw6Pichva/6m8ng8kuS/q/AxaWlp/n2RxOfz6a677tK3v/1t/52PPR6PEhISTvgyy0ha41tvvSWXy6XPPvtMQ4YM0fPPP68rrrhCO3bsiPi1SdL69evV0tKiN95444R90XD+8vLy9MQTT+iyyy7TwYMHdf/99+s73/mO2traomJ977//vh555BGVlZVp0aJFeuONN3TnnXcqISFBJSUlUfdzpra2VkeOHNHNN98sKTr+Gy0vL5fX61VWVpbi4uLU19enZcuWafbs2ZKi73fFMQQLwub2229XW1ubXnvttXBPZUBddtll2rFjh7q6uvSXv/xFJSUl2rp1a7inNSD279+v0tJS1dfXR+1XZxz7v1RJGj9+vPLy8jRq1Cg9++yzGjx4cBhnNjB8Pp9yc3P129/+VpJ05ZVXqq2tTdXV1SopKQnz7AbeY489pmuvvVbp6enhnsqAefbZZ/X0009r3bp1Gjt2rHbs2KG77rpL6enpUXkOj+EloQjidDol6YR3s3d0dPj3RYo77rhDdXV12rx5sy688EL/dqfTqd7eXh05ciRgfCStMSEhQZdccokmTpyoqqoqTZgwQatWrYqKtTU3N6uzs1NXXXWV4uPjFR8fr61bt+rhhx9WfHy80tLSIn6Nxxs6dKguvfRSvffee1FxDocPH64rrrgiYNvll1/uf9krmn7O7Nu3Ty+//LJ+/vOf+7dFwzlcsGCBysvLNXPmTGVnZ+umm27Sr3/9a/+XDkfTOfxfBEsEGT16tJxOp9xut3+b1+vV9u3b5XK5wjiz02eM0R133KHnn39er7zyikaPHh2wf+LEiRo0aFDAGnft2qX29vaIWePxfD6fenp6omJt06dP11tvvaUdO3b4H7m5uZo9e7b/3yN9jcf7+OOP9Z///EfDhw+PinP47W9/+4RbCbz77rsaNWqUpOj4OXPM448/rmHDhqmwsNC/LRrO4SeffBLwJcOSFBcXJ5/PJym6zmGAcL/rF4GOHj1qWltbTWtrq5FkHnroIdPa2mr27dtnjPnio2pDhw41f/3rX83OnTvN9ddfH1EfVbvtttuMw+EwW7ZsCfjY4SeffOIfc+utt5qRI0eaV155xTQ1NRmXy2VcLlcYZ336ysvLzdatW82ePXvMzp07TXl5uYmJiTH/+Mc/jDGRvbaT+d9PCRkT+Wu8++67zZYtW8yePXvMv/71L5Ofn29SU1NNZ2enMSby19fY2Gji4+PNsmXLzO7du83TTz9tzjnnHPPUU0/5x0T6zxljjOnr6zMjR440CxcuPGFfpJ/DkpISM2LECP/Hmp977jmTmppq7rnnHv+YaDiHxyNYLLN582Yj6YRHSUmJMeaLj6stWbLEpKWlmcTERDN9+nSza9eu8E46BMHWJsk8/vjj/jGffvqp+dWvfmXOP/98c84555gf/ehH5uDBg+GbdAhuueUWM2rUKJOQkGC+9a1vmenTp/tjxZjIXtvJHB8skb7G4uJiM3z4cJOQkGBGjBhhiouLA+5REunrM8aYv/3tb2bcuHEmMTHRZGVlmbVr1wbsj/SfM8YY89JLLxlJQecd6efQ6/Wa0tJSM3LkSJOUlGQuuugic++995qenh7/mGg4h8eLMeZ/bo0HAABgId7DAgAArEewAAAA6xEsAADAegQLAACwHsECAACsR7AAAADrESwAAMB6BAsAALAewQIAAKxHsAAAAOsRLAAAwHoECwAAsN7/A8h7E4KU43SlAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "array([[ 2.96495993, 4.43628773, 24.48763239, ..., 16.73287127,\n", " 15.94850856, 21.62056837],\n", " [ 9.04572614, 58.89290713, 33.33033185, ..., 0.53766852,\n", " 9.19729711, 25.62373394],\n", " [11.1425948 , 10.781019 , 95.7625212 , ..., 1.69305451,\n", " 22.98697186, 8.08183043],\n", " ...,\n", " [ 1.10549793, 5.73772725, 15.63935791, ..., 14.34766344,\n", " 13.23584009, 78.22722848],\n", " [ 7.83029244, 13.21329698, 13.71433202, ..., 17.84169249,\n", " 1.30279392, 16.05568805],\n", " [42.7090726 , 3.28390998, 10.9779512 , ..., 19.01209514,\n", " 39.59550638, 13.91474392]])" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Now do 100000 simulations\n", "k = 100000\n", "sim_wait_times = stats.expon.rvs(size=(k,10), scale=1/lamb)\n", "\n", "# for each simulation we calculate the mean:\n", "sim_means = sim_wait_times.mean(axis=1)\n", "\n", "# now we plot a histogram of all the (100000) mean values\n", "plt.hist(sim_means, density=True, bins=30)\n", "plt.show()\n", "sim_wait_times" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For each simulation we had n = 10. \n", "\n", "This is not very large and CLT does not apply - we also see in the plot above that the distribution of the means does not look like a normal distribution\n", "\n", "(according to the CLT it should approach a normal distribution as n increases - try this yourself. How large do YOU think n should be? Do you agree that maybe n>30 is not always enough?)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[12.48394811 44.46039936]\n" ] } ], "source": [ "# From simulated means we can find the 95% CI for the mean:\n", "CI = np.percentile(sim_means, [2.5, 97.5], method=\"averaged_inverted_cdf\")\n", "print(CI)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We just made a simulation based confidence interval for the mean :-)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Without distribution assumption" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[53.4 79.3 53.4 79.3 79.3]\n", " [ 2.3 2.3 79.3 13.6 42.1]\n", " [ 2.3 32.6 13.6 2. 1.6]\n", " [29.2 53.4 13.6 4.7 2. ]\n", " [ 2. 2.3 32.6 79.3 79.3]\n", " [32.6 2. 32.6 13.6 2. ]\n", " [79.3 4.7 53.4 13.6 53.4]\n", " [ 2.3 53.4 13.6 79.3 79.3]\n", " [79.3 42.1 2.3 29.2 13.6]\n", " [42.1 79.3 42.1 13.6 53.4]]\n" ] } ], "source": [ "# First lets try to simulate 5 more samples by re-sampling the original data:\n", "\n", "sim_data = np.random.choice(wait_times,size=(len(wait_times), 5))\n", "print(sim_data)" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[11.71 42.44]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGdCAYAAAAxCSikAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAArHElEQVR4nO3df3RU9Z3/8ddMfkx+YAIlNUMwELqm8tOkEhKD9mCXHENNt01XMbKuRMpXj0otbSwKHCR63DaoBwsWFpa2VvesFEpbWIsUN43C2iUCSeAoWlltgVBxEtIuCU7Ij2bu9w8PF6cMmBkG7meG5+OcOb3c+dzkfT/NJ3n5ufd+xmVZliUAAACDuZ0uAAAA4NMQWAAAgPEILAAAwHgEFgAAYDwCCwAAMB6BBQAAGI/AAgAAjEdgAQAAxkt0uoBoCAQCOnbsmK644gq5XC6nywEAAINgWZZOnjypnJwcud3nn0OJi8By7Ngx5ebmOl0GAACIwNGjR3XVVVedt01cBJYrrrhC0scnnJGR4XA1AABgMLq6upSbm2v/HT+fuAgspy8DZWRkEFgAAIgxg7mdg5tuAQCA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADGI7AAAADjEVgAAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIyX6HQBAMKXt/DliI89vKwiipUAwKXBDAsAADBeRIFl9erVysvLU0pKikpKSrRnz57ztt+0aZPGjh2rlJQUTZo0Sdu2bQt6/+6775bL5Qp6zZgxI5LSAABAHAo7sGzcuFE1NTWqra1VS0uLCgoKVF5ervb29pDtd+3apVmzZmnu3Lnat2+fKisrVVlZqQMHDgS1mzFjhj788EP79bOf/SyyMwIAAHEn7MDyzDPP6J577tGcOXM0fvx4rV27VmlpaXruuedCtl+5cqVmzJihBQsWaNy4cXriiSd03XXXadWqVUHtPB6PvF6v/Ro2bFhkZwQAAOJOWIGlr69Pzc3NKisrO/MF3G6VlZWpsbEx5DGNjY1B7SWpvLz8rPY7duzQlVdeqWuuuUb333+//vznP5+zjt7eXnV1dQW9AABA/AorsHR0dGhgYEDZ2dlB+7Ozs+Xz+UIe4/P5PrX9jBkz9O///u9qaGjQk08+qZ07d+rLX/6yBgYGQn7Nuro6ZWZm2q/c3NxwTgMXkd/vt+9D8vv9TpcDIAyMX5jMiMea77jjDnt70qRJuvbaa/V3f/d32rFjh6ZPn35W+0WLFqmmpsb+d1dXF6EFAIA4FtYMS1ZWlhISEtTW1ha0v62tTV6vN+QxXq83rPaS9LnPfU5ZWVl6//33Q77v8XiUkZER9AIAAPErrMCSnJysyZMnq6Ghwd4XCATU0NCg0tLSkMeUlpYGtZek+vr6c7aXpD/96U/685//rBEjRoRTHgyQkJCgW265RbfccosSEhKcLgdAGBi/MFnYl4RqampUXV2toqIiFRcXa8WKFfL7/ZozZ44kafbs2Ro5cqTq6uokSfPnz9e0adO0fPlyVVRUaMOGDWpqatK6deskSR999JEef/xx3XrrrfJ6vfrDH/6ghx9+WFdffbXKy8ujeKq4FFJSUvTyy5GvwgrAOYxfmCzswFJVVaXjx49r6dKl8vl8Kiws1Pbt2+0ba1tbW+V2n5m4mTp1qtavX68lS5Zo8eLFys/P15YtWzRx4kRJHyf6N998Uy+88IJOnDihnJwc3XzzzXriiSfk8XiidJoAACCWuSzLspwu4kJ1dXUpMzNTnZ2d3M+CywKfJQQgHoTz95vPEkJU+f1+paenKz09nccigRjD+IXJjHisGfGlu7vb6RIARIjxC1MxwwIAAIxHYAEAAMbjkhDgkAu5cRYALjfMsAAAAOMRWAAAgPG4JISocrvdmjZtmr0NIHYwfmEyAguiKjU1VTt27HC6DAARYPzCZERoAABgPAILAAAwHpeEEFV+v195eXmSpMOHDys9Pd3ZgnAWPocI58L4hckILIi6jo4Op0sAECHGL0zFJSEAAGA8AgsAADAegQUAABiPwAIAAIxHYAEAAMbjKSFEldvtVlFRkb0NIHYwfmEyAguiKjU1VXv37nW6DAARYPzCZERoAABgPAILAAAwHoEFUdXd3a28vDzl5eWpu7vb6XIAhIHxC5NxDwuiyrIsHTlyxN4GEDsYvzAZMywAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIzHU0KIKpfLpfHjx9vbAGIH4xcmI7AgqtLS0vT22287XcYlk7fwZadLAKLmchu/iC1cEgIAAMYjsAAAAONxSQhR1d3drSlTpkiS9u7dq7S0NIcrQjRdyCWww8sqolgJLgbGL0xGYEFUWZald955x94GEDsYvzAZl4QAAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPp4QQVS6XS6NHj7a3AcQOxi9MRmBBVKWlpenw4cNOlwEgAoxfmIxLQgAAwHgEFgAAYDwCC6Lq1KlTmjJliqZMmaJTp045XQ6AMDB+YTLuYUFUBQIBNTU12dsAYgfjFyZjhgUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPF4SghRl5WV5XQJACLE+IWpCCyIqvT0dB0/ftzpMgBEgPELk3FJCAAAGI/AAgAAjEdgQVSdOnVKN910k2666SaW9gZiDOMXJuMeFkRVIBDQzp077W0AsYPxC5MxwwIAAIwXUWBZvXq18vLylJKSopKSEu3Zs+e87Tdt2qSxY8cqJSVFkyZN0rZt287Z9r777pPL5dKKFSsiKQ0AAMShsAPLxo0bVVNTo9raWrW0tKigoEDl5eVqb28P2X7Xrl2aNWuW5s6dq3379qmyslKVlZU6cODAWW03b96sN954Qzk5OeGfCQAAiFthB5ZnnnlG99xzj+bMmaPx48dr7dq1SktL03PPPRey/cqVKzVjxgwtWLBA48aN0xNPPKHrrrtOq1atCmr3wQcf6MEHH9SLL76opKSkyM4GAADEpbACS19fn5qbm1VWVnbmC7jdKisrU2NjY8hjGhsbg9pLUnl5eVD7QCCgu+66SwsWLNCECRPCKQkAAFwGwnpKqKOjQwMDA8rOzg7an52drXfffTfkMT6fL2R7n89n//vJJ59UYmKivvWtbw2qjt7eXvX29tr/7urqGuwp4BJIS0tzugQAEWL8wlSOP9bc3NyslStXqqWlRS6Xa1DH1NXV6fHHH7/IlSES6enp8vv9TpcBIAKMX5gsrEtCWVlZSkhIUFtbW9D+trY2eb3ekMd4vd7ztn/99dfV3t6uUaNGKTExUYmJiTpy5Igeeugh5eXlhfyaixYtUmdnp/06evRoOKcBAABiTFiBJTk5WZMnT1ZDQ4O9LxAIqKGhQaWlpSGPKS0tDWovSfX19Xb7u+66S2+++ab2799vv3JycrRgwQK98sorIb+mx+NRRkZG0AsAAMSvsC8J1dTUqLq6WkVFRSouLtaKFSvk9/s1Z84cSdLs2bM1cuRI1dXVSZLmz5+vadOmafny5aqoqNCGDRvU1NSkdevWSZKGDx+u4cOHB32PpKQkeb1eXXPNNRd6frjEenp6dOutt0qSfvnLXyolJcXhigAMFuMXJgs7sFRVVen48eNaunSpfD6fCgsLtX37dvvG2tbWVrndZyZupk6dqvXr12vJkiVavHix8vPztWXLFk2cODF6ZwFjDAwM2AsDDgwMOFwNgHAwfmEyl2VZltNFXKiuri5lZmaqs7OTy0MO8/v9GjJkiCTpo48+Unp6usMVXVx5C192uoSYcXhZhdMl4FNcbuMXzgvn7zefJQQAAIxHYAEAAMYjsAAAAOMRWAAAgPEILAAAwHiOL82P+JKenq44ePAMuCwxfmEyZlgAAIDxCCwAAMB4BBZEVU9Pj2bOnKmZM2eqp6fH6XIAhIHxC5Ox0i2iKhZXymS12kuDlW7NF4vjF7GNlW4BAEBcIbAAAADjEVgAAIDxCCwAAMB4BBYAAGA8AgsAADAeS/MjqtLS0vTRRx/Z28BpF/L4OI9EXxqMX5iMwIKocrlcrN0AxCjGL0zGJSEAAGA8Aguiqre3V3fffbfuvvtu9fb2Ol0OgDAwfmEyluZHVMXi0t4szW8+7mG5NGJx/CK2sTQ/AACIKwQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADGY6VbRFVaWpra29vtbQCxg/ELkxFYEFUul0uf/exnnS4DQAQYvzAZl4QAAIDxCCyIqt7eXs2bN0/z5s1jaW8gxjB+YTKW5kdUxeLS3izNbz6W5r80YnH8IraxND8AAIgrBBYAAGA8AgsAADAegQUAABiPwAIAAIxHYAEAAMZjpVtEVWpqqg4dOmRvA4gdjF+YjMCCqHK73crLy3O6DAARYPzCZFwSAgAAxiOwIKr6+vq0YMECLViwQH19fU6XAyAMjF+YjKX5EVWxuLQ3S/Obj6X5L41YHL+IbSzNDwAA4gqBBQAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8VjpFlGVmpqqAwcO2NsAYgfjFyYjsCCq3G63JkyY4HQZACLA+IXJuCQEAACMxwwLoqqvr0/f//73JUmLFy9WcnKywxUBGCzGL0zG0vyIqlhc2pul+c3H0vyXRiyOX8S2cP5+M8MCwHgXGioJPEDs4x4WAABgPAILAAAwHoEFAAAYj8ACAACMF1FgWb16tfLy8pSSkqKSkhLt2bPnvO03bdqksWPHKiUlRZMmTdK2bduC3n/sscc0duxYpaena9iwYSorK9Pu3bsjKQ0AAMShsAPLxo0bVVNTo9raWrW0tKigoEDl5eVqb28P2X7Xrl2aNWuW5s6dq3379qmyslKVlZX28s+S9PnPf16rVq3SW2+9pd/97nfKy8vTzTffrOPHj0d+ZnBESkqK9uzZoz179iglJcXpcgCEgfELk4W9DktJSYmmTJmiVatWSZICgYByc3P14IMPauHChWe1r6qqkt/v19atW+19119/vQoLC7V27dqQ3+P0c9m//e1vNX369E+tiXVYcCFYhyX+8VgzYKZw/n6HNcPS19en5uZmlZWVnfkCbrfKysrU2NgY8pjGxsag9pJUXl5+zvZ9fX1at26dMjMzVVBQELJNb2+vurq6gl4AACB+hbVwXEdHhwYGBpSdnR20Pzs7W++++27IY3w+X8j2Pp8vaN/WrVt1xx13qLu7WyNGjFB9fb2ysrJCfs26ujo9/vjj4ZSOS6Svr08rV66UJM2fP/+SLe3NLAlw4Zwav8BgGPOU0Je+9CXt379fu3bt0owZM3T77bef876YRYsWqbOz034dPXr0EleLc+nv79fDDz+shx9+WP39/U6XAyAMjF+YLKzAkpWVpYSEBLW1tQXtb2trk9frDXmM1+sdVPv09HRdffXVuv766/WTn/xEiYmJ+slPfhLya3o8HmVkZAS9AABA/AorsCQnJ2vy5MlqaGiw9wUCATU0NKi0tDTkMaWlpUHtJam+vv6c7T/5dXt7e8MpDwAAxKmwP/ywpqZG1dXVKioqUnFxsVasWCG/3685c+ZIkmbPnq2RI0eqrq5O0sfXQadNm6bly5eroqJCGzZsUFNTk9atWyfp408H/d73vqevfvWrGjFihDo6OrR69Wp98MEHmjlzZhRPFQAAxKqwA0tVVZWOHz+upUuXyufzqbCwUNu3b7dvrG1tbZXbfWbiZurUqVq/fr2WLFmixYsXKz8/X1u2bNHEiRMlSQkJCXr33Xf1wgsvqKOjQ8OHD9eUKVP0+uuva8KECVE6TQAAEMvCXofFRKzDYg6/368hQ4ZIkj766COlp6dfku/LU0I4H9ZhGRynxi8uXxdtHRYAAAAnhH1JCDiflJQUvfbaa/Y2gNjB+IXJCCyIqoSEBN10001OlwEgAoxfmIxLQgAAwHjMsCCq+vv77UfW7733XiUlJTlcEYDBYvzCZDwlhKjiKSGYiKeEBoenhHCp8ZQQAACIKwQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADGYx0WRJXH49HWrVvtbQCxg/ELkxFYEFWJiYmqqGDNCyAWMX5hMi4JAQAA4zHDgqjq7+/Xiy++KEm68847WdobiCGMX5iMpfkRVSzNDxOxNP/gsDQ/LjWW5gcAAHGFwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPEILAAAwHisw4Ko8ng8+vnPf25vA4gdjF+YjMCCqEpMTNTMmTOdLgNABBi/MBmXhAAAgPGYYUFU/fWvf9XmzZslSV//+teVmMiPGBArGL8wGT+NiKre3l7dfvvtkj5e2ptfeEDsYPzCZFwSAgAAxiOwAAAA4xFYAACA8bhACSDu5S18OeJjDy+riGIlACLFDAsAADAegQUAABiPS0KIquTkZP30pz+1twHEDsYvTEZgQVQlJSXp7rvvdroMABFg/MJkXBICAADGY4YFUfXXv/5Vr7zyiiSpvLyclTKBGML4hcn4aURU9fb26itf+YoklvYGYg3jFybjkhAAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPF4Zg1RlZycrFWrVtnbAGIH4xcmI7AgqpKSkjRv3jynywAQAcYvTMYlIQAAYDxmWBBVAwMDev311yVJX/ziF5WQkOBwRQAGi/ELkxFYEFU9PT360pe+JOnjpb3T09MHfWzewpcvVlkABuFCxi9wsXFJCAAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8QgsAADAeDzWjKhKSkrSU089ZW8DiB2MX5iMwIKoSk5O1oIFC5wuA0AEGL8wWUSXhFavXq28vDylpKSopKREe/bsOW/7TZs2aezYsUpJSdGkSZO0bds2+73+/n498sgjmjRpktLT05WTk6PZs2fr2LFjkZQGAADiUNiBZePGjaqpqVFtba1aWlpUUFCg8vJytbe3h2y/a9cuzZo1S3PnztW+fftUWVmpyspKHThwQJLU3d2tlpYWPfroo2ppadGvfvUrHTx4UF/96lcv7MzgiIGBAe3du1d79+7VwMCA0+UACAPjFyZzWZZlhXNASUmJpkyZYn8EeSAQUG5urh588EEtXLjwrPZVVVXy+/3aunWrve/6669XYWGh1q5dG/J77N27V8XFxTpy5IhGjRr1qTV1dXUpMzNTnZ2dysjICOd0EGV+v19DhgyRxNL8iA+Hl1U4XcIlcyHjF4hEOH+/w5ph6evrU3Nzs8rKys58AbdbZWVlamxsDHlMY2NjUHtJKi8vP2d7Sers7JTL5dLQoUNDvt/b26uurq6gFwAAiF9hBZaOjg4NDAwoOzs7aH92drZ8Pl/IY3w+X1jte3p69Mgjj2jWrFnnTFt1dXXKzMy0X7m5ueGcBgAAiDFGrcPS39+v22+/XZZlac2aNedst2jRInV2dtqvo0ePXsIqAQDApRbWY81ZWVlKSEhQW1tb0P62tjZ5vd6Qx3i93kG1Px1Wjhw5oldfffW817I8Ho88Hk84pQMAgBgW1gxLcnKyJk+erIaGBntfIBBQQ0ODSktLQx5TWloa1F6S6uvrg9qfDivvvfeefvvb32r48OHhlAUAAOJc2AvH1dTUqLq6WkVFRSouLtaKFSvk9/s1Z84cSdLs2bM1cuRI1dXVSZLmz5+vadOmafny5aqoqNCGDRvU1NSkdevWSfo4rNx2221qaWnR1q1bNTAwYN/f8pnPfEbJycnROlcAABCjwg4sVVVVOn78uJYuXSqfz6fCwkJt377dvrG2tbVVbveZiZupU6dq/fr1WrJkiRYvXqz8/Hxt2bJFEydOlCR98MEHeumllyRJhYWFQd/rtdde00033RThqcEJSUlJqq2ttbcBxA7GL0wW9josJmIdlvjAOiww0eW0DgtwqV20dVgAAACcwIcfIqoCgYB+//vfS5LGjRsXdHkQgNkYvzAZgQVRderUKfv+JJb2BmIL4xcmIz4DAADjEVgAAIDxCCwAAMB4BBYAAGA8AgsAADAeTwkBwHlcyIKGLDoHRA+BBVGVlJSk7373u/Y2gNjB+IXJCCyIquTkZD399NNOlwEgAoxfmIx7WAAAgPGYYUFUBQIBtba2SpJGjRrF0t5ADGH8wmQEFkTVqVOnNGbMGEks7Q3EGsYvTEZ8BgAAxiOwAAAA4xFYAACA8QgsAADAeAQWAABgPAILAAAwHo81I6oSExP1wAMP2NsAYgfjFybjJxJR5fF4tHr1aqfLABABxi9MxiUhAABgPGZYEFWWZamjo0OSlJWVJZfL5XBFAAaL8QuTEVgQVd3d3bryyislsbQ3EGsYvzAZl4QAAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIzHY82IqsTERFVXV9vbAGIH4xcmc1mWZTldxIXq6upSZmamOjs7lZGR4XQ5l7W8hS87XQJgjMPLKpwuATBaOH+/uSQEAACMx5wfosqyLFn9vZIkV5KHpb2BGGJZlrq7uyVJaWlpjF8YhRkWRJXV36ujP7hNR39wmx1cAMSG7u5uDRkyREOGDLGDC2AKAgsAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPFYhwVR5XK7lXbNDfY2gNiRkJCg2267zd4GTMLS/IgqluYHooNl/XE5YGl+AAAQVwgsAADAeAQWRFWgr0dHnvyKjjz5FQX6epwuB0AY/H6/XC6XXC6X/H6/0+UAQQgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADGY2l+RJXL7Vbq54rsbQCxIyEhQbfccou9DZiEwIKociUm68qZjzldBoAIpKSk6OWX+XgNmIn/BAYAAMYjsAAAAOMRWBBVgb4etT5zq1qfuZWl+YEY4/f7lZ6ervT0dJbmh3EiCiyrV69WXl6eUlJSVFJSoj179py3/aZNmzR27FilpKRo0qRJ2rZtW9D7v/rVr3TzzTdr+PDhcrlc2r9/fyRlwRBWf6+s/l6nywAQge7ubnV3dztdBnCWsAPLxo0bVVNTo9raWrW0tKigoEDl5eVqb28P2X7Xrl2aNWuW5s6dq3379qmyslKVlZU6cOCA3cbv9+vGG2/Uk08+GfmZAACAuBV2YHnmmWd0zz33aM6cORo/frzWrl2rtLQ0PffccyHbr1y5UjNmzNCCBQs0btw4PfHEE7ruuuu0atUqu81dd92lpUuXqqysLPIzAQAAcSuswNLX16fm5uagYOF2u1VWVqbGxsaQxzQ2Np4VRMrLy8/ZfjB6e3vV1dUV9AIAAPErrMDS0dGhgYEBZWdnB+3Pzs6Wz+cLeYzP5wur/WDU1dUpMzPTfuXm5kb8tQAAgPli8imhRYsWqbOz034dPXrU6ZIAAMBFFNZKt1lZWUpISFBbW1vQ/ra2Nnm93pDHeL3esNoPhsfjkcfjifh4XEQulzy5E+1tALHD7XZr2rRp9jZgkrB+IpOTkzV58mQ1NDTY+wKBgBoaGlRaWhrymNLS0qD2klRfX3/O9oht7iSPvP+0TN5/WiZ3EqESiCWpqanasWOHduzYodTUVKfLAYKE/VlCNTU1qq6uVlFRkYqLi7VixQr5/X7NmTNHkjR79myNHDlSdXV1kqT58+dr2rRpWr58uSoqKrRhwwY1NTVp3bp19tf8y1/+otbWVh07dkySdPDgQUkfz85cyEwMAACID2EHlqqqKh0/flxLly6Vz+dTYWGhtm/fbt9Y29raGjSVOHXqVK1fv15LlizR4sWLlZ+fry1btmjixIl2m5deeskOPJJ0xx13SJJqa2v12GOPRXpuAAAgTrgsy7KcLuJCdXV1KTMzU52dncrIyHC6nMvaqJpf6oO135AkjbzvObmTUxyuCIhNh5dVXPLv6ff7lZeX9/H3P3xY6enpl7wGXF7C+fsd9gwL8GkCp1gXB4hVHR0dTpcAhMRt4AAAwHgEFgAAYDwCCwAAMB6BBQAAGI/AAgAAjMdTQogul0vJ3nx7G0Bk8ha+HPGxkT4S7Xa7VVRUZG8DJiGwIKrcSR6NqP6B02UAiEBqaqr27t3rdBlASAQWnOVC/ssOAICLgTk/AABgPAILoirQ36M/rfmG/rTmGwr09zhdDoAwdHd3Ky8vT3l5eeru7na6HCAIl4QQXZY00NVubwOIHZZl6ciRI/Y2YBJmWAAAgPEILAAAwHgEFgAAYDwCCwAAMB6BBQAAGI+nhBBdLilp+Ch7G0DscLlcGj9+vL0NmITAgqhyJ6Uo5//9q9NlAIhAWlqa3n77bafLAELikhAAADAegQUAABiPwIKoCvT36NiPH9CxHz/A0vxAjOnu7taECRM0YcIEluaHcbiHBdFlSf1/brW3AcQOy7L0zjvv2NuASZhhAQAAxmOGBQDiTN7ClyM6LtDHZVyYixkWAABgPAILAAAwHoEFAAAYj3tYEF0uKSHjSnsbQAxxSaNHj/54k6X5YRgCC6LKnZSiq+5/zukyAETAnZSiw4cPO10GEBKXhAAAgPEILAAAwHgEFkRVoL9XH77wHX34wncU6O91uhwAYQj092rKlCmaMmWKTp065XQ5QBDuYUF0WZb6fO/Z2wBiiGWpqalJkhQIBBwuBghGYIlTka50CQCAibgkBAAAjEdgAQAAxiOwAAAA4xFYAACA8bjpFlHnTs1wugQAEcrKynK6BCAkl2XF/rOnXV1dyszMVGdnpzIy+GMp8ZQQgEvv8LIKp0tAjAnn7zeXhAAAgPEILAAAwHgEFkRVoL9XvvUL5Vu/kKX5gRjD+IXJuOkW0WVZ6j16wN4GEEMYvzAYMywAAMB4BBYAAGA8AgsAADAegQUAABiPm24NxuJvAGLJhfzOYtE5fBoCC6LOleRxugQAEWL8wlQEFkSVOzlFo2p+6XQZACLA+IXJuIcFAAAYj8ACAACMxyUhRJX11z4d3/x9SdJnv75YrsRkhysCMFiMX5iMwIKosgIBnfpjk73tcrgeAIPH+IXJCCwAAMfxSDQ+DfewAAAA40U0w7J69Wo9/fTT8vl8Kigo0A9/+EMVFxefs/2mTZv06KOP6vDhw8rPz9eTTz6pW265xX7fsizV1tbqRz/6kU6cOKEbbrhBa9asUX5+fiTlGYXF3wDg4mJ25vIQ9gzLxo0bVVNTo9raWrW0tKigoEDl5eVqb28P2X7Xrl2aNWuW5s6dq3379qmyslKVlZU6cOCA3eapp57Ss88+q7Vr12r37t1KT09XeXm5enp6Ij8zAAAQN1yWZVnhHFBSUqIpU6Zo1apVkqRAIKDc3Fw9+OCDWrhw4Vntq6qq5Pf7tXXrVnvf9ddfr8LCQq1du1aWZSknJ0cPPfSQvvvd70qSOjs7lZ2dreeff1533HHHp9bU1dWlzMxMdXZ2KiMjI5zTuegutxmWQF+Pjv7gNklS7nd+IXdyisMVARgsxm94mJ25cOH8/Q7rklBfX5+am5u1aNEie5/b7VZZWZkaGxtDHtPY2KiampqgfeXl5dqyZYsk6dChQ/L5fCorK7Pfz8zMVElJiRobG0MGlt7eXvX29tr/7uzslPTxiV8ME2tfuShfNx4F+s7MigV6uyUr4GA1AMLB+A3PqO9sivjYA4+XR7GS2HX67/Zg5k7CCiwdHR0aGBhQdnZ20P7s7Gy9++67IY/x+Xwh2/t8Pvv90/vO1eZv1dXV6fHHHz9rf25u7uBOBJfEB/862+kSAESI8XtxZa5wugKznDx5UpmZmedtE5OPNS9atCho1iYQCOgvf/mLhg8fLpcreOWArq4u5ebm6ujRo8ZdLjINfTV49NXg0E+DR18NHn01eKb3lWVZOnnypHJycj61bViBJSsrSwkJCWprawva39bWJq/XG/IYr9d73van/7etrU0jRowIalNYWBjya3o8Hnk8wZ8oOnTo0PPWnpGRYeT/WSairwaPvhoc+mnw6KvBo68Gz+S++rSZldPCekooOTlZkydPVkNDg70vEAiooaFBpaWlIY8pLS0Nai9J9fX1dvsxY8bI6/UGtenq6tLu3bvP+TUBAMDlJexLQjU1NaqurlZRUZGKi4u1YsUK+f1+zZkzR5I0e/ZsjRw5UnV1dZKk+fPna9q0aVq+fLkqKiq0YcMGNTU1ad26dZIkl8ulb3/72/qXf/kX5efna8yYMXr00UeVk5OjysrK6J0pAACIWWEHlqqqKh0/flxLly6Vz+dTYWGhtm/fbt8029raKrf7zMTN1KlTtX79ei1ZskSLFy9Wfn6+tmzZookTJ9ptHn74Yfn9ft177706ceKEbrzxRm3fvl0pKRf+SJ3H41Ftbe1Zl5BwNvpq8OirwaGfBo++Gjz6avDiqa/CXocFAADgUuOzhAAAgPEILAAAwHgEFgAAYDwCCwAAMF5cB5bVq1crLy9PKSkpKikp0Z49e5wuyXH//d//rX/4h39QTk6OXC6X/ZlOp1mWpaVLl2rEiBFKTU1VWVmZ3nvvPWeKdVhdXZ2mTJmiK664QldeeaUqKyt18ODBoDY9PT2aN2+ehg8friFDhujWW289a6HEy8GaNWt07bXX2otTlZaW6je/+Y39Pv0U2rJly+ylHU6jr8547LHH5HK5gl5jx46136evzvjggw/0z//8zxo+fLhSU1M1adIkNTU12e/Hw+/2uA0sGzduVE1NjWpra9XS0qKCggKVl5ervb3d6dIc5ff7VVBQoNWrV4d8/6mnntKzzz6rtWvXavfu3UpPT1d5ebl6enpCto9nO3fu1Lx58/TGG2+ovr5e/f39uvnmm+X3++023/nOd/TrX/9amzZt0s6dO3Xs2DH94z/+o4NVO+Oqq67SsmXL1NzcrKamJv393/+9vva1r+ntt9+WRD+FsnfvXv3bv/2brr322qD99FWwCRMm6MMPP7Rfv/vd7+z36KuP/d///Z9uuOEGJSUl6Te/+Y3eeecdLV++XMOGDbPbxMXvditOFRcXW/PmzbP/PTAwYOXk5Fh1dXUOVmUWSdbmzZvtfwcCAcvr9VpPP/20ve/EiROWx+OxfvaznzlQoVna29stSdbOnTsty/q4b5KSkqxNmzbZbX7/+99bkqzGxkanyjTGsGHDrB//+Mf0UwgnT5608vPzrfr6emvatGnW/PnzLcviZ+pv1dbWWgUFBSHfo6/OeOSRR6wbb7zxnO/Hy+/2uJxh6evrU3Nzs8rKyux9brdbZWVlamxsdLAysx06dEg+ny+o3zIzM1VSUkK/Sers7JQkfeYzn5EkNTc3q7+/P6i/xo4dq1GjRl3W/TUwMKANGzbI7/ertLSUfgph3rx5qqioCOoTiZ+pUN577z3l5OToc5/7nO688061trZKoq8+6aWXXlJRUZFmzpypK6+8Ul/4whf0ox/9yH4/Xn63x2Vg6ejo0MDAgL367mnZ2dny+XwOVWW+031Dv50tEAjo29/+tm644QZ7lWafz6fk5OSzPnjzcu2vt956S0OGDJHH49F9992nzZs3a/z48fTT39iwYYNaWlrsjy/5JPoqWElJiZ5//nlt375da9as0aFDh/TFL35RJ0+epK8+4Y9//KPWrFmj/Px8vfLKK7r//vv1rW99Sy+88IKk+PndHvbS/MDlaN68eTpw4EDQ9XMEu+aaa7R//351dnbqF7/4haqrq7Vz506nyzLK0aNHNX/+fNXX10flo0fi3Ze//GV7+9prr1VJSYlGjx6tn//850pNTXWwMrMEAgEVFRXp+9//viTpC1/4gg4cOKC1a9equrra4eqiJy5nWLKyspSQkHDW3eJtbW3yer0OVWW+031DvwX75je/qa1bt+q1117TVVddZe/3er3q6+vTiRMngtpfrv2VnJysq6++WpMnT1ZdXZ0KCgq0cuVK+ukTmpub1d7eruuuu06JiYlKTEzUzp079eyzzyoxMVHZ2dn01XkMHTpUn//85/X+++/zc/UJI0aM0Pjx44P2jRs3zr58Fi+/2+MysCQnJ2vy5MlqaGiw9wUCATU0NKi0tNTBysw2ZswYeb3eoH7r6urS7t27L8t+syxL3/zmN7V582a9+uqrGjNmTND7kydPVlJSUlB/HTx4UK2trZdlf/2tQCCg3t5e+ukTpk+frrfeekv79++3X0VFRbrzzjvtbfrq3D766CP94Q9/0IgRI/i5+oQbbrjhrCUX/vd//1ejR4+WFEe/252+6/di2bBhg+XxeKznn3/eeuedd6x7773XGjp0qOXz+ZwuzVEnT5609u3bZ+3bt8+SZD3zzDPWvn37rCNHjliWZVnLli2zhg4dav3nf/6n9eabb1pf+9rXrDFjxlinTp1yuPJL7/7777cyMzOtHTt2WB9++KH96u7uttvcd9991qhRo6xXX33VampqskpLS63S0lIHq3bGwoULrZ07d1qHDh2y3nzzTWvhwoWWy+Wy/uu//suyLPrpfD75lJBl0Vef9NBDD1k7duywDh06ZP3P//yPVVZWZmVlZVnt7e2WZdFXp+3Zs8dKTEy0vve971nvvfee9eKLL1ppaWnWf/zHf9ht4uF3e9wGFsuyrB/+8IfWqFGjrOTkZKu4uNh64403nC7Jca+99pol6axXdXW1ZVkfP/726KOPWtnZ2ZbH47GmT59uHTx40NmiHRKqnyRZP/3pT+02p06dsh544AFr2LBhVlpamvX1r3/d+vDDD50r2iHf+MY3rNGjR1vJycnWZz/7WWv69Ol2WLEs+ul8/jaw0FdnVFVVWSNGjLCSk5OtkSNHWlVVVdb7779vv09fnfHrX//amjhxouXxeKyxY8da69atC3o/Hn63uyzLspyZ2wEAABicuLyHBQAAxBcCCwAAMB6BBQAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACM9/8B8CsD0CredbsAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Now simulate MANY more samples (by re-sapling the original data many times):\n", "k = 100000\n", "sim_data = np.random.choice(wait_times,size=(len(wait_times), k))\n", "\n", "# calculate mean of each sample:\n", "sim_means = sim_data.mean(axis=0)\n", "\n", "# caluclate the 95% CI from the samples:\n", "CI_nonpar = np.percentile(sim_means, [2.5, 97.5], method=\"averaged_inverted_cdf\")\n", "print(CI_nonpar)\n", "\n", "# always visualise :-)\n", "plt.hist(sim_means, density=True,bins=30)\n", "plt.plot([CI[0], CI[0]], [0,.05], '--', color=\"black\")\n", "plt.plot([CI[1], CI[1]], [0,.05], '--', color=\"black\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([12.48394811, 44.46039936])" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "CI" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example: Simulation of difference between two samples" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAGdCAYAAABO2DpVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAXQElEQVR4nO3dfZCVdf3w8c/CygGDXQTlKUAxTVLEVHxAndKklBxTa5piqIgcG20tiKl0c3zgbmiZacaycvBhUv9Iw5wRLSd1CAVyEgQUEy3UtNgUpGTYBdTV2Ov+43d77t8K6J71s+weeb1mzgznOt/l+vDdBd5z9py9aoqiKAIAIEGfnh4AAPjgEBYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQJravX3C9vb2ePnll2PQoEFRU1Ozt08PAHRBURSxbdu2GDVqVPTps+fnJfZ6WLz88ssxZsyYvX1aACBBc3NzjB49eo+P7/WwGDRoUET8z2B1dXV7+/QAQBe0trbGmDFjyv+P78leD4u3v/1RV1cnLACgyrzXyxi8eBMASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0FYXFNddcEzU1NR1u48eP767ZAIAqU/G1Qo466qj44x//+P9/g9q9frkRAKCXqrgKamtrY8SIEd0xCwBQ5Sp+jcVzzz0Xo0aNikMPPTSmT58eGzZseNf1bW1t0dra2uEGAHww1RRFUXR28f333x/bt2+PI444IjZu3Bhz586Nl156KdatW7fH67Nfc801MXfu3F2Ot7S0fDAvm/5wU09P0DlnNPb0BABUkdbW1qivr3/P/78rCot32rp1axx88MFx7bXXxoUXXrjbNW1tbdHW1tZhsDFjxgiLniYsAKhAZ8Pifb3ycvDgwfHRj340nn/++T2uKZVKUSqV3s9pAIAq8b5+jsX27dvj73//e4wcOTJrHgCgilUUFt/73vdi2bJl8Y9//CP+/Oc/xwUXXBB9+/aNadOmddd8AEAVqehbIf/6179i2rRp8eqrr8ZBBx0Up512WqxYsSIOOuig7poPAKgiFYXFwoULu2sOAOADwLVCAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASPO+wmL+/PlRU1MTs2fPThoHAKhmXQ6LVatWxY033hgTJ07MnAcAqGJdCovt27fH9OnT4+abb44DDjggeyYAoEp1KSwaGhrinHPOiSlTprzn2ra2tmhtbe1wAwA+mGor/YCFCxfG448/HqtWrerU+qamppg7d27Fg3XFTxc/u1fOsyff/fRHe/T8ANDTKnrGorm5OWbNmhW333579O/fv1Mf09jYGC0tLeVbc3NzlwYFAHq/ip6xWLNmTWzevDmOO+648rGdO3fG8uXL45e//GW0tbVF3759O3xMqVSKUqmUMy0A0KtVFBZnnnlmPPXUUx2OzZw5M8aPHx+XXXbZLlEBAOxbKgqLQYMGxYQJEzoc+9CHPhRDhw7d5TgAsO/xkzcBgDQVvyvknZYuXZowBgDwQeAZCwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgjbAAANIICwAgTUVhsWDBgpg4cWLU1dVFXV1dTJ48Oe6///7umg0AqDIVhcXo0aNj/vz5sWbNmli9enV86lOfivPOOy+efvrp7poPAKgitZUsPvfcczvcnzdvXixYsCBWrFgRRx11VOpgAED1qSgs/redO3fGXXfdFTt27IjJkyfvcV1bW1u0tbWV77e2tnb1lABAL1fxizefeuqpGDhwYJRKpbj44otj0aJFceSRR+5xfVNTU9TX15dvY8aMeV8DAwC9V8VhccQRR8TatWtj5cqVcckll8SMGTPimWee2eP6xsbGaGlpKd+am5vf18AAQO9V8bdC+vXrF4cddlhERBx//PGxatWquO666+LGG2/c7fpSqRSlUun9TQkAVIX3/XMs2tvbO7yGAgDYd1X0jEVjY2NMnTo1xo4dG9u2bYs77rgjli5dGg8++GB3zQcAVJGKwmLz5s3xta99LTZu3Bj19fUxceLEePDBB+PTn/50d80HAFSRisLiV7/6VXfNAQB8ALhWCACQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQRlgAAGmEBQCQpqKwaGpqihNOOCEGDRoUw4YNi/PPPz/Wr1/fXbMBAFWmorBYtmxZNDQ0xIoVK2Lx4sXx1ltvxWc+85nYsWNHd80HAFSR2koWP/DAAx3u33bbbTFs2LBYs2ZNfOITn0gdDACoPhWFxTu1tLRERMSQIUP2uKatrS3a2trK91tbW9/PKQGAXqzLYdHe3h6zZ8+OU089NSZMmLDHdU1NTTF37tyunoYq89PFz6b+fidvuKmi9ZMPHZp6/k47o7FnzgvQy3T5XSENDQ2xbt26WLhw4buua2xsjJaWlvKtubm5q6cEAHq5Lj1jcemll8Z9990Xy5cvj9GjR7/r2lKpFKVSqUvDAQDVpaKwKIoivv3tb8eiRYti6dKlMW7cuO6aCwCoQhWFRUNDQ9xxxx1x7733xqBBg2LTpk0REVFfXx8DBgzolgEBgOpR0WssFixYEC0tLXH66afHyJEjy7c777yzu+YDAKpIxd8KAQDYE9cKAQDSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAIE3FYbF8+fI499xzY9SoUVFTUxP33HNPN4wFAFSjisNix44dccwxx8T111/fHfMAAFWsttIPmDp1akydOrU7ZgEAqlzFYVGptra2aGtrK99vbW3t7lMCAD2k28Oiqakp5s6d292n6RV+uvjZOHnDqz06w+RDh3Zu4cNN3XL+nv7z97SfLn62p0fYo5M33LRXztPpr8EPqEdf6Pm/Ax0+B2c09twgHzTd9O9muh7+nHf7u0IaGxujpaWlfGtubu7uUwIAPaTbn7EolUpRKpW6+zQAQC/g51gAAGkqfsZi+/bt8fzzz5fvv/jii7F27doYMmRIjB07NnU4AKC6VBwWq1evjjPOOKN8f86cORERMWPGjLjtttvSBgMAqk/FYXH66adHURTdMQsAUOW8xgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASNOlsLj++uvjkEMOif79+8dJJ50Ujz32WPZcAEAVqjgs7rzzzpgzZ05cffXV8fjjj8cxxxwTZ511VmzevLk75gMAqkjFYXHttdfGRRddFDNnzowjjzwybrjhhth///3jlltu6Y75AIAqUlvJ4jfffDPWrFkTjY2N5WN9+vSJKVOmxKOPPrrbj2lra4u2trby/ZaWloiIaG1t7cq87+qNHdvTf89K7Xi97b0XdaPWHW/06Pn32T////t67g1fg3uytz43Pf012NN6+u9AxDs+B93wb+0+q1q+trvpc/72/9tFUbzruorC4j//+U/s3Lkzhg8f3uH48OHD429/+9tuP6apqSnmzp27y/ExY8ZUcmro5f5PTw8Ae+Brc9/TvZ/zbdu2RX19/R4frygsuqKxsTHmzJlTvt/e3h5btmyJoUOHRk1NTUW/V2tra4wZMyaam5ujrq4ue9R9jv3MYy/z2Ms89jKPvfyfZyq2bdsWo0aNetd1FYXFgQceGH379o1XXnmlw/FXXnklRowYsduPKZVKUSqVOhwbPHhwJafdRV1d3T77ie0O9jOPvcxjL/PYyzz7+l6+2zMVb6voxZv9+vWL448/PpYsWVI+1t7eHkuWLInJkydXPiEA8IFS8bdC5syZEzNmzIhJkybFiSeeGD/72c9ix44dMXPmzO6YDwCoIhWHxZe+9KX497//HVdddVVs2rQpPv7xj8cDDzywyws6u0OpVIqrr756l2+t0DX2M4+9zGMv89jLPPay82qK93rfCABAJ7lWCACQRlgAAGmEBQCQRlgAAGmqKixcrr1yTU1NccIJJ8SgQYNi2LBhcf7558f69es7rHnjjTeioaEhhg4dGgMHDowvfOELu/wQNHY1f/78qKmpidmzZ5eP2cvOe+mll+IrX/lKDB06NAYMGBBHH310rF69uvx4URRx1VVXxciRI2PAgAExZcqUeO6553pw4t5p586dceWVV8a4ceNiwIAB8ZGPfCR+9KMfdbieg73cveXLl8e5554bo0aNipqamrjnnns6PN6ZfduyZUtMnz496urqYvDgwXHhhRfG9u2995pBe0VRJRYuXFj069evuOWWW4qnn366uOiii4rBgwcXr7zySk+P1qudddZZxa233lqsW7euWLt2bfHZz362GDt2bLF9+/bymosvvrgYM2ZMsWTJkmL16tXFySefXJxyyik9OHXv99hjjxWHHHJIMXHixGLWrFnl4/ayc7Zs2VIcfPDBxde//vVi5cqVxQsvvFA8+OCDxfPPP19eM3/+/KK+vr645557iieffLL43Oc+V4wbN654/fXXe3Dy3mfevHnF0KFDi/vuu6948cUXi7vuuqsYOHBgcd1115XX2Mvd+8Mf/lBcccUVxd13311ERLFo0aIOj3dm384+++zimGOOKVasWFH86U9/Kg477LBi2rRpe/lP0rtUTViceOKJRUNDQ/n+zp07i1GjRhVNTU09OFX12bx5cxERxbJly4qiKIqtW7cW++23X3HXXXeV1/z1r38tIqJ49NFHe2rMXm3btm3F4YcfXixevLj45Cc/WQ4Le9l5l112WXHaaaft8fH29vZixIgRxU9+8pPysa1btxalUqn4zW9+szdGrBrnnHNO8Y1vfKPDsc9//vPF9OnTi6Kwl531zrDozL4988wzRUQUq1atKq+5//77i5qamuKll17aa7P3NlXxrZC3L9c+ZcqU8rH3ulw7u/f2ZeuHDBkSERFr1qyJt956q8Pejh8/PsaOHWtv96ChoSHOOeecDnsWYS8r8bvf/S4mTZoUX/ziF2PYsGFx7LHHxs0331x+/MUXX4xNmzZ12Mv6+vo46aST7OU7nHLKKbFkyZJ49tlnIyLiySefjEceeSSmTp0aEfayqzqzb48++mgMHjw4Jk2aVF4zZcqU6NOnT6xcuXKvz9xbdPvVTTN05XLt7Kq9vT1mz54dp556akyYMCEiIjZt2hT9+vXb5cJww4cPj02bNvXAlL3bwoUL4/HHH49Vq1bt8pi97LwXXnghFixYEHPmzIkf/vCHsWrVqvjOd74T/fr1ixkzZpT3a3d/5+1lR5dffnm0trbG+PHjo2/fvrFz586YN29eTJ8+PSLCXnZRZ/Zt06ZNMWzYsA6P19bWxpAhQ/bpva2KsCBHQ0NDrFu3Lh555JGeHqUqNTc3x6xZs2Lx4sXRv3//nh6nqrW3t8ekSZPixz/+cUREHHvssbFu3bq44YYbYsaMGT08XXX57W9/G7fffnvccccdcdRRR8XatWtj9uzZMWrUKHtJj6iKb4V05XLtdHTppZfGfffdFw8//HCMHj26fHzEiBHx5ptvxtatWzust7e7WrNmTWzevDmOO+64qK2tjdra2li2bFn8/Oc/j9ra2hg+fLi97KSRI0fGkUce2eHYxz72sdiwYUNERHm//J1/b9///vfj8ssvjy9/+ctx9NFHx1e/+tX47ne/G01NTRFhL7uqM/s2YsSI2Lx5c4fH//vf/8aWLVv26b2tirBwufauK4oiLr300li0aFE89NBDMW7cuA6PH3/88bHffvt12Nv169fHhg0b7O07nHnmmfHUU0/F2rVry7dJkybF9OnTy7+2l51z6qmn7vK252effTYOPvjgiIgYN25cjBgxosNetra2xsqVK+3lO7z22mvRp0/Hf8r79u0b7e3tEWEvu6oz+zZ58uTYunVrrFmzprzmoYceivb29jjppJP2+sy9Rk+/erSzFi5cWJRKpeK2224rnnnmmeKb3/xmMXjw4GLTpk09PVqvdskllxT19fXF0qVLi40bN5Zvr732WnnNxRdfXIwdO7Z46KGHitWrVxeTJ08uJk+e3INTV4///a6QorCXnfXYY48VtbW1xbx584rnnnuuuP3224v999+/+PWvf11eM3/+/GLw4MHFvffeW/zlL38pzjvvPG+R3I0ZM2YUH/7wh8tvN7377ruLAw88sPjBD35QXmMvd2/btm3FE088UTzxxBNFRBTXXntt8cQTTxT//Oc/i6Lo3L6dffbZxbHHHlusXLmyeOSRR4rDDz/c2017eoBK/OIXvyjGjh1b9OvXrzjxxBOLFStW9PRIvV5E7PZ26623lte8/vrrxbe+9a3igAMOKPbff//iggsuKDZu3NhzQ1eRd4aFvey83//+98WECROKUqlUjB8/vrjppps6PN7e3l5ceeWVxfDhw4tSqVSceeaZxfr163to2t6rtbW1mDVrVjF27Niif//+xaGHHlpcccUVRVtbW3mNvdy9hx9+eLf/Ps6YMaMois7t26uvvlpMmzatGDhwYFFXV1fMnDmz2LZtWw/8aXoPl00HANJUxWssAIDqICwAgDTCAgBIIywAgDTCAgBIIywAgDTCAgBIIywAgDTCAgBIIywAgDTCAgBIIywAgDT/FwA8QhxOcbn3AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Callcenter - now from two different days. \n", "# We want to know if there is a significant difference in the average \n", "# waiting time between calls for the two days. \n", "\n", "# Data day 1\n", "x = np.array([32.6, 1.6, 42.1, 29.2, 53.4, 79.3, 2.3 , 4.7, 13.6, 2.0])\n", "n1 = len(x)\n", "\n", "# Data day 2\n", "y = np.array([9.6, 22.2, 52.5, 12.6, 33.0, 15.2, 76.6, 36.3, 110.2, 18.0, 62.4, 10.3])\n", "n2 = len(y)\n", "\n", "# always visualise :-)\n", "plt.hist(x, alpha=.5)\n", "plt.hist(y, alpha=.5)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will assume that both samples come from underlying exponential distributions (but with different means)" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAGdCAYAAADwjmIIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAuY0lEQVR4nO3dfXRU1b3/8U9CyAPIJAGaDIMB0kp5qBQUJESR6jWLINF7U7EVjYptCqKJgiBCflpEqw2GiwqIILVXuLd4QVyFasBgCkq8EnkIREiEqLcgIE5ib8gMoJBA9u8PV06ZgsrDhCGb92uts5Zz9vec2XtH1nzWmXP2hBljjAAAACwTHuoOAAAANAdCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADAShGh7kAoNTY2av/+/WrXrp3CwsJC3R0AAHAajDE6ePCgPB6PwsO//XrNRR1y9u/fr6SkpFB3AwAAnIW9e/fq0ksv/db2izrktGvXTtI3k+RyuULcGwAAcDr8fr+SkpKcz/Fvc1GHnKavqFwuFyEHAIAW5vtuNeHGYwAAYKUzDjklJSW6+eab5fF4FBYWphUrVnxr7dixYxUWFqbnn38+YH9tba2ysrLkcrkUFxen7OxsHTp0KKBm27ZtuvbaaxUdHa2kpCQVFBScdP5ly5apZ8+eio6OVp8+fbRq1aozHQ4AALDUGYecw4cPq2/fvpo7d+531i1fvlwffPCBPB7PSW1ZWVmqrKxUcXGxCgsLVVJSojFjxjjtfr9fQ4cOVdeuXVVWVqYZM2Zo2rRpWrBggVOzfv163X777crOztbWrVuVmZmpzMxMVVRUnOmQAACAjcw5kGSWL19+0v59+/aZzp07m4qKCtO1a1fz3HPPOW0fffSRkWQ2bdrk7HvrrbdMWFiY+fzzz40xxrz44osmPj7eHD161KmZPHmy6dGjh/P6l7/8pcnIyAh435SUFHPvvfeedv99Pp+RZHw+32kfAwAAQut0P7+Dfk9OY2Oj7rrrLk2aNEk/+clPTmovLS1VXFycBgwY4OxLS0tTeHi4NmzY4NQMGTJEkZGRTk16erqqqqp04MABpyYtLS3g3Onp6SotLf3Wvh09elR+vz9gAwAAdgp6yHnmmWcUERGhBx988JTtXq9XCQkJAfsiIiLUvn17eb1epyYxMTGgpun199U0tZ9Kfn6+YmNjnY01cgAAsFdQQ05ZWZlmzZqlhQsXXpArCOfl5cnn8znb3r17Q90lAADQTIIact577z3V1NSoS5cuioiIUEREhD777DNNnDhR3bp1kyS53W7V1NQEHHfs2DHV1tbK7XY7NdXV1QE1Ta+/r6ap/VSioqKcNXFYGwcAALsFNeTcdddd2rZtm8rLy53N4/Fo0qRJWr16tSQpNTVVdXV1Kisrc45bu3atGhsblZKS4tSUlJSooaHBqSkuLlaPHj0UHx/v1KxZsybg/YuLi5WamhrMIQEAgBbqjFc8PnTokD799FPn9a5du1ReXq727durS5cu6tChQ0B969at5Xa71aNHD0lSr169NGzYMI0ePVrz589XQ0ODcnNzNXLkSOdx8zvuuENPPPGEsrOzNXnyZFVUVGjWrFl67rnnnPOOGzdOP/vZzzRz5kxlZGRoyZIl2rx5c8Bj5gAA4CJ2po9tvfPOO0bSSduoUaNOWf/Pj5AbY8z//d//mdtvv91ccsklxuVymV/96lfm4MGDATUffvihGTx4sImKijKdO3c206dPP+ncr732mvnxj39sIiMjzU9+8hOzcuXKMxoLj5ADANDynO7nd5gxxoQwY4WU3+9XbGysfD4f9+cAANBCnO7nN79dBQAArETIAQAAVjrjG48BAN+t25SVZ33s7ukZQewJcHHjSg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIrHgPAKZzLqsUALgxcyQEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsFBHqDgAA/qHblJVnfezu6RlB7AnQ8nElBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWOuOQU1JSoptvvlkej0dhYWFasWKF09bQ0KDJkyerT58+atu2rTwej+6++27t378/4By1tbXKysqSy+VSXFycsrOzdejQoYCabdu26dprr1V0dLSSkpJUUFBwUl+WLVumnj17Kjo6Wn369NGqVavOdDgAAMBSZxxyDh8+rL59+2ru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QL///e/16aef6tVXX9WCBQuUk5MjSQoLC9P48eP11FNP6Y033tD27dt19913y+PxKDMzU9I3V36GDRum0aNHa+PGjXr//feVm5urkSNHyuPxSJLuuOMORUZGKjs7W5WVlVq6dKlmzZqlCRMmBHtIAACgBQr6PTlXXXWVli9frry8PD355JNKTk7W888/r6ysLKfmkUce0eHDhzVmzBjV1dVp8ODBKioqUnR0tFOzePFi5ebm6oYbblB4eLhGjBih2bNnO+2xsbF6++23lZOTo/79+6tjx46aOnVqwFo6AADg4hX0dXJaEtbJAc4P1rqxG+vk4HwL2To5AAAAFwJCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgpYhQdwAA0LJ1m7LyrI/dPT0jiD0BAnElBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgpWYPOdOnT1dYWJjGjx/v7Dty5IhycnLUoUMHXXLJJRoxYoSqq6sDjtuzZ48yMjLUpk0bJSQkaNKkSTp27FhAzbvvvqsrr7xSUVFRuuyyy7Rw4cLmHg4AAGghmjXkbNq0SS+99JJ++tOfBux/6KGH9Oabb2rZsmVat26d9u/fr1tuucVpP378uDIyMlRfX6/169dr0aJFWrhwoaZOnerU7Nq1SxkZGbr++utVXl6u8ePH6ze/+Y1Wr17dnEMCAAAtRLOFnEOHDikrK0t/+MMfFB8f7+z3+Xz64x//qGeffVb/8i//ov79++uVV17R+vXr9cEHH0iS3n77bX300Uf605/+pH79+unGG2/U7373O82dO1f19fWSpPnz5ys5OVkzZ85Ur169lJubq1tvvVXPPfdccw0JAAC0IM0WcnJycpSRkaG0tLSA/WVlZWpoaAjY37NnT3Xp0kWlpaWSpNLSUvXp00eJiYlOTXp6uvx+vyorK52afz53enq6c45TOXr0qPx+f8AGAADs1Cy/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Jdk/B8YY3XPPPRo7dqwGDBhwyhrb5+Cfffrpp5ozZ47uvfdeZ5/tc/D3v/9dx48fP+UYbRjf92lsbNT48eN1zTXX6PLLL5f0zd81MjLypB9rtm1OlixZoi1btig/P/+kNpvngJDTQk2ZMkVhYWHfue3cuVPGGOXk5CghIUHvvfeeNm7cqMzMTN1888364osvQj2Mc3K6c9DY2ChJevTRRzVixAj1799fr7zyisLCwrRs2bIQj+LcnO4czJkzRwcPHlReXl6ouxx0pzsHJ/r88881bNgw/eIXv9Do0aND1HOcbzk5OaqoqNCSJUtC3ZXzau/evRo3bpwWL16s6OjoUHfnvGrRv111MZs4caLuueee76z54Q9/qLVr16qwsFAHDhyQy+WSJL344osqLi7WokWLNGXKFLnd7pOermi6q97tdjdL/4PhdOegKcz17t3b2R8VFaUf/vCH2rNnjyRZPwdr165VaWnpSb9PM2DAAGVlZWnRokVyu90nPU1h0xw02b9/v66//npdffXVWrBgQUBdS52D09WxY0e1atXqlGO0YXzfJTc3V4WFhSopKdGll17q7He73aqvr1ddXV3AlQyb5qSsrEw1NTW68sornX3Hjx9XSUmJXnjhBa1evdreOQj1TUFoXm+88YYJDw83Bw8eDNj/4x//2Dz99NPGmH/cdHvi0xUvvfSScblc5siRI+e1v83B5/OZqKiogBuP6+vrTUJCgvPUjO1z8Nlnn5nt27c72+rVq40k8/rrr5u9e/caY/5x0219fb1zXF5enlU33e7bt890797djBw50hw7duyk9othDgYOHGhyc3Od18ePHzedO3e29sbjxsZGk5OTYzwej/n4449Pam+66fb111939u3cudOKm26b+P3+gH//27dvNwMGDDB33nmn2b59u9VzQMix3Jdffmk6dOhgbrnlFlNeXm6qqqrMww8/bFq3bm3Ky8uNMf94fHro0KGmvLzcFBUVmR/84AdWPT49btw407lzZ7N69Wqzc+dOk52dbRISEkxtba0x5uKYgxPt2rXrpKer6urqTGJiornrrrtMRUWFWbJkiWnTpo01j0/v27fPXHbZZeaGG24w+/btM1988YWzNbF9Doz55hHyqKgos3DhQvPRRx+ZMWPGmLi4uIAnC21y3333mdjYWPPuu+8G/M2/+uorp2bs2LGmS5cuZu3atWbz5s0mNTXVpKamhrDXze/Ep6uMsXcOCDkXgU2bNpmhQ4ea9u3bm3bt2plBgwaZVatWBdTs3r3b3HjjjSYmJsZ07NjRTJw40TQ0NISox8FXX19vJk6caBISEky7du1MWlqaqaioCKixfQ5OdKqQY4wxH374oRk8eLCJiooynTt3NtOnTw9NB5vBK6+8YiSdcjuRzXPQZM6cOaZLly4mMjLSDBw40HzwwQeh7lKz+ba/+SuvvOLUfP311+b+++838fHxpk2bNubnP/95QPi10T+HHFvnIMwYY877d2QAAADNjKerAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALDS/wc09aYZ4crEDwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# simulate k samples of size n1 and n2\n", "\n", "k = 100000\n", "\n", "x_sim = stats.expon.rvs(size=(n1,k), scale=x.mean())\n", "y_sim = stats.expon.rvs(size=(n2,k), scale=y.mean())\n", "\n", "x_means = x_sim.mean(axis=0)\n", "y_means = y_sim.mean(axis=0)\n", "\n", "diffs = x_means - y_means\n", "\n", "plt.hist(diffs, bins=30)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-40.53449269 13.91135617]\n" ] } ], "source": [ "# find 95% confidence interval for the difference\n", "CI = np.percentile(diffs, [2.5, 97.5], method=\"averaged_inverted_cdf\")\n", "print(CI)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Non parametric" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-35.47166667 10.7 ]\n" ] } ], "source": [ "# Make simulations:\n", "k = 100000\n", "\n", "sim_x = np.random.choice(x,size=(len(x),k))\n", "sim_y = np.random.choice(y,size=(len(y),k))\n", "\n", "# calculate difference of means in simulated data:\n", "sim_mean_dif = sim_x.mean(axis=0) - sim_y.mean(axis=0)\n", "\n", "# calculate the 95% CI:\n", "CI = np.percentile(sim_mean_dif, [2.5, 97.5], method=\"averaged_inverted_cdf\")\n", "print(CI)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Inference for proportions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "### Example: Normal approximation of the binomial distribution" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "image/png": "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e/fqscce06FDh/TKK6+0WVdeXp6efvppt7QLAAAAAAAA3U+HEiUAAHjT73//e911112Kiopy2D5v3jz712PGjNGgQYN055136siRI7rhhhuc1pWdnS2r1Wp/3dDQoOjoaM80HAAAAAAAAF0OiRIAgFuFh4crMDBQtbW1Dttra2vbXKjdFZ988oneeuuty94lckFiYqIk6fDhw20mSsxmM496BAAAAAAA8GMur1ECAMDlBAcHKz4+XmVlZfZtra2tKisrU1JS0lXX/+KLL2rgwIGaMmXKFWOrq6slSYMGDbrq8wIAuraioiJZLBaFhIQoMTFRu3btajN2//79mjp1qiwWi0wmkwoLCy9bd35+vkwmkxYuXOjeRgMAAADoEkiUAADczmq16oUXXtBLL72kAwcO6OGHH1ZjY6MyMzMlSbNmzVJ2drY9vrm5WdXV1aqurlZzc7OOHz+u6upqHT582KHe1tZWvfjii5o9e7aCghxvijxy5IiWLl2qyspKHT16VK+99ppmzZqlSZMmaezYsZ7vNADAazZs2CCr1arc3FxVVVUpNjZWqampqqurcxp/7tw5DRs2TPn5+Ve82/H999/Xf/7nfzKXAAAAAD6MRAkAwO0yMjJUUFCgnJwcxcXFqbq6WqWlpfYF3mtqanTy5El7/IkTJzRu3DiNGzdOJ0+eVEFBgcaNG6d//ud/dqj3rbfeUk1NjR588MFLzhkcHKy33npLkydPVkxMjH7+859r6tSpev311z3bWQCA161cuVJz585VZmamRo0apeLiYvXq1Utr1qxxGp+QkKDly5dr+vTpl3384tmzZzVz5ky98MIL6tevn6eaDwAAAMDLWKMEAOARWVlZysrKcrqvvLzc4bXFYpFhGFesc/LkyW3GRUdHa9u2bS63EwDQvTU3N6uystLhTsWAgAClpKSooqLiquqeP3++pkyZopSUFP3bv/3bZWObmprU1NRkf93Q0HBV5wYAAADQebijBAAAAEC3dfr0abW0tNjvWrwgIiJCNputw/WWlJSoqqpKeXl57YrPy8tTWFiYvURHR3f43AAA73H3mld5eXlKSEhQnz59NHDgQKWnp+vQoUMe7AEAoCNIlAAAAADAdxw7dkwLFizQunXrFBIS0q5jsrOzVV9fby/Hjh3zcCsBAO7miTWvtm3bpvnz52vHjh3aunWrzp8/r8mT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46qurlbv3r01fPhwSdIvfvEL/fCHP9SQIUN04sQJ5ebmKjAwUDNmzJAkhYWFac6cObJarerfv79CQ0P1yCOPKCkpSbfccosXrgIAoLOsXLlSc+fOtc8zxcXFeuONN7RmzRotWbLkkviEhAQlJCRIktP9klRaWurweu3atRo4cKAqKys1adIkN/cAAAAAgDeRKIF/MJmcbzeMzm1HZ/G3/qLLycjI0KlTp5STkyObzaa4uDiVlpbaF3ivqalRQMC3NzWeOHFC48aNs78uKChQQUGBkpOTVV5eLkn69NNPNWPGDH322We69tprdfvtt2vHjh269tpr7cf95je/UUBAgKZOnaqmpialpqbqP/7jPzqn0wAAr2hublZlZaWys7Pt2wICApSSkqKKigq3nae+vl6S1L9/f6f7m5qa1NTUZH/d0NDgtnMDAAAA8CwSJQAAj8jKylJWVpbTfReSHxdYLBYZV0jklZSUXPGcISEhKioqUlFRUbvbCQDo3k6fPq2WlhZ7Mv6CiIgIHTx40C3naG1t1cKFC3Xbbbdp9OjRTmPy8vL09NNPu+V8AAAAADpXh9YocWWhxBdeeEHf+9731K9fP/Xr108pKSmXxBuGoZycHA0aNEg9e/ZUSkqKPvroo440DQAAAADcav78+dq3b99lk/bZ2dmqr6+3l2PHjnViCwEAAABcDZcTJa4ulFheXq4ZM2bonXfeUUVFhaKjozV58mQdP37cHrNs2TL99re/VXFxsXbu3KlrrrlGqamp+uqrrzreMwAAAAA+Lzw8XIGBgaqtrXXYXltb2+ZC7a7IysrSli1b9M477+i6665rM85sNis0NNShAAAAdHkmk2Px9fMCbXA5UfLdhRJHjRql4uJi9erVS2vWrHEav27dOv3sZz9TXFycYmJi9Lvf/U6tra0qKyuT9M3dJIWFhXriiSd07733auzYsXr55Zd14sQJbd68+ao6BwAAAMC3BQcHKz4+3v73hST73xtJSUkdrtcwDGVlZWnTpk16++23NXToUHc0FwAAAEAX5FKi5MJCiSkpKd9W4OJCiefOndP58+ftiyB+/PHHstlsDnWGhYUpMTGxzTqbmprU0NDgUAAAAAD4J6vVqhdeeEEvvfSSDhw4oIcffliNjY3KzMyUJM2aNcthsffm5mZVV1erurpazc3NOn78uKqrq3X48GF7zPz5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Wrhwobeb4lHHjx/XT3/6Uw0YMEA9e/bUmDFjtHv3bm83yyNaWlr05JNPaujQoerZs6duuOEGLV26VIZheLtpbvHuu+/qhz/8oaKiomQymbR582aH/YZhKCcnR4MGDVLPnj2VkpKijz76yDuNhST/mU+u1lNPPSWTyeRQYmJivN2sLoGf+/a70rV64IEHLnmfpaWleaexXtae3wG/+uorzZ8/XwMGDFDv3r01depU1dbWeqnF8IX5pLuO9b4yDvvKGOlL41d7+nLHHXdc8n156KGHvNRi51avXq2xY8cqNDRUoaGhSkpK0n//93/b93eX74e/8IX5xBN8ZazvDL40DncGxsiOc/a5bWddLxIl/78NGzbIarUqNzdXVVVVio2NVWpqqurq6rzdNLfbtm2b5s+frx07dmjr1q06f/68Jk+erMbGRm83zePef/99/ed//qfGjh3r7aZ41P/7f/9Pt912m3r06KH//u//1gcffKAVK1aoX79+3m6aRzzzzDNavXq1Vq1apQMHDuiZZ57RsmXL9Nxzz3m7aW7R2Nio2NhYFRUVOd2/bNky/fa3v1VxcbF27typa665Rqmpqfrqq686uaWQ/Gs+cYebb75ZJ0+etJf33nvP203qEvi5b78rXStJSktLc3if/fGPf+zEFnYd7fkdcNGiRXr99de1ceNGbdu2TSdOnNB9993nxVb7L1+aT7rjWO8r47CvjJG+NH619+/xuXPnOnxfli1b5qUWO3fdddcpPz9flZWV2r17t37wgx/o3nvv1f79+yV1n++HP/Cl+cTdfGWs7wy+NA53BsbIjmnrc9tOu14GDMMwjIkTJxrz58+3v25paTGioqKMvLw8L7aqc9TV1RmSjG3btnm7KR71xRdfGCNGjDC2bt1qJCcnGwsWLPB2kzzmscceM26//XZvN6PTTJkyxXjwwQcdtt13333GzJkzvdQiz5FkbNq0yf66tbXViIyMNJYvX27fdubMGcNsNht//OMfvdBC+PN84qrc3FwjNjbW283o8vi5b7+Lr5VhGMbs2bONe++91yvt6eou/h3wzJkzRo8ePYyNGzfaYw4cOGBIMioqKrzVTL/lK/OJL4z1vjIO+9IY6Uvjl7O/x7vr36v9+vUzfve733Xr74cv8pX5xNN8ZazvLL40DncWxsjLa+tz2868XtxRIqm5uVmVlZVKSUmx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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "p = 1/2\n", "\n", "fig, axs = plt.subplots(1, 4, figsize=(20,4))\n", "\n", "# Plot binomial distribution for n = 10\n", "n = 10\n", "axs[0].bar(np.arange(0, n+1, 1), stats.binom.pmf(k=np.arange(0,n+1,1), n=n, p=p), width=0.2, color='red')\n", "\n", "# Plot binomial distribution for n = 20\n", "n = 20\n", "axs[1].bar(np.arange(0, n+1, 1), stats.binom.pmf(k=np.arange(0,n+1,1), n=n, p=p), width=0.3, color='red')\n", "\n", "# Plot binomial distribution for n = 30\n", "n = 30\n", "axs[2].bar(np.arange(0, n+1, 1), stats.binom.pmf(k=np.arange(0,n+1,1), n=n, p=p), width=0.4, color='red')\n", "\n", "# Plot binomial distribution for n = 40\n", "n = 40\n", "axs[3].bar(np.arange(0, n+1, 1), stats.binom.pmf(k=np.arange(0,n+1,1), n=n, p=p), width=0.5, color='red')\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "image/png": "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jh49quuvv169evVSr169tHHjRj3//PPq1auXmpqaAt3FDpeQkKDhw4d71V177bU9/jUHLZkzZ44ef/xxTZ48WSNHjtS//Mu/6OGHH1ZxcXGgu9bpzs1RoTZ/dVehup50lP79++uaa67Rnj17At2Vbo2/9+2Tmpqq2NjYkP4+a+n/AS0WixobG3Xy5EmveL63ul4wryfBMNcH8zzc3efIYJq//Pn3uNVqlaRu93WJiIjQ4MGDlZGRoeLiYo0aNUrPPfdcj/x6BKtgXk86WzDP9e0RTPNwZ2OObJ1L/dw2Pj6+y+4XiRJ99Y2bkZEhh8PhqWtubpbD4VBWVlYAe9Y5DMNQQUGB3nzzTb333ntKSUkJdJc61bhx4/S3v/1NNTU1npKZmampU6eqpqam2z5S3h7f+c53tGvXLq+6//7v/9bVV18doB51rtOnTysszHs6Cw8PV3Nzc4B61HVSUlJksVi85i+3263NmzcH5fzV3YXaetLRTp06pb179yohISHQXenW+HvfPgcPHtSJEydC8vvsUv8PmJGRocsuu8zre2vXrl2qra3le6uLBfN6EgxzfTDPw911jgym+ast/x6vqamRpG73dTlfc3OzGhoaetTXI9gF83rS2YJ5rm+LYJqHA4U50rdL/dw2MzOz6+5Xh24N34OtXbvWMJvNxqpVq4zPPvvMmDlzptG/f3/D6XQGumsdbtasWUZ0dLRRWVlpHDlyxFNOnz4d6K51mVtuucV46KGHAt2NTrNlyxajV69exi9/+Utj9+7dxiuvvGL06dPH+O1vfxvornWKadOmGQMHDjTeeustY9++fcYbb7xhxMbGGo8++migu9YhvvjiC+OTTz4xPvnkE0OSsWTJEuOTTz4x/v73vxuGYRglJSVG//79jd///vfGtm3bjAkTJhgpKSnG//7v/wa456EplNaT9vr5z39uVFZWGvv27TP+67/+y7DZbEZsbKxx9OjRQHct4Ph733oXu1dffPGF8cgjjxhVVVXGvn37jHfffde4/vrrjSFDhhhnzpwJdNe7XGv+H/D+++83rrrqKuO9994zPv74YyMrK8vIysoKYK9DV7CsJz11rg+WeThY5shgmr8uNZY9e/YYTz/9tPHxxx8b+/btM37/+98bqampxs033xzgnnt7/PHHjY0bNxr79u0ztm3bZjz++OOGyWQy3nnnHcMwes7XIxQEy3rSGYJlru8KwTQPdwXmyPY5/+e2XXW/SJR8wwsvvGBcddVVRkREhDF27Fhj06ZNge5Sp5Dks7z00kuB7lqXCfZEiWEYxh/+8AdjxIgRhtlsNoYNG2a8+OKLge5Sp3G73cZDDz1kXHXVVUZkZKSRmppq/OIXvzAaGhoC3bUO8f777/v8Oztt2jTDMAyjubnZmDt3rhEfH2+YzWZj3Lhxxq5duwLb6RAXKutJe+Xm5hoJCQlGRESEMXDgQCM3N9fYs2dPoLvVLfD3vvUudq9Onz5t3HbbbcaVV15pXHbZZcbVV19tzJgxI2R/MNCa/wf83//9X+OnP/2pERMTY/Tp08e48847jSNHjgSu0yEuGNaTnjrXB8s8HCxzZDDNX5caS21trXHzzTcbAwYMMMxmszF48GBjzpw5Rl1dXWA7fp4f//jHxtVXX21EREQYV155pTFu3DjPDwANo+d8PUJFMKwnnSFY5vquEEzzcFdgjmyf839u21X3y2QYhtHep1IAAAAAAAAAAAB6IvYoAQAAAAAAAAAAIYtECQAAAAAAAAAACFkkSgAAAAAAAAAAQMgiUQIAAAAAAAAAAEIWiRIAAAAAAAAAABCySJQAAAAAAAAAAICQRaIEAAAAAAAAAACELBIlAAAAAAAAAAAgZJEoAQAAAAAAAAAAIYtECQAAAAAAAAAACFkkSgAAAAAAAAAAQMgiUQIAAAAAAAAAAELW/wfKlq+bIVhi5wAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Lets plot some binomial distributions with p = 0.10 and an increasing number of observations (n)\n", "\n", "fig, axs = plt.subplots(1, 4, figsize=(20,4))\n", "\n", "p = 1/10\n", "\n", "# Again for n = 10,20,30,40\n", "n = 10\n", "axs[0].bar(np.arange(0, n+1, 1), stats.binom.pmf(k=np.arange(0,n+1,1), n=n, p=p), width=0.2, color='red')\n", "n = 20\n", "axs[1].bar(np.arange(0, n+1, 1), stats.binom.pmf(k=np.arange(0,n+1,1), n=n, p=p), width=0.3, color='red')\n", "n = 30\n", "axs[2].bar(np.arange(0, n+1, 1), stats.binom.pmf(k=np.arange(0,n+1,1), n=n, p=p), width=0.4, color='red')\n", "n = 40\n", "axs[3].bar(np.arange(0, n+1, 1), stats.binom.pmf(k=np.arange(0,n+1,1), n=n, p=p), width=0.5, color='red')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sample size determination and marginn of error (from pole)" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(0.02463853355540394)" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = 0.5\n", "z = stats.norm.ppf(0.975)\n", "n = 1582\n", "z * np.sqrt(p*(1-p)/n) #ME" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(9603.647051735312)" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ME = 0.01\n", "p * (1 - p)*(z / ME)**2 ## Sample size" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example: Confidence interval for one porportion" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.7698412698412699\n" ] } ], "source": [ "n = 252 # total number of people in the sample\n", "y = n-58 # number of left-handed in the sample\n", "\n", "p_hat = y/n\n", "print(p_hat)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2. **Calculating Standard Error**: Using the sample proportion calculated, what is the standard error of the proportion for left-handed individuals in this sample?\n", "\n", "$ \\sigma_{\\hat{p}} $ is the standard error of the sample proportion, calculated as $ \\sigma_{\\hat{p}} = \\sqrt{\\frac{\\hat{p}(1 - \\hat{p})}{n}} $." ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.026516368790824203\n" ] } ], "source": [ "# compute the standard error\n", "se_p_hat = np.sqrt(p_hat*(1-p_hat)/n)\n", "print(se_p_hat)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "3. **Calculating Confidence Interval** (assuming normal approximation): Assuming a normal approximation, what is the 95% confidence interval for the proportion of left-handed individuals in the population, based on this sample?\n", "\n", "$\\hat{p} \\pm z_{1-\\alpha/2} \\sigma_{\\hat{p}}$\n" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[np.float64(0.7178691870112545), np.float64(0.8218133526712853)]\n" ] } ], "source": [ "# compute confidence interval using normal-approximation\n", "print([p_hat - 1.96*se_p_hat, p_hat + 1.96*se_p_hat])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hypothesis test " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "(y-1/6*n)/np.sqrt(n*1/6*5/5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example: Contraceptive pills and the risk of blood clots" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Group using birth control pills:\n", "y1 = 23\n", "n1 = 23 + 34\n", "p1 = y1/n1\n", "print(p1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Group not using birth control pills (control group):\n", "y2 = 35\n", "n2 = 35 + 132\n", "p2 = y2/n2\n", "print(p2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# difference between groups:\n", "diff = p1-p2\n", "print(diff)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# confidence interval for diff:\n", "se_diff = np.sqrt(p1*(1-p1)/n1 + p2*(1-p2)/n2)\n", "\n", "print([diff - 1.96*se_diff, diff + 1.96*se_diff])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "###### Test for equal proportions in the two groups:\n", "# We saw from the interval above that 0.5 was not in the interval. So what do we expect here?\n", "\n", "z_obs,p_value = smprop.proportions_ztest(count = [23, 35], nobs = [57, 167], value=0, prop_var=0)\n", "print(z_obs, p_value)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Hypothesis Test for Two Proportions** \n", "When comparing two proportions (shown here for a two-sided alternative hypothesis):\n", "\n", "$\n", "H_0 : \\; p_1 = p_2,\n", "$\n", "$\n", "H_1 : \\; p_1 \\neq p_2.\n", "$\n", "\n", "**Use the test statistic**\n", "\n", "$\n", "z_{\\text{obs}} = \\frac{\\hat{p}_1 - \\hat{p}_2}{\\sqrt{\\hat{p}(1 - \\hat{p})\\left(\\frac{1}{n_1} + \\frac{1}{n_2}\\right)}},\n", "$\n", "where $\\hat{p} = \\frac{x_1 + x_2}{n_1 + n_2}$." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# *Manual* calculations for the same test: \n", "p_pooled = (y1+y2)/(n1+n2)\n", "print(\"p_hat or p_pooled:\", p_pooled)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# test statistic\n", "z_obs = diff / np.sqrt(p_pooled*(1-p_pooled)*(1/n1 + 1/n2))\n", "print(\"Test statistic or z_obs:\", z_obs)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# p-value\n", "print(\"p-value:\", 2 * stats.norm.cdf(-z_obs, loc=0, scale=1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example: Contraceptive pills with $\\chi^2$" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# The data in a table:\n", "table_data = np.array([[23,35],[34,132]])\n", "print(table_data)\n", "pill_study = pd.DataFrame(table_data, index=['Blood Clot', 'No Clot'], columns=['Pill', 'No pill'])\n", "# With pandas we can make a better table:\n", "display(pill_study)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# this function can take either a pandas table or the data (so both table_data and pill_study)\n", "chi2, p_val, dof, (expected) = stats.chi2_contingency(pill_study, correction=False)\n", "# returns test statistic, p-value, degrees of freedom, and expected frequencies" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(expected) # expected frequencies under the null hypothesis" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(\"Chi-square test statistic:\", chi2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(\"P-value:\", p_val)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(dof)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example: Candidate votes over time" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# First put data into a pandas dataframe\n", "poll = np.array([[79, 91, 93], [84, 66, 60], [37, 43, 47]])\n", "print(poll)\n", "poll_df = pd.DataFrame(poll, index=['Cand1', 'Cand2', 'Undecided'], columns = ['4 weeks', '2 weeks', '1 week'])\n", "display(poll_df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Row 1: votes for Candidate 1 (4, 2 and 1 week(s) before the election)
\n", "Row 1: votes for Candidate 2 (4, 2 and 1 week(s) before the election)
\n", "Row 1: undecided votes (4, 2 and 1 week(s) before the election)
" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# calculate total number of people asked at every sample / timepoint:\n", "print(np.sum(poll, axis=0))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# total number for each candidate across all three timepoints:\n", "print(np.sum(poll, axis=1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is the overall distribution of votes. \n", "\n", "We want to know if the distributions of votes within each timepoint (sample) differs significantly from the overall distribution." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Now do the chi2 test:\n", "# Again, we can use either the data or the pandas dataframe as input \n", "chi2, p_val, dof, expected = stats.chi2_contingency(poll, correction=False)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(expected) # Expected under the assumption that the null hypothesis is true (all distributions are the same)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(chi2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(p_val)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(dof)" ] } ], "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.10.16" } }, "nbformat": 4, "nbformat_minor": 2 }