{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Analysis Bootstrap" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This tutorial shows how to perform analysis after A/B test experiments using bootstrapping. This technique makes \n", "inference about a certain estimate (e.g. sample mean) for a certain population parameter (e.g. population mean) by \n", "resampling with replacement from the observed dataset. It does not make any assumption on the samples distribution.\n", "\n", "Let's import first the tools needed." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "from abexp.core.analysis_frequentist import FrequentistAnalyzer\n", "from abexp.visualization.analysis_plots import AnalysisPlot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simple bootstrap" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we want to compare a specific metrics of the control group versus the treatment group (e.g. average revenue per \n", "user). We will perform bootstrapping on the kpi metrics (revenue) of each group." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Generate random data for revenue control group\n", "revenue_contr = np.random.randint(low=50, high=500, size=100)\n", "\n", "# Generate random data for revenue treatment group\n", "revenue_treat = np.random.randint(low=50, high=600, size=100) " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Define the analyzer\n", "analyzer = FrequentistAnalyzer()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Define the aggregation function that will be applied on the sample\n", "aggregation_func = np.mean\n", "\n", "# other possibles aggregation functions might be:\n", "# - standard deviation = np.std, \n", "# - sum = np.sum\n", "# - median = lambda x: np.median(x, axis=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bootstrapping will generate a sequence of ``N`` values (where ``N`` is the number of repetitions). The bootstrap \n", "function returns a table with the median, 2.5 percentile and 97.5 percentile of this sequence." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
median2.5 percentile97.5 percentile
282.475255.092307.1285
\n", "
" ], "text/plain": [ " median 2.5 percentile 97.5 percentile\n", " 282.475 255.092 307.1285" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Perform bootstrapping on the control group\n", "stats_contr = analyzer.bootstrap(revenue_contr, func=aggregation_func, rep=500)\n", "stats_contr" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
median2.5 percentile97.5 percentile
305.5276.192339.1205
\n", "
" ], "text/plain": [ " median 2.5 percentile 97.5 percentile\n", " 305.5 276.192 339.1205" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Perform bootstrapping on the treatment group\n", "stats_treat = analyzer.bootstrap(revenue_treat, func=aggregation_func, rep=500)\n", "stats_treat" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Define heights of the bars\n", "bars = [stats_contr['median'], stats_treat['median']]\n", "\n", "# Compute the error between median and percentiles\n", "ci_contr = [stats_contr['2.5 percentile'], \n", " stats_contr['97.5 percentile']]\n", "\n", "ci_treat = [stats_treat['2.5 percentile'], \n", " stats_treat['97.5 percentile']]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAm8AAAHJCAYAAADTm97mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAz3UlEQVR4nO3debxe473//9dH5tHwCztEiFJExdeQIoZmVxGnlJb6oqYYTpRyaoiQ0GNTaqimnEpT0aI11Q/RUo4osU1JDDE0ZFBDckoioadIIiKS6/vHfe/t3js7yQr73vdeyev5eKxH9n1d173WZ0ce7ftxrXVdK1JKSJIkKR/WqXQBkiRJys7wJkmSlCOGN0mSpBwxvEmSJOWI4U2SJClH2la6gJbUo0eP1KdPn0qXIUmStEqTJ09+P6W0YeP2tSq89enTh+eff77SZUiSJK1SRMxqqt3bppIkSTlieJMkScqRFgtvEfGjiPhbRHxUPCZGxIEl/TdHRGp0TGp0jg4R8auIeD8iFkbEfRGxaUv9DpIkSZXWkjNvbwPnATsD/YHxwJ8iYoeSMY8AG5cc3250jmuAw4CjgL2B7sBfIqJNWSuXJElqJVpswUJK6c+Nmi6IiFOBAcDfim2LU0rvNvX9iFgXOAk4IaX012LbscAsYF9gXFkKlyRJakUqstq0OFN2ONAVmFDStVdEzAM+AB4HLkgpzSv27QK0Ax6uG5xS+kdETAP2oBnC20cffcS8efNYsmTJlz2V9KW0a9eOjTbaiO7du1e6FElSK9Oi4S0i+gETgY7AAuB7KaUpxe6HgLHAW0Af4FJgfETsklJaDPQElgLvNzrt3GLfiq45BBgCUFVVRW1tbZPj2rRpQ/fu3enVqxft27cnIr7Q7yh9WSklPv30U9566y0++ugjli5dWumSJEmtSEvPvM0AdgTWBb4P/D4iqlNKr6SU/lgybkpETKZwS/RACqHuC0kpjQHGAPTv3z9VV1c3Oe71119nk002oXPnzl/0UlKz6ty5M7Nnz2arrbaqdCmSpFakRbcKSSl9mlJ6PaU0OaU0HHgJOGsFY2dTWOTw1WLTu0AboEejoVXFvi9lyZIldOrU6cueRmo2nTp18ha+JGk5ld7nbR2gQ1MdEdED6AXMKTZNBpYA+5WM2RToS8Pn5r4wb5WqNfHfoySpKS122zQirgAeAP4BdAN+AFQDB0ZEV6AGuIdCWOsDXA7MA+4FSCl9GBG/A64qLmr4JzCSwkrVR1rq95AkSaqklnzmrSdwa/HPDymErn9LKY2LiE5AP+A4YD0KAe4x4P+mlOaXnONM4DPgTqAT8ChwXErJJ7olSdJaoSX3eRu8kr5FwKAM51gMnFE8yq7P+Q+0xGXqzbziwFUPyrGZM2eyxRZb8Nxzz9G/f/9KlyNJUi5V+pk3tXLV1dWcfvrplS5DkiQVGd7ULCq5KvLTTz+t2LUlSWpphrccSynxi1/8gq9+9at06NCBTTfdlOHDh9f3T5kyhX333ZdOnTqxwQYbMHjwYD788MP6/sGDB3PQQQdx7bXX0qtXL9Zff31OOOEEPv744/r+xx9/nFGjRhERRAQzZ86ktraWiODBBx9k1113pX379owbN47Fixdz5plnUlVVRceOHdl999156qmnVut3WrhwIccddxxdu3alqqqKyy+/nIMOOojBgwfXj+nTpw81NTWceOKJrLfeehx99NEAjB07ln79+tGhQwd69+7NZZddRkqpwfeuvvrqBtdrPLNYd+5jjjmGrl270rNnz+W+I0lSJRnecmzEiBH89Kc/Zfjw4bz66qvcdddd9O7dGyiEoEGDBtG1a1eeffZZ7r33XiZMmMCJJ57Y4BxPPvkkr7zyCo888gh33nkn9957L9deey0A1157LQMGDOCEE05gzpw5zJkzp/78AOeddx6XXnop06dPZ7fddmPYsGHceeed3Hjjjbz44ov069ePAw44gDlz5pDVOeecw+OPP869997L+PHjefnll3nyySeXGzdy5Ei23XZbnn/+eX72s58xefJkDj/8cA499FCmTJnCFVdcweWXX85111232n+vI0eOpG/fvrzwwgtcfPHFjBgxgrFjv/A+0ZIkNauKvNtUX96CBQv45S9/yTXXXFMfyLbaaisGDBgAwO23387ChQu55ZZb6NatGwBjxozhm9/8Jq+//nr9rv3du3fnN7/5DW3atKFv374cfvjhPProowwfPpx1112X9u3b07lzZ3r2XP4NZDU1Ney///5AISyOHj2a3/72txx4YGHhxW9+8xvGjx/PqFGjuPTSSzP9TjfeeCN/+MMf2G+/wnZ+v/vd79h0002XGztw4ECGDRtW//noo49m4MCBXHzxxQBsvfXW/P3vf+fKK6/kjDNWb33LbrvtxgUXXFB/nueee46RI0dy6KGHrtZ5JEkqB2fecmrq1KksXryYb33rW032T5s2jR122KE+uAHssccerLPOOkydOrW+bbvttqNNmzb1nzfZZBPmzZuXqYbSFaNvvPEGS5YsYc8996xva9OmDQMGDGhwvZWpO8euu+5a39alSxe23377lV4bCr9v6bUB9tprL9555x0++uijTNevUxeASz9n/R0kSSo3w9taqHTn/nbt2i3Xt2zZskzn6dKly2pfr7lkvXbp9ddZZ50Gz8BBZRdaSFq1mpqa+mduPVb/qKmpqfR/QpWB4S2n+vbtS4cOHXj00UdX2D9lyhTmz/98j+MJEyawbNky+vbtm/k67du3Z+nSVe+BvOWWW9K+fXuefvrp+ralS5cyceJEtttuu0zX2nLLLWnXrh3PPfdcfdvHH3/MK6+8ssrv9u3bt8G1AZ566ik23XTT+tnHDTfcsMHzd5988gnTp09f7lyTJk1a7vPq/J1Jaj41NTWklFrlMXDgQAYOHFjxOlZ2GN7WTIa3nOrWrRs//vGPGT58ODfddBNvvPEGzz77LKNHjwYKz4B17tyZ4447jilTpvDEE09wyimncOihh9Y/75ZFnz59ePbZZ5k5cybvv//+CmflunTpwqmnnsp5553Hgw8+yLRp0zj11FOZO3cup512WqZrde3alRNPPJHzzjuPRx99lKlTp3LyySezbNmyVc7e1S10qKmp4bXXXuO2227jF7/4RYPn4vbZZx9uu+02amtrefXVVznxxBP57LPPljvXpEmTuPzyy/n73//ODTfcwB/+8AfOOuusTL+DJEnl5oKFlWjtbzy4/PLLWX/99fnpT3/K22+/TVVVFccddxwAnTt3Zty4cZx55pnsuuuudOzYkUMOOaR+JWlWQ4cO5fjjj2e77bZj0aJFvPXWWysce+WVVwJwwgkn8MEHH7DTTjvx0EMPsfHGG2e+3tVXX83ChQs5+OCD6dq1K2eddRZz586lY8eOK/3ezjvvzF133cVFF13Ez372M6qqqjj//PMbbAMyfPhwZs6cySGHHELXrl254IILmD179nLnOvvss/nb3/7GZZddRpcuXbjkkkv4/ve/n/l3kCSpnKLxM0Brsv79+6fnn3++yb5p06Z5a6wVWrx4MZtvvjnnnnsu55xzTtmv16dPH04//XSGDh1a9mtl4b9LqfWqrq4GoLa2tqJ1aM0VEZNTSsu9T9KZN7UqL774ItOmTWPXXXdl/vz5XHnllcyfP58jjjii0qVJktQqGN7U6owcOZIZM2bQtm1bdtxxR5544okm93qTJGltZHhTq7LTTjuxolvbLWHmzJkVu7YkSVm42lSSJClHDG+SJEk5YniTJEnKEcObJElSjhjeJEmScsTwJkmSlCNuFbIyNeu28PU+bNnrSZKk3HHmLceqq6sbvLuz3Gpqath+++1b7HpZ9OnTh6uvvrrSZUiS1GIMb2uBJUuWVLqEXPr0008rXYIkScsxvOXU4MGDefzxxxk1ahQRQUQwc+ZMamtriQgefPBBdt11V9q3b8+4ceNIKXHVVVex5ZZb0qlTJ/r168ett97a4Jznn38+22yzDZ06daJPnz4MGzaMTz75BICbb76Ziy++mFdffbX+ejfffDMAEcHo0aM55JBD6Ny5M1tvvTWPPfYYb7/9NoMGDaJLly7suOOOvPDCCw2uN2HCBAYOHEjnzp3p1asXp556Kh999FF9f3V1NaeddhojRoygR48ebLTRRgwdOpRly5bV98+aNYtzzz23vqYVmTt3LgcffDCdOnVi880356abbmL77benpqamfkxEMGrUKA499FC6dOnCiBEjALj++uvZaqutaN++PVtttRU33HBDg3NHBHfffXeDtsYzghHBddddx4EHHkjnzp3ZfPPNl/v7lyQpC8NbTl177bUMGDCAE044gTlz5jBnzhx69+5d33/eeedx6aWXMn36dHbbbTcuvPBCfve73zFq1CimTp3K8OHDOeWUU3jggQfqv9OlSxduvPFGpk2bxq9//Wv++Mc/ctlllwFwxBFHcM4557DNNtvUX6/0ZfGXXnopRx55JC+//DL9+/fnyCOP5KSTTuK0007jxRdfZJNNNmHw4MH146dMmcL+++/PwQcfzMsvv8zYsWN56aWXOPHEExv8nrfddhtt27ZlwoQJXHfddVxzzTXceeedAIwdO5ZNN92U//zP/6yvaUWOP/54Zs2axfjx4/nzn//MrbfeyqxZs5Ybd/HFF/Ptb3+bKVOm8KMf/Yh7772X008/nTPPPJNXXnmFH//4x5x22mncf//9q/cfDLjooos4+OCDeemllxgyZAjHHXdcRV8FJknKJxcs5NS6665L+/bt6dy5Mz179lyuv6amhv333x+AhQsXMnLkSB5++GH23ntvALbYYgueffZZRo0axYEHHgjAT37yk/rv9+nThxEjRnD11Vfz05/+lE6dOtG1a1fatm3b5PWOO+44jjrqKABGjBjBHXfcwaBBgzjkkEMAGDZsGN/85jd5//336dGjBz//+c/rA2Gd0aNHs9NOOzFv3jw22mgjALbbbjsuueQSALbeemtuuOEGHn30UY466ig22GAD2rRpQ7du3Zqsqc6MGTMYN24cEydOZPfddwcKM4l9+vRZbuwRRxzBySefXP/5mGOO4dhjj61/tnDrrbdm8uTJXHnllXznO99Z4TWbcuihh3LKKacAcMEFF/DYY49xzTXXOAMnSVothrc1VP/+/et/njp1Kp988gkHHHBAg1uLS5YsaRBg7r77bq655hpef/11FixYwNKlS1m6dGmm6+2www71P1dVVQHQr1+/5drmzZtHjx49mDx5Mq+//nr9LBpASgmAN954oz68lZ4XYJNNNmHevHmZaqozffp01llnnQZ/J71792aTTTZZbmzpGIBp06YtNxu41157cd99961WDQADBgxY7nPpzKckSVkY3tZQXbp0qf+57hmx+++/n80226zBuHbt2gEwadIkjjzySC666CJ++ctfst5663HfffcxdOjQTNerOw9QHxCbaqurZdmyZZx88smcddZZy52rV69eTZ637jx15yiH0r+3lSkNwRFRHzzruEhEklQuhrcca9++faaZse22244OHTowa9Ys9tlnnybHPP300/Tq1avBrdPGz4RlvV4WO++8M6+++ipbbbXVlzpPlpq23XZbli1bxuTJk9ltt90AePvtt5k9e/Yqz9+3b1+efvppTjrppPq2p556iu22267+84Ybbtjgebu5c+c2+fzdpEmTGsziTZo0ib59+66yBkmSShnecqxPnz48++yzzJw5k65du7LBBhs0Oa5bt24MHTqUoUOHklLiG9/4BgsWLGDSpEmss846DBkyhK233pp33nmH2267jQEDBjBu3DjuuOOO5a43a9YsXnjhBTbbbDO6detGhw4dvlDt5513Hrvvvjs//OEPOeWUU+jWrRvTp0/n/vvv5/rrr1+tv4Mnn3ySY445hg4dOtCjR4/lxmyzzTYMGjSIH/7wh4wePZqOHTty7rnn0rlz55WuUAU499xzOfzww9lll13Yf//9eeihh7jtttsYO3Zs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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot results with confidence interval\n", "fig = AnalysisPlot.barplot(bars, [ci_contr, ci_treat], \n", " groupslabel=['control group', 'treatment group'], \n", " ylabel='average revenue per user', xlabel='')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the barplot above we see that there is no difference between empirical means because the confidence intervals \n", "overlap. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Time series bootstrap" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we want to compare a specific metrics of the control group versus the treatment group (e.g. average revenue per \n", "user) across time. We will perform bootstrapping on the kpi metrics (revenue) of each group per each day. Note that the \n", "bootstrap function maintains the correlation across days." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# Generate random data for revenue control group\n", "revenue_contr_ts = pd.DataFrame({'day1': np.random.randint(low=1, high=500, size=1000),\n", " 'day2': np.random.randint(low=1, high=500, size=1000),\n", " 'day3': np.random.randint(low=1, high=500, size=1000),\n", " 'day4': np.random.randint(low=1, high=500, size=1000),\n", " 'day5': np.random.randint(low=1, high=500, size=1000),\n", " 'day6': np.random.randint(low=1, high=500, size=1000),\n", " 'day7': np.random.randint(low=1, high=500, size=1000)})\n", "\n", "# Generate random data for revenue treatment group\n", "revenue_treat_ts = pd.DataFrame({'day1': np.random.randint(low=1, high=600, size=1000),\n", " 'day2': np.random.randint(low=1, high=600, size=1000),\n", " 'day3': np.random.randint(low=1, high=600, size=1000),\n", " 'day4': np.random.randint(low=1, high=600, size=1000),\n", " 'day5': np.random.randint(low=1, high=600, size=1000),\n", " 'day6': np.random.randint(low=1, high=600, size=1000),\n", " 'day7': np.random.randint(low=1, high=600, size=1000)})" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
median2.5 percentile97.5 percentile
day1246.6630237.597475255.912150
day2248.0410239.164575256.451925
day3250.4535241.068275259.431525
day4252.0625244.145850261.326350
day5246.4465237.647800255.376150
day6252.0445243.933075261.501475
day7249.0605240.451950257.918600
\n", "
" ], "text/plain": [ " median 2.5 percentile 97.5 percentile\n", "day1 246.6630 237.597475 255.912150\n", "day2 248.0410 239.164575 256.451925\n", "day3 250.4535 241.068275 259.431525\n", "day4 252.0625 244.145850 261.326350\n", "day5 246.4465 237.647800 255.376150\n", "day6 252.0445 243.933075 261.501475\n", "day7 249.0605 240.451950 257.918600" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Perform bootstrapping on the control group\n", "stats_contr_ts = analyzer.bootstrap(revenue_contr_ts, func=aggregation_func, rep=500)\n", "stats_contr_ts" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
median2.5 percentile97.5 percentile
day1305.8540295.303525315.689025
day2297.1785287.122225308.437950
day3311.1690300.329400322.258075
day4297.0245286.180500307.432525
day5302.7850292.530300313.642875
day6300.4425289.563675311.556775
day7299.9155288.822375310.642600
\n", "
" ], "text/plain": [ " median 2.5 percentile 97.5 percentile\n", "day1 305.8540 295.303525 315.689025\n", "day2 297.1785 287.122225 308.437950\n", "day3 311.1690 300.329400 322.258075\n", "day4 297.0245 286.180500 307.432525\n", "day5 302.7850 292.530300 313.642875\n", "day6 300.4425 289.563675 311.556775\n", "day7 299.9155 288.822375 310.642600" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Perform bootstrapping on the treatment group\n", "stats_treat_ts = analyzer.bootstrap(revenue_treat_ts, func=aggregation_func, rep=500)\n", "stats_treat_ts" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Plot results with confidence intervals__" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# Define heights of the bars\n", "y = [stats_contr_ts['median'], stats_treat_ts['median']]\n", "\n", "# Compute the error between median and percentiles\n", "ci_treat_ts = [stats_treat_ts['median'] - stats_treat_ts['2.5 percentile'],\n", " stats_treat_ts['97.5 percentile'] - stats_treat_ts['median']]\n", "ci_contr_ts = [stats_contr_ts['median'] - stats_contr_ts['2.5 percentile'],\n", " stats_contr_ts['97.5 percentile'] - stats_contr_ts['median']]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3QAAAJXCAYAAADb3xaXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABfzklEQVR4nO3dd3zV1f3H8dcJCSMJeyTIVBQF3CKKEwe0LrRWq62jbju0dVbtUvtz/6ytrda662z9WbfWilpxVS0OqgJuRUVZyp4JOb8/vjchCQESSHLvN3k9H4884H7v9957wuEm9/0953xOiDEiSZIkSUqfvGw3QJIkSZK0bgx0kiRJkpRSBjpJkiRJSikDnSRJkiSllIFOkiRJklLKQCdJkiRJKZWf7QbUR48ePeLAgQOz3QxJkiRJyorXXnttdoyxZ+3jqQh0AwcO5NVXX812MyRJkiQpK0IIU+s67pRLSZIkSUopA50kSZIkpZSBTpIkSZJSykAnSZIkSSlloJMkSZKklEpFlUtJkiRJ62f+/PnMnDmTsrKybDdFtRQUFNCrVy86derU4Mca6CRJkqQWbv78+cyYMYM+ffrQoUMHQgjZbpIyYowsWbKEadOmATQ41DnlUpIkSWrhZs6cSZ8+fSgsLDTM5ZgQAoWFhfTp04eZM2c2+PGO0EmSJEktXFlZGR06dFinxw4897F6nffJZfut0/Mr0aFDh3WaDusInSRJktQKODKX29a1fxyhkyRJkrRatUfeDrv+JQDuOXlkNpqjWhyhkyRJkqSUMtBJkiRJUiNbvnw5PXv2pLi4mHnz5jXZ6xjoJEmSJNXLQxOn8ebn83jl468Z87tneWjitGw3aRXLly/PdhMAePDBB9lwww0ZOXIkd999d5O9joFOkiRJ0lo9NHEaP/3bRJaUrQDgvRkL+enfJjZpqFu0aBFHH300xcXFlJSUcOmll7L//vtzzDHHVJ0zcOBALrjgAo477ji6dOnCEUccAcD999/PFltsQbt27ejXrx8XX3wxMcYaj7vyyitrvN6oUaM45ZRTVnnuI488kuLiYkpLS1d5zOrcfPPNHHXUURx99NHcfPPN6/GvsGYWRZEkSZJaoQsfmcTkL+bX+/w3P6972uC5973F3a98Wq/nGLpBJ84/YFi9X/PMM8/k2Wef5YEHHmCDDTbgf/7nf3j++ef51re+VeO8q666il/+8pe8+uqrxBh57bXXOPTQQ/nlL3/JEUccwYQJEzj55JPp1KkTp556ar1fv/K5zznnHH7961/zzDPPcOqpp7LRRhtx8MEHr/YxU6dOZfz48dx5550UFhbywx/+kP/+979stdVWDXrt+jDQSZIkSVqrypG5+h5fXwsXLuSWW27h9ttvZ/To0UAy6tW3b99Vzt1999352c9+VnX7iCOOYPfdd+fCCy8EYPDgwbz//vtcfvnlDQ50O+ywA7/4xS+qnmfChAlcddVVawx0t956K6NHj6Znz54AHHzwwdx4441cc801DXrt+jDQSZIkSa1QQ0bKAMb87lnem7FwleODS4qbZAuDDz/8kLKyMkaMGFF1rKioiM0333yVc4cPH17j9pQpU9hvv5rbLeyyyy5ceOGFzJ8/n06dOtW7HSNHjlzl9v3337/a8ysqKrj11lu54oorqo4dddRRfOc73+HKK6+kffv29X7t+nANnSRJkqS1+vEeGzfoeHMqKiqq97mVG3jn5eXVWFMHUFZWtt5tGTduHJ9++ilHHHEE+fn55Ofns88++zB37lzuu+++9X7+2gx0kiRJktbqwK37cPXhW9OhoA2QjMxdffjWHLh1nyZ5vUGDBlFQUMCECROqji1evJi33357rY8dMmQIL774Yo1jL7zwAn379qVjx44A9OzZky+//LLq/qVLl/LOO++s8lwvv/zyKreHDBmy2te++eabOfjgg5k4cWKNrxNPPLFJiqM45VKSJElSvRy4dZ+qAihNMc2yuuLiYo477jjOOeccevToQe/evbnooouoqKioGmVbnTPPPJPtt9+eCy64gO9973tMmDCB3/72t1xyySVV5+y5557ccsstjB07lp49e3LxxRdTXl6+ynO9/PLLXHrppRxyyCGMHz+e22+/nbvuuqvO1501axYPP/ww99577ypTQ48//nhGjhzJhx9+yKBBg9bhX6RuBjpJam4XdK7neU23CakkSWlw5ZVXsmjRIsaOHUtxcTGnn346M2bMWOs6tG233ZZ7772X888/n0suuYSSkhLOPffcGlsSnHfeeXzyyScceOCBFBcX84tf/IIvvvhilec644wzePPNN7n44ospKiriN7/5DYccckidr3vHHXfQrl07vvGNb6xy34gRI+jXrx8333xzjWC5vkLteaO5aPjw4fHVV1/NdjMk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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = AnalysisPlot.timeseries_plot(y, [ci_contr_ts, ci_treat_ts])" ] } ], "metadata": { "hide_input": false, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" }, "pycharm": { "stem_cell": { "cell_type": "raw", "metadata": { "collapsed": false }, "source": [] } } }, "nbformat": 4, "nbformat_minor": 4 }