{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 11 - Propensity Score\n", "\n", "## The Psychology of Growth\n", "\n", "The field of positive psychology studies what human behaviours lead to a great life. You can think of it as the intersection between self help books with the academic rigor of statistics. One of the famous findings of positive psychology is the **Growth Mindset**. The idea is that people can have a fixed or a growth mindset. If you have a fixed mindset, you believe that abilities are given at birth or in early childhood. As such, intelligence is fixed and can't change throughout life. If you don't have it by now, you can't acquire it. The corollary of this thought is that you should not waste time on areas where you don't excel, since you will never learn how to handle them. On the other hand, if you have a growth mindset, you believe that intelligence can be developed. The direct consequence of this is you see failure not as lack of tenacity, but as part of a learning process. \n", "\n", "I don't want to debate which of these mindsets is the correct one (although it's probably somewhere in the middle). For our purpose, it doesn't matter much. What does matter is that psychologists found out that people who have a growth mindset tend to do better in life. They are more likely to achieve what they've set out to do.\n", "\n", "As versed as we are with causal inference, we've learned to see those statements with skepticism. Is it that a growth mindset causes people to achieve more? Or is simply the case that people who achieve more are prone to develop a growth mindset as a result of their success? Who came first, the egg or the chicken? In potential outcome notation, we have reasons to believe that there is bias in these statements. $Y_0|T=1$ is probably larger than $Y_0|T=0$, which means that those with a growth mindset would have achieved more even if they had a fixed mindset. \n", "\n", "To settle things, researchers designed the [The National Study of Learning Mindsets](https://mindsetscholarsnetwork.org/about-the-network/current-initatives/national-mindset-study/#). It is a randomised study conducted in U.S. public high schools which aims at finding the impact of a growth mindset. The way it works is that students receive from the school a seminar to instil in them a growth mindset. Then, they follow up the students in their college years to measure how well they've performed academically. This measurement was compiled into an achievement score and standardized. The real data on this study is not publicly available in order to preserve students' privacy. However, we have a simulated dataset with the same statistical properties provided by [Athey and Wager](https://arxiv.org/pdf/1902.07409.pdf), so we will use that instead. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [ "hide-input" ] }, "outputs": [], "source": [ "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", "import pandas as pd\n", "import numpy as np\n", "from matplotlib import style\n", "from matplotlib import pyplot as plt\n", "import seaborn as sns\n", "import statsmodels.formula.api as smf\n", "from causalinference import CausalModel\n", "\n", "import graphviz as gr\n", "\n", "%matplotlib inline\n", "\n", "style.use(\"fivethirtyeight\")\n", "pd.set_option(\"display.max_columns\", 6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Besides the treated and outcome variables, the study also recorded some other features:\n", "\n", "* schoolid: identifier of the student's school;\n", "* success_expect: self-reported expectations for success in the future, a proxy for prior achievement, measured prior to random assignment;\n", "* ethnicity: categorical variable for student race/ethnicity;\n", "* gender: categorical variable for student identified gender;\n", "* frst_in_family: categorical variable for student first-generation status, i.e. first in family to go to college;\n", "* school_urbanicity: school-level categorical variable for urbanicity of the school, i.e. rural, suburban, etc;\n", "* school_mindset: school-level mean of students’ fixed mindsets, reported prior to random assignment, standardized;\n", "* school_achievement: school achievement level, as measured by test scores and college preparation for the previous 4 cohorts of students, standardized; \n", "* school_ethnic_minority: school racial/ethnic minority composition, i.e., percentage of student body that is Black, Latino, or Native American, standardized;\n", "* school_poverty: school poverty concentration, i.e., percentage of students who are from families whose incomes fall below the federal poverty line, standardized;\n", "* school_size: total number of students in all four grade levels in the school, standardized." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
schoolidinterventionachievement_score...school_ethnic_minorityschool_povertyschool_size
2597311.480828...-0.515202-0.1698490.173954
3435760-0.987277...-1.3109270.224077-0.426757
996340-0.152340...0.875012-0.7248010.761781
44886700.358336...0.3157550.0545861.862187
26371611.360920...-0.033161-0.9822741.591641
\n", "

5 rows × 13 columns

\n", "
" ], "text/plain": [ " schoolid intervention achievement_score ... school_ethnic_minority \\\n", "259 73 1 1.480828 ... -0.515202 \n", "3435 76 0 -0.987277 ... -1.310927 \n", "9963 4 0 -0.152340 ... 0.875012 \n", "4488 67 0 0.358336 ... 0.315755 \n", "2637 16 1 1.360920 ... -0.033161 \n", "\n", " school_poverty school_size \n", "259 -0.169849 0.173954 \n", "3435 0.224077 -0.426757 \n", "9963 -0.724801 0.761781 \n", "4488 0.054586 1.862187 \n", "2637 -0.982274 1.591641 \n", "\n", "[5 rows x 13 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = pd.read_csv(\"./data/learning_mindset.csv\")\n", "data.sample(5, random_state=5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Although the study was randomised, it doesn't seem to be the case that this data is free from confounding. If we look at the additional features, we will notice that they vary systematically between treatment and control. One possible reason for this is that the treatment variable is measured by the student's receipt of the seminar. So, although the opportunity to participate was random, participation itself is not. We are dealing with a case of non-compliance here. One evidence of this is how the student's success expectation is correlated with the participation in the seminar. Students with higher self-reported success expectation are more likely to have joined the growth mindset seminar." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "success_expect\n", "1 0.271739\n", "2 0.265957\n", "3 0.294118\n", "4 0.271617\n", "5 0.311070\n", "6 0.354287\n", "7 0.362319\n", "Name: intervention, dtype: float64" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.groupby(\"success_expect\")[\"intervention\"].mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Still, let's see what the difference in means $E[Y|T=1] - E[Y|T=0]$ looks like. This will be a useful baseline to compare against." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [0.025 0.975]
Intercept -0.1538 0.012 -13.201 0.000 -0.177 -0.131
intervention 0.4723 0.020 23.133 0.000 0.432 0.512
" ], "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "smf.ols(\"achievement_score ~ intervention\", data=data).fit().summary().tables[1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Simply comparing those with and without the intervention, we can see that the treated have an achievement score that is, on average, 0.3185 (0.4723 - 0.1538) higher than the average score (which is zero, since the score is standardized). But is this big or small? I know that interpreting standardized outcomes can be challenging, but bear with me for a moment. I think it is worth going through this because it won't be the last time you will encounter standardized scores.\n", " \n", "The outcome variable being standardized means that it is measured in standard deviations. So, the treated are 0.3185 deviations above the untreated. That is what this means. As for if this is small or big, let's remember some stuff about the normal distribution. We know that 95% of its mass is between 2 standard deviations, leaving 2.5% on one tail and 2.5% on another. This also means that if someone is 2 standard deviations above the mean, 97.5% (95% plus the left 2.5% tail) of all the individuals are below that person. By looking at the normal CDF, we also know that about 85% of its mass is below 1 standard deviation and that 70% of its mass is below 0.5 standard deviations. Since the treated group has an average standardized score of about 0.5, this means that they fall above 70% in terms of individual achievement. Or, in other words, they are in the top 30% who achieve more. Here is what this looks like in a picture." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAGwCAYAAAAkDSjNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABQAElEQVR4nO3de1yUZeL//zcgiA0CHjEVNFFrPWSZleJZ0izMTNMOrvppa1O0ktzIVtfvWmqaVmqWprWt4ZrVekhdzTJZD5ia1qa2VraQiqmsJ0BGkcPM7w9/M+s4w2GIYWZuXs/Hw8fIfV9z39d9MTO857rv+7oCsrOzrQIAAIDfC/R2BQAAAFA5CHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbDzAfn5+crIyFB+fr63q+IXaC/30F7lR1u5h/ZyD+3lHtqrYgh2PqK4uNjbVfArtJd7aK/yo63cQ3u5h/ZyD+3lPoIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgani7AgAAVAWLxSKz2ey1cdEsFotCQkKUk5OjCxcueKUO/qQ6tFdoaKhMJpMCAyuvn41gBwAwPIvForNnzyosLEz169dXQECAV+pQUFCgkJCQSv1DblRGby+r1ar8/HydPXtW9erVq7RjNF5LAQBwDbPZrLCwMNWqVcsroQ64VkBAgGrVqqWwsDCZzeZK2y7BDgBgePn5+QoNDfV2NQAnoaGhlXp5AMEOAFAt0FMHX1TZr0u3g91HH32kpKQk9erVSw0bNlRkZKSWL19eruceOXJETZo0UWRkpJ599tkSy3388cfq06ePGjdurGbNmumhhx7St99+W2L5b775RkOHDlVMTIwaN26su+66S2vWrHH30AAAAPya2zdPTJ8+XZmZmapXr56ioqKUmZlZrudZLBYlJiaWWe7VV1/V9OnTFR0drccee0x5eXlavXq17r77bq1du1adO3d2KL99+3YNGTJEoaGhGjx4sMLCwrRu3To99thjOn78uJ5++ml3DxEAAMAvud1jt2DBAh04cEDp6en63e9+V+7nvfXWW9q7d68mT55cYpn09HTNmjVLLVu2VFpammbMmKH58+drw4YNkqTx48fLYrHYyxcVFWn8+PEKDAzUhg0bNH/+fM2YMUNpaWlq2bKlpk2bpmPHjrl7iAAAAH7J7WDXq1cvxcTEuPWcw4cPa8aMGXr22WfVvn37EsstX75cRUVF+sMf/qCIiAj78ptvvllDhgzRjz/+qF27dtmXb9++XT///LMefPBB3XzzzfblERERmjBhggoKCrRixQq36goAAOCvPD6OXXFxsRITE9WiRQslJydrz549JZZNS0uTJPXp08dpXXx8vD744APt3LlTXbt2LVd5Sdq5c2e56umtASslqaCgwOERpaO93ONP7fX5L56vY78mISWu86e28gX+1F4Wi8XhjM+1NmV6/m+A1WpVcXGxgoKK3bpgvn+0d+7mve+++7Rz506dO3fOviwtLU0DBw7U888/rxdeeMGj+7darfbH0n53RmCxWErNIe7c0e3xYPf6669r//79+uKLLxQSUvIHqnTlVGxYWJiioqKc1sXGxtrLXF3+6nVXi4qKUlhYmDIyMspVzxMnTqi4uLhcZT0lKyvLq/v3N7SXe/yhvU6fDfL4PjItZb/P/aGtfIk/tFdISEipAbSoqKjK6uLu3xpPBOekpCR9+OGHqlOnjr799lvVrFnTqYwtTF29/8LCQklXjqGqAr1tn0aWn5+v3Nxcl+uCgoLUokWLcm/Lo8Hu4MGDmj17tp555hndcsstZZbPzc1VgwYNXK6rXbu2vczV5SUpPDy8xOeU1FDXaty4cbnKeUJBQYGysrIUFRVVZvgF7eUuf2qvBoGe/0MRXUaPnb+0lS/wp/bKyckptY41ani+R+h/PXZBbvXYVXbbXrhwQevXr1dAQIDOnz+vzZs3a/DgwU7lbDMhXL3/4OBgSVfChqd/51arVYWFhQoODjb8UDWhoaEuO7UqwmPBrqCgwH4KduLEiZ7aTaXxhYErQ0JCfKIe/oL2co8/tFdwsNXj+yhPG/hDW/kSf2ivCxculDplU1UGh4CAALf2V9nTaa1du1Zms1njxo3TokWLtHz5cj344IPl2r+t3gEBAR6f5svWY1gV+/K2wMDASnsPeSzYvf766zp06JA+//xzl128roSHh5fYw2abAPjq3jnb/0t7TmRkpBu1BgDA2JYtW6YaNWpo/Pjx+u6777Rt2zYdO3bM7Rsj4Zs8FoEPHDggi8Wiu+66S5GRkfZ/9913nyTpr3/9qyIjI/Xoo4/anxMbG6u8vDyX12u4up7O1XV3NllZWcrLy3PrvDQAAEb2ww8/aO/everTp48aNmyohx9+WBaLpdwTDcD3eSzY9e7dWyNGjHD6169fP0lS69atNWLECPXu3dv+HNvdrqmpqU7b27Jli0OZipQHAKA6W7ZsmSTpoYceknTlzleTyaTly5cb/s7T6sJjp2J///vfu1y+Y8cOff755+ratavmzp3rsG748OFasGCBXnvtNd177732sewOHDigVatW6cYbb1SXLl3s5Xv27KnmzZtr5cqVGj16tH0su5ycHL3++usKCQnRww8/7KEjBADAfxQWFuqjjz5SeHi4EhISJElhYWFKSEjQxx9/rK1bt7ocPgz+xe1gl5KSYh8k+NChQ5KufAOwjSnXpUsXjRw5skKVadmypV544QVNnz5d3bp108CBA+1TiknS/PnzHS6grFGjht544w0NGTJECQkJDlOKZWZmatq0aWrWrFmF6gIAgJFs3LhRZ86c0YgRIxwu1H/kkUf08ccfa9myZQQ7A3A72O3atctpNofdu3dr9+7d9p8rGuwk6bnnnlNMTIwWLVqk9957T8HBwerSpYsmTZrkcsiUHj16aNOmTZo5c6bWrFmjwsJCtWnTRi+++KLL27cBAKiObKdhrz2T1bNnTzVu3FgbN27U+fPnVadOHW9UD5XE7WC3aNEiLVq0qMI77N69u7Kzs0stM2zYMA0bNqzc27ztttu0cuXKCtcJAAAjO378uP16dNtpWFc++ugjjRkzpqqqBQ/w+MwTAADAuz744ANZLBZ16dJFLVu2dFpfVFSkFStWaNmyZQQ7P0ewAwDAwKxWq5YvX66AgAAtWrRIzZs3d1kuPT1dX331lf71r3/p1ltvrdpKotIYeyhnAACque3bt+vo0aOKi4srMdRJV0amkP53LR78Ez12AIBq756YWh7fh8ViUUFBgUJCQqp0iixbULt6QgBXHnjgAb3wwgtauXKlZsyYURVVgwcQ7AAAMLB3331X7777bpnlwsPDdfLkSfvPGzZscCpTnhsg4V2cigUAADAIgh0AAIBBEOwAAAAMgmAHAABgEAQ7AAAAg+CuWADVyqfHLpW4rrCwUKfPBqlBYIGCg62/aj9VMXwGAFyLHjsAAACDINgBAAAYBMEOAADAIAh2AAAABkGwAwAAMAiCHQAAgEEQ7AAAACpRYmKiIiMjdfTo0SrfN8EOAACD27FjhyIjI5WYmPirypTFm4GmLMuXL1dkZKSWL1/u7ap4FMEOAADAIAh2AAAABkGwAwAALrVv317t27dXXl6eJk6cqJtuukkNGzZUXFyc1q5d61R2xYoVkqQOHTooMjJSkZGRSkhIsJex/XzixAmNHj1arVu3Vp06dbRjxw57mZ07d+qhhx5Sy5YtFRMTo06dOmn69Om6ePGiw/4KCgq0ePFiDR48WG3btlXDhg3VsmVL/fa3v9X+/fsdyiYmJmrcuHGSpHHjxtnrFhkZ6VDuwoULevnll9W5c2c1atRIMTExGjx4sHbt2uWyfb7//ns99NBDatq0qWJiYjR06FAdOnTIvUauZMwVCwCo9i7tS/L4PqySrBar8gMDFODG82p1muehGpVPUVGRBg8erOzsbN133326dOmSVq9erf/7v//TqlWr1KdPH0lXwtMHH3yg7777TmPGjFFERIQkKSYmxmF758+fV79+/RQZGanBgwfr8uXLql27tiTpL3/5i5577jlFRESof//+qlOnjg4ePKhXX31VO3bs0Pr16xUSEmLfzh//+Ed16dJFffv2VWRkpI4cOaJPP/1UX3zxhTZu3KiOHTtKkhISEpSTk6ONGzfq3nvvVfv27Z2O8/z587r33nv1/fffq3Pnznrsscd04cIFbdy4Uffdd5+WLl2qAQMG2MsfOnRI/fv3V15enu677z7Fxsbq66+/Vv/+/dW2bdvK/0WUE8EOAFDtWXJ/qLJ9Wf//f/7i5MmTuvXWW/WPf/zDHqqGDh2q+++/X2+99ZY92I0dO1YHDx7Ud999p8TERDVr1szl9g4dOqThw4frjTfeUFBQkH35Dz/8oIkTJ6pt27Zat26dIiMjVVBQoJCQEM2fP18vvviiFi9erKefflrSld6/7777To0bN3bY/vfff6++ffvqpZde0ieffCJJGjBggD3YJSQkaPjw4U71ev755/X999/rjTfe0MiRI+3LT58+rd69eyspKUl33XWXQkNDJUnJycnKzc3VkiVLNGzYMHv5l156Sa+//rq7zVxpOBULAABK9fLLL9tDnST17NlT0dHR+uabb9zeVkhIiF566SWHUCdJf/3rX1VUVKTZs2erbt26DuvGjx+v+vXra9WqVfZlNWvWdAp1kvSb3/xG3bp105dffqnCwsJy1ens2bNavXq1evTo4RDqJKlBgwZ6+umndebMGW3dulWSlJmZqZ07d6pt27YOoU6SJkyYYO+t9AZ67AAAQIkiIiLUvHlzp+VNmjTRV1995fb2mjVrpnr16jkt37dvnyQpNTVV27Ztk9VqVXFxsYKCghQQEKDg4GD99NNPDs85cOCA3njjDe3evVtZWVlOQe7s2bNq1KhRmXX65ptvVFxcrIKCAs2cOdNpfUZGhiTpp59+Uv/+/fXdd99Jkrp06eJUNiwsTO3bt1daWlqZ+/UEgh0AAAYXGHjlBJ3FYimxjG2draxNeHi4y/JBQUGlbq8kDRo0cLn8/PnzkqRXX321XNvZs2ePBg4cKEnq3bu37r//fplMJgUEBGjDhg367rvvdPny5XJty7bv3bt3a/fu3SWWM5vNkqTc3FxJUv369V2Wa9iwYbn26wkEOwBAtRcYfpPH92G7eSLAzZsnKoMtnNkCjCvnzp1zKOspAQGuj952A0VmZqZq164ti8Viv8bu2rApSa+99pouX76sTz/91KnnbN++ffZetfKw7fupp57S9OnTyyxva6MzZ864XP/f//633PuubAQ7AEC1VxV3npYVVDypVatWCgkJ0TfffKOioiLVqOH85992WvXX3NFpu26uIj15nTp10v79+7Vv3z717t27zPI///yz6tSp4xTqLl686DTcydV1Ky4udlrXsWNHBQQEaO/eveWqa7t27STJ5TAoeXl5OnjwYLm24wncPAEAgMGFhoZq0KBBOnPmjObMmeO0/t///reWLVum2rVrOwzp4a46depIko4fP+72cx9//HHVqFFDzz//vDIzM53WZ2dnOwS26OhoZWdn6/vvv7cvKy4u1pQpU1z2pNnq9ssvvziti4qK0gMPPKA9e/bojTfekNXqfN/yvn377GPpRUdHKy4uTv/+97/18ccfO5R7/fXXlZOTU86jrnz02AEAUA3MmDFDX3/9tV555RV99tln6tq1q0JDQ/Wf//xHn376qaxWq9555x2nQXvd0aNHDy1YsEBJSUkaOHCgrrvuOkVHR+vhhx8u87lt2rTRa6+9pgkTJuj222/XXXfdpZiYGF26dElHjx7Vzp079eijj2ru3LmSpCeffFKpqanq37+/HnjgAdWsWVNpaWk6efKkunXr5nTzwh133KFatWpp0aJFys7Otl8fl5ycLOnKqd2ffvpJ/+///T99+OGHuuOOOxQREaFffvlF//rXv5Senq4ff/xR1113naQr1wL2799fY8aM0YYNG+zj2P3rX/9Sly5dShzU2NPosQMAoBpo0KCBUlNTNXHiRBUVFWnp0qV644039PXXX+v+++/XF198oUGDBv2qfdjGj5OkN998UzNmzNCyZcvK/fxRo0Zp8+bNSkhI0Ndff6133nlH69at09mzZzV27FglJibay/bv31/vv/++mjdvro8//lgrV65U69atlZqaqujoaKdt16lTR++//75atmyplJQUzZgxQzNmzHBY//nnn+ull15SSEiI/v73v2vJkiXau3evbrrpJr399tsOd/O2adNGmzZt0l133aUtW7bonXfeUUhIiDZt2uTyLuKqEpCdne1P4yQaUn5+vjIzMxUdHW0f+BAlo73c40/t9emxS17df2FhoU6fPqMGDeorODj4V23rnphalVQr3+VPr63Tp0+XeDdmVfHmNXb+qDq1V2W+Po3dUgAAANUIwQ4AAMAgCHYAAAAGQbADAAAwCLeD3UcffaSkpCT16tVLDRs2VGRkpJYvX+5UrrCwUGvXrtWYMWN0xx13qEmTJmratKni4+P1l7/8xeUAgTYff/yx+vTpo8aNG6tZs2Z66KGH9O2335ZY/ptvvtHQoUMVExOjxo0b66677tKaNWvcPTQAAAC/5vY4dtOnT1dmZqbq1aunqKgol4MISldGhB41apTCwsLUo0cP3XPPPcrNzdWmTZv0hz/8QZ9//rk+/PBDp6lFXn31VU2fPl3R0dF67LHHlJeXp9WrV+vuu+/W2rVr1blzZ4fy27dv15AhQxQaGqrBgwcrLCxM69at02OPPabjx4/r6aefdvcQAQAA/JLbwW7BggVq0aKFYmJiNHfuXL344osuy4WFhenVV1/VI488IpPJZF8+ffp0DRgwQJ999pnWrl3rMGZOenq6Zs2apZYtW2rLli2KiIiQdGU06r59+2r8+PHatWuX/bbnoqIijR8/XoGBgdqwYYNuvvlmSdLzzz+v+Ph4TZs2Tffff79iYmLcPUwAAAC/43aw69WrV7nKNW7cWE888YTTcpPJpHHjxumJJ57Qzp07HYLd8uXLVVRUpD/84Q/2UCdJN998s4YMGaIPPvhAu3btUteuXSVd6a37+eefNXz4cHuok6SIiAhNmDBBY8eO1YoVKzRx4kR3DxMAfpWqGJOvOoyVB8A9Xrl5wjbwp21CXhvb9B99+vRxek58fLwkaefOnRUuDwAAYGRemSv2b3/7myTnQJaenq6wsDBFRUU5PSc2NtZe5uryV6+7WlRUlMLCwpSRkVGuOuXn55ev8h5QUFDg8IjS0V7u8af2Kiws9PL+ixwefV1+fkDZhTzIn15bFotFFovFq3WwTSxvtVq9Xhd/UJ3ay2KxlJpD3JnZpcqD3dKlS7V582b16NFD/fr1c1iXm5tb4pQatWvXtpe5urwkhYeHl/icq8uX5sSJE6XeqVsVsrKyvLp/f0N7uccf2uv02aCyC1WB7Oxsb1ehXDIt3v3MsvGH11ZISIjPBFBvf4HxN9WhvfLz80vMK0FBQWrRokW5t1WlwW7Tpk1KTk5WdHS0lixZUpW7LlPjxo29tu+CggJlZWUpKipKISEhXquHv6C93ONP7dUg0Lt/eAsLi5Sdna3IyEgFB3vlhIZbopt49/fpT6+tnJwcr9fRarWqsLBQwcHBTiNCwFl1aq/Q0FCXZysroso+uT7//HONGjVKDRs21Pr169WoUSOnMuHh4SUm1gsXLtjLXF1eUqnPiYyMLFf9fGEC65CQEJ+oh7+gvdzjD+0VHGz1dhUkScHBNezXAvsyX/l9+sNr68KFC16fSN52OjEgIMDrdfEH1am9AgMDK+09VCUt9dlnn2nEiBGqV6+e1q9fr+bNm7ssFxsbq7y8PJfd+q6up3N13Z1NVlaW8vLy3Oq+BAAAxpeQkFDujh9/4/Fg99lnn2nkyJGqU6eO1q9fX2rQsg1jkpqa6rRuy5YtDmUqUh4AgOomMjLSrX/eMnPmTEVGRmrHjh1eq4MRePRU7ObNmzVy5EhFRkZq/fr1Lu9evdrw4cO1YMECvfbaa7r33nvtY9kdOHBAq1at0o033qguXbrYy/fs2VPNmzfXypUrNXr0aPtYdjk5OXr99dcVEhKihx9+2HMHCACAj3M1luuiRYuUm5vLOK8G5HawS0lJ0a5duyRJhw4dkiQtW7bMPqZcly5dNHLkSB0+fFi//e1vdfnyZXXr1k0rV6502lZMTIyGDx9u/7lly5Z64YUXNH36dHXr1k0DBw60TykmSfPnz3c4z16jRg298cYbGjJkiBISEhymFMvMzNS0adPUrFkzdw8RAADD+OMf/+i07IMPPlBubq7LdfBvbge7Xbt2acWKFQ7Ldu/erd27d9t/HjlypLKysnT58mVJ0qpVq1xuq2vXrg7BTpKee+45xcTEaNGiRXrvvfcUHBysLl26aNKkSbrlllucttGjRw9t2rRJM2fO1Jo1a1RYWKg2bdroxRdf1ODBg909PABANbRkw0se34fVKlmtFgUEBMqdmzyfTPh/nqvUVY4ePaoOHTrokUceUVJSkl566SV9+eWXOn/+vPbv32/vKNmwYYMWL16s/fv3Kz8/Xy1atNCjjz6qsWPHOkw8kJOTo7/+9a/6/PPPlZGRobNnz6pevXrq2bOnXnjhBd1www32sgkJCfYJBe677z778qZNm+rAgQP2n0+fPq3XX39dmzZt0i+//KKwsDB17dpVf/zjH9WmTRunY9q1a5emTZumb7/9VjVr1lSvXr00bdq0Sm87X+J2sFu0aJEWLVpUZrnu3btXeCyoYcOGadiwYeUuf9ttt7nsEQQAoDwyTzvfhFdd/fzzz+rbt6/atGmjRx99VOfOnbMPFfPiiy9q7ty5aty4se677z6Fh4dr165dmjJlivbt26f333/fvp3Dhw/r5ZdfVvfu3TVgwABdd911Onz4sFauXKnPP/9c27Zts8/l/uijj0q6MlvUI488opiYGFmtVoWFhTnUa8CAAfrll1/Up08fJSQk6PTp01q/fr1SU1O1du1aderUyV5+27ZtevDBBxUYGKgHHnhA119/vbZt26b+/fs7TFtqNL4/UBMAAKgyu3fv1vPPP69JkyY5LP/nP/+puXPnKj4+XikpKTKZTJKujDf3hz/8Qe+9957Wrl2r+++/X5LUunVr/fjjj6pTp47DdrZv365Bgwbp1Vdf1RtvvCHpyjX2x44d086dO/Xoo4+qe/fuslgsDoNKjxkzRqdOndKqVavs04ZKUnJysnr37q1nnnlGX375paQrQ6WMHz9eRUVF2rhxo/36fKvVqieffFJ///vfK7nVfIexB4YBAABuiYqK0nPPPee03DaxwLx58+yhTroyztyf//xnBQQEOFx6FRER4RTqpCuXUN10003aunVrueu0f/9+7dmzR4888ohDqJOuXJ8/cuRIHTp0yH7t/65du3TkyBHdfffdDjddBgQEaMqUKU5z1RsJPXYAAMCuXbt2Lmfp2Ldvn0wmk32+92vVqlVLP/30k8OyHTt2aNGiRfr666919uxZFRX9bx5md2YC2bdvn6Qr19jNnDnT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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.hist(data[\"achievement_score\"], bins=20, alpha=0.3, label=\"All\")\n", "plt.hist(data.query(\"intervention==0\")[\"achievement_score\"], bins=20, alpha=0.3, color=\"C2\")\n", "plt.hist(data.query(\"intervention==1\")[\"achievement_score\"], bins=20, alpha=0.3, color=\"C3\")\n", "plt.vlines(-0.1538, 0, 300, label=\"Untreated\", color=\"C2\")\n", "plt.vlines(-0.1538+0.4723, 0, 300, label=\"Treated\", color=\"C3\")\n", "plt.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Of course, we still think this result is biased. The difference between treated and untreated is probably smaller than this, because we think the bias is positive. We've already seen that more ambitious people are more willing to go to the seminar, so they probably would have achieved more even if they had not attended it. To control for this bias, we could use regression or matching, but it's time to learn about a new technique.\n", "\n", "## Propensity Score\n", "\n", "Propensity score comes from the realisation that you don't need to directly control for confounders X to achieve conditional independence $(Y_1, Y_0) \\perp T | X$. Instead, it is sufficient to control for a balancing score $E[T|X]$. This balancing score is often the conditional probability of the treatment, $P(T|X)$, also called the propensity score $P(x)$. The propensity score makes it so that you don't have to condition on the entirety of X to achieve independence of the potential outcomes on the treatment. It is sufficient to condition on this single variable, which is the propensity score:\n", "\n", "$\n", "(Y_1, Y_0) \\perp T | P(x)\n", "$\n", "\n", "There is a formal proof for why this is, but we can forget it for now and approach the matter in a more intuitive way. The propensity score is the conditional probability of receiving the treatment, right? So we can think of it as some sort of function that converts X into the treatment T. The propensity score makes this middle ground between the variable X and the treatment T. If we show this in a causal graph, this is what it would look like." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/svg+xml": "\n\n\n\n\n\n\n\n\nT\n\nT\n\n\n\nY\n\nY\n\n\n\nT->Y\n\n\n\n\n\nX\n\nX\n\n\n\nX->Y\n\n\n\n\n\nP(x)\n\nP(x)\n\n\n\nX->P(x)\n\n\n\n\n\nP(x)->T\n\n\n\n\n\n", "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g = gr.Digraph()\n", "g.edge(\"T\", \"Y\")\n", "g.edge(\"X\", \"Y\")\n", "g.edge(\"X\", \"P(x)\")\n", "g.edge(\"P(x)\", \"T\")\n", "g" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If I know what P(x) is, X alone tells me nothing more that can help me learn what T would be. Which means that controlling for P(x) acts the same way as controlling for X directly. Think of it in terms of our mindset program. Treated and non treated are initially not comparable because the more ambitious are both more likely to take the treatment and of achieving more in life. However, if I take 2 individuals, one from the treated and one from the control, but with the same probability of receiving the treatment, they are comparable. Think about it. If they have the exact same probability of receiving the treatment, the only reason one of them received it and the other did not is pure chance. Holding the propensity score constant acts in a way of making the data look as good as random. \n", "\n", "Now that we got the intuition, let's look at the mathematical proof. We want to show that $(Y_1, Y_0) \\perp T | P(x)$ is equivalent to saying that \n", "\n", "$\n", "E[T|P(x), X] = E[T|P(x)] \n", "$\n", "\n", "This simply says that once I condition on P(x), X can give me no extra information about T. The proof of this is quite weird. We will show that the equation above is true by converting it to a trivial statement. First take a look at the left hand side $E[T|P(x), X]$.\n", "\n", "$\n", "E[T|P(x), X] = E[T|X] = P(x)\n", "$\n", "\n", "We use the fact that P(x) is just a function of X, so conditioning on it gives no further information after we've conditioned on X itself. Then, we use the definition of the propensity score $E[T|X]$. \n", "\n", "For the right hand side, we will use the law of iterated expectations $E[A] = E[E[A|B]]$. This law says that we can compute the expected value of A by looking at the value of A broken down by B and then averaging that. \n", "\n", "$\n", "E[T|P(x)] = E[E[T|P(x),X]|P(x)] = E[P(x)|P(x)] = P(x)\n", "$\n", "\n", "The first equality comes from the law of iterated expectations. The second comes from what we've figured out when dealing with the left hand side. Since both the left and right hand side equals, $P(x)$, this equation is trivially true.\n", "\n", "## Propensity Weighting\n", "\n", "![img](./data/img/ps/balance.png)\n", "\n", "OK, we got the propensity score. Now what? Like I've said, all we need to do is condition on it. For example, we could run a linear regression that conditions only on the propensity score, instead of all the Xs. For now, let's look at a technique that just uses the propensity score and nothing else. The idea is to write the conditional difference in means with the propensity score\n", "\n", "$\n", "E[Y|X,T=1]−E[Y|X,T=0] = E\\bigg[\\dfrac{Y}{P(x)}|X,T=1\\bigg]P(x) - E\\bigg[\\dfrac{Y}{(1-P(x))}|X,T=0\\bigg](1-P(x))\n", "$\n", "\n", "We can simplify this further, but let's take a look at it like this because it gives us some nice intuition of what the propensity score is doing. The first term is estimating $Y_1$. It is taking all those that are treated and scaling them by the inverse probability of treatment. What this does is it makes those with very low probability of treatment have a high weight. This makes sense, right? If someone has a low probability of treatment, that individual looks like the untreated. However, that same individual was treated. This must be interesting. We have a treated that looks like the untreated, so we will give that entity a high weight. This creates a population with the same size as the original, but where everyone is treated. By the same reasoning, the other term looks at the untreated and gives a high weight to those that look like the treated. This estimator is called the Inverse Probability of Treatment Weighting (IPTW), since it scales each unit by the probability of receiving some treatment other than the one it received. \n", "\n", "In a picture, here is what this weighting does.\n", "\n", "![img](./data/img/ps/iptw.png)\n", "\n", "The upper left plot shows the original data. The blue dots are the untreated and the red dots are the treated. The bottom plot shows the propensity score P(x). Notice how it is between 0 and 1 and it grows as X increases. Finally, the upper right plot is the data after weighting. Notice how the red (treated) that are more to the left (lower propensity score) have a higher weight. Similarly, the blue plots that are to the right have also a higher weight. \n", "\n", "Now that we got the intuition, we can simplify the terms above to\n", "\n", "$\n", "E\\bigg[Y \\dfrac{T-P(x)}{P(x)(1-P(x))}\\bigg|X\\bigg]\n", "$\n", "\n", "which if we integrate over X becomes our propensity score weighting estimator.\n", "\n", "$\n", "E\\bigg[Y \\dfrac{T-P(x)}{P(x)(1-P(x))}\\bigg]\n", "$\n", "\n", "Notice that this estimator requires that $P(x)$ and $1-P(x)$ are larger than zero. In words, this means that everyone needs to have at least some chance of receiving the treatment and of not receiving it. Another way of stating this is that the treated and untreated distributions need to overlap. This is the **positivity assumption** of causal inference. It also makes intuitive sense. If treated and untreated don't overlap, it means they are very different and I won't be able to extrapolate the effect of one group to the other. This extrapolation is not impossible (regression does it), but it is very dangerous. It is like testing a new drug in an experiment where only men receive the treatment and then assume women will respond to it equally well.\n", "\n", "\n", "## Propensity Score Estimation\n", "\n", "In an ideal world, we would have the true propensity score $P(x)$. However, in practice, the mechanism that assigns the treatment is unknown and we need to replace the true propensity score by an estimation of it $\\hat{P}(x)$. One common way of doing so is using logistic regression, but other machine learning methods, like gradient boosting, can be used as well (although it requires some additional steps to avoid overfitting). \n", "\n", "Here, I'll stick to logistic regression. This means that I'll have to convert the categorical features in the dataset to dummies. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(10391, 32)\n" ] } ], "source": [ "categ = [\"ethnicity\", \"gender\", \"school_urbanicity\"]\n", "cont = [\"school_mindset\", \"school_achievement\", \"school_ethnic_minority\", \"school_poverty\", \"school_size\"]\n", "\n", "data_with_categ = pd.concat([\n", " data.drop(columns=categ), # dataset without the categorical features\n", " pd.get_dummies(data[categ], columns=categ, drop_first=False)# categorical features converted to dummies\n", "], axis=1)\n", "\n", "print(data_with_categ.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let's estimate the propensity score using logistic regression." ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", "
interventionachievement_scorepropensity_score
010.2773590.315533
11-0.4496460.263687
210.7697030.344069
31-0.1217630.344069
411.5261470.367849
\n", "
" ], "text/plain": [ " intervention achievement_score propensity_score\n", "0 1 0.277359 0.315533\n", "1 1 -0.449646 0.263687\n", "2 1 0.769703 0.344069\n", "3 1 -0.121763 0.344069\n", "4 1 1.526147 0.367849" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.linear_model import LogisticRegression\n", "\n", "T = 'intervention'\n", "Y = 'achievement_score'\n", "X = data_with_categ.columns.drop(['schoolid', T, Y])\n", "\n", "ps_model = LogisticRegression(C=1e6).fit(data_with_categ[X], data_with_categ[T])\n", "\n", "data_ps = data.assign(propensity_score=ps_model.predict_proba(data_with_categ[X])[:, 1])\n", "\n", "data_ps[[\"intervention\", \"achievement_score\", \"propensity_score\"]].head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, we can make sure that the propensity score weight indeed reconstructs a population where everyone is treated. By producing weights $1/P(x)$, it creates the population where everyone is treated and by providing the weights $1/(1-P(x))$ it creates the population where everyone is untreated." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Original Sample Size 10391\n", "Treated Population Sample Size 10387.999794643642\n", "Untreated Population Sample Size 10391.775443020533\n" ] } ], "source": [ "weight_t = 1/data_ps.query(\"intervention==1\")[\"propensity_score\"]\n", "weight_nt = 1/(1-data_ps.query(\"intervention==0\")[\"propensity_score\"])\n", "print(\"Original Sample Size\", data.shape[0])\n", "print(\"Treated Population Sample Size\", sum(weight_t))\n", "print(\"Untreated Population Sample Size\", sum(weight_nt))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also use the propensity score to find evidence of confounding. If a segmentation of the population has a higher propensity score than another, it means that something which is not random is causing the treatment. If that same thing is also causing the outcome, we have confounding. In our case, we can see that students that reported to be more ambitious also have a higher probability of attending the growth mindset seminar." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.boxplot(x=\"success_expect\", y=\"propensity_score\", data=data_ps)\n", "plt.title(\"Confounding Evidence\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We also have to check that there is overlap between the treated and untreated population. To do so, we can see the empirical distribution of the propensity score on the untreated and on the treated. Looking at the image below, we can see that no one has a propensity score of zero and that even in lower regions of the propensity score we can find both treated and untreated individuals. This is what we call a nicely balanced treated and untreated population. " ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.distplot(data_ps.query(\"intervention==0\")[\"propensity_score\"], kde=False, label=\"Non Treated\")\n", "sns.distplot(data_ps.query(\"intervention==1\")[\"propensity_score\"], kde=False, label=\"Treated\")\n", "plt.title(\"Positivity Check\")\n", "plt.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we can use our propensity score weighting estimator to estimate the average treatment effect. " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Y1: 0.25955383899505813\n", "Y0: -0.12891714066174215\n", "ATE 0.3884709796568001\n" ] } ], "source": [ "weight = ((data_ps[\"intervention\"]-data_ps[\"propensity_score\"]) /\n", " (data_ps[\"propensity_score\"]*(1-data_ps[\"propensity_score\"])))\n", "\n", "y1 = sum(data_ps.query(\"intervention==1\")[\"achievement_score\"]*weight_t) / len(data)\n", "y0 = sum(data_ps.query(\"intervention==0\")[\"achievement_score\"]*weight_nt) / len(data)\n", "\n", "ate = np.mean(weight * data_ps[\"achievement_score\"])\n", "\n", "print(\"Y1:\", y1)\n", "print(\"Y0:\", y0)\n", "print(\"ATE\", ate)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Propensity score weighting is saying that we should expect treated individuals to be 0.38 standard deviations above their untreated fellows, in terms of achievements. We can also see that if no one got the treatment, we should expect the general level of achievements to be 0.12 standard deviation lower than what it is now. By the same reasoning, we should expect the general level of achievement to be 0.25 standards deviation higher if we've given everyone the seminar. Contrast this to the 0.47 ATE estimate we've got by simply comparing treated and untreated. This is evidence that the bias we have is indeed positive and that controlling for X gives us a more modest estimate of the impact of the growth mindset.\n", "\n", "## Standard Error\n", "\n", "![img](./data/img/ps/bootstrap.png)\n", "\n", "To compute the standard error for the IPTW estimator, we can use the formula of the variance of a weighted average.\n", "\n", "$\n", "\\sigma^2_w = \\dfrac{\\sum_{i=1}^{n}w_i(y_i-\\hat{\\mu})^2}{\\sum_{i=1}^{n}w_i}\n", "$\n", "\n", "However, we can only use this if we have the true propensity score. If we are using the estimated version of it, $\\hat{P}(x)$, we need to account for the errors in this estimation process. The easiest way of doing this is by bootstrapping the whole procedure. This is achieved by sampling with replacement from the original data and computing the ATE like we did above. We then repeat this many times to get the distribution of the ATE estimate." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "from joblib import Parallel, delayed # for parallel processing\n", "\n", "# define function that computes the IPTW estimator\n", "def run_ps(df, X, T, y):\n", " # estimate the propensity score\n", " ps = LogisticRegression(C=1e6).fit(df[X], df[T]).predict_proba(df[X])[:, 1]\n", " \n", " weight = (df[T]-ps) / (ps*(1-ps)) # define the weights\n", " return np.mean(weight * df[y]) # compute the ATE\n", "\n", "np.random.seed(88)\n", "# run 1000 bootstrap samples\n", "bootstrap_sample = 1000\n", "ates = Parallel(n_jobs=4)(delayed(run_ps)(data_with_categ.sample(frac=1, replace=True), X, T, Y)\n", " for _ in range(bootstrap_sample))\n", "ates = np.array(ates)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The ATE is then the mean of the bootstrap samples. To get confidence intervals, we can inspect the quantiles of the bootstrap distribution. For the 95% C.I., we use the 2.5 and 97.5 percentiles." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ATE: 0.3877462297999537\n", "95% C.I.: (0.35451340719137264, 0.41992762663472816)\n" ] } ], "source": [ "print(f\"ATE: {ates.mean()}\")\n", "print(f\"95% C.I.: {(np.percentile(ates, 2.5), np.percentile(ates, 97.5))}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also have a visual on what the bootstrap samples look like, along with the confidence intervals." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmoAAAHOCAYAAAAotyUaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABT7klEQVR4nO3deXxN18L/8W9G0UQSY5pIBCl6jTXVWGNViaqiqhRVqkVLcF0t5epTvTG1qFlv+zMrWqq5tOXSmqlSQ6+W2yiNKWgkkZA5vz885zw5MnOGneTzfr28Inuvs/c665yzzzdrr7W3U2xsbKYAAABgOM6OrgAAAAByRlADAAAwKIIaAACAQRHUAAAADIqgBgAAYFAENQAAAIMiqAEAABgUQQ0AAMCgCGoAAAAGRVADgGJo+PDh8vX1Vb169RxdlQKrV6+efH19NXz48Gzr9u7dK19fX/n6+mrv3r0OqN39Cw0Nla+vr0JDQx1dFRRBro6uAIq/06dPq2XLlubfV6xYoWeffdaizIULF9SgQYMH3teJEycUHBysvXv36plnninUY7t27aq1a9cWep+hoaHav39/jutcXFzk7e2tGjVqqH379ho8eLAefvjhQu8DxZuvr2+2ZU5OTvL09JS3t7fKly+vevXqqVGjRnrmmWfk5+dn/0oCcAh61GBz69ats/j9s88+c1BN7C89PV03b97UDz/8oBkzZujxxx/X1q1bHV2tfNmjN+bChQvmHpI1a9bYbD9FVWZmphISEnT58mWdOnVKa9eu1V//+lfVrVtXgwcP1qVLlxxSr6Lcs2VNRbHHEkUTPWqwqfT0dG3cuFGS5OXlpYSEBP373//WjRs3VKFCBXO5gIAAHThwINft9OrVS1euXJG/v7+++OKLXMsFBARkWzZkyBANGTIk37qWKVMm3zL5ufc5pKSk6NKlS9qyZYs2btyo+Ph4DR48WPv27VPNmjUfeH8oXho2bKiFCxeaf09JSVFcXJwuXLigQ4cOKSIiQrdu3dLmzZv13Xff6Z///KeefPLJHLe1ePFiLV682F5Vt4pTp045ugo2URT+OINxEdRgU7t27dLVq1clSeHh4Ro1apRSU1O1ceNGi3Eobm5uql27dq7bcXV1Nf/Mq1xOKlSoUOjH3K+c9vPYY48pNDRUVapU0ezZs5WSkqLFixdrzpw5dqkTio6HHnoo1/fqwIEDNX36dL3//vtaunSpYmNjNWjQIH399deqX7++nWsKwF449QmbMp32DAgIUP/+/c1j1e49HVoSjB492vz/o0ePOrAmKKq8vb01Y8YMvfPOO5KkxMREjRo1ysG1AmBLBDXYTFxcnLZt2yZJ6t27t5ydnfXCCy9Ikk6ePKn//Oc/jqye3ZUpU0bly5eXdPeUVl5u3ryp8PBwtWvXTsHBwfLz81OdOnU0aNAgbd++vUD7u59thIeHy9fX1xyko6KizOORsv671759+zRs2DA99thj8vf318MPP6y6deuqXbt2Gj9+vL7++mtlZmaay/v6+lpMHhk5cmS2fYSHh5vXr1mzxrz8woULSklJ0ZIlS/TUU08pJCREZcuW1VtvvWUun5KSoq+//lrjx49X+/btFRwcrAoVKqhatWrq2LGjwsPD9eeff+bZfvfOQDx+/LiGDRumunXrys/PT48++qiGDh2q48eP5/taWNu4cePUqFEjc7127tyZrUxBxlBt3bpVL730kvk5BQQEqF69eurUqZMmT56sPXv2mMuaxhRmnaTzzDPPZHvdso43NL2fTO+Z+Ph4zZ49W23btlXVqlXl6+urRYsWmcvnNevzXhkZGVq5cqW6dOmi6tWry9/fX82bN9f777+vW7du5fq4go4ty20s3v18Rgo66/PIkSMaPny4GjRoIH9/fwUFBalFixaaOHGioqKicn1cTuM9d+/erX79+unRRx9VpUqVVKdOHY0YMULnzp3Lsw4wHk59wmY2b96spKQkSVKfPn0kSc8++6z+9re/KSkpSevWrdO0adMcWUW7SkhIUExMjCQpMDAw13J79uzRwIEDFRsba7H80qVL5vFu3bt317Jly+Th4WGzbRTUO++8owULFmRbfvHiRV28eFHHjx/Xxx9/rKtXrz7wvqS7AXTgwIE6ceJErmVGjx6dY6/tzZs3dfToUR09elQff/yx1q5dq+bNm+e7z9WrV2vMmDFKTU01L7t69ao+//xzffnll5o5c6ZeeeWV+3tC98HJyUmvv/66hg0bJkmKiIhQx44dC/z49PR0vfrqq9q0aVO2dbdv31ZUVJSOHDmi9evX6+zZs1ap87lz59SzZ0+dP3/+gbeVmpqqF154QTt27LBY/uuvv+rXX3/VZ599pq+++krVqlV74H3ZQ2ZmpiZOnJjjmMJffvlFv/zyiz799FPNmzfP/MduXv7nf/5HH374ocWyS5cuae3atYqIiNAXX3yhxx9/3Gr1h20R1GAzpi/KOnXqqG7dupIkHx8fPf300/ryyy+1ceNGvfvuu3JxcXFkNe3mo48+Mvcqde3aNccyP//8s55//nklJyfLxcVFgwcP1jPPPCNvb2+dPn1aCxcu1OnTp/XVV1/J2dlZy5cvt+o2hg4dqmeffVbTpk3Ttm3b8p288e2335pDWu3atTV48GDVqlVLvr6+unXrls6ePas9e/bo22+/tXjcgQMHdPXqVfXs2VPS3bB3b5tUrFgxx32OHDlSp0+fVp8+fdSzZ089/PDDunLlitLT081l0tPTVbVqVXXr1k2NGzdWYGCgXF1d9ccff2j37t1avXq1YmJi9NJLL+ngwYO57ku6O8D9888/V9myZTVmzBg1bdpUqamp+v7777VgwQIlJiZq3LhxCgoKUqdOnXLdjrV16NDB/P+DBw8W6rGffvqpOaQ1a9ZMAwYMULVq1VSmTBndvHlTv/zyi77//nv9/PPP5seYJvwcO3ZMb7zxhiRpwYIF5p69rOVyMmDAAF26dElDhw5V165dVa5cOV24cEFly5YtVN0ladq0aTp27JjatGmjIUOGKDg4WFeuXNHq1au1detWRUVF6bnnntP+/fvl6elZ6O3npbCfkYJ47733zCGtcuXKCgsLU6NGjZScnKxdu3Zp4cKFunPnjl5//XX5+vqqc+fOuW5r5cqVOnz4sJo3b65XXnlFNWrUUGJiorZs2aJ//vOfunXrloYNG6YjR47Izc3tgeoN+yCowSYiIyN1+PBhSVLfvn0t1r3wwgv68ssvFR0drV27dtn8y+3GjRs6ffp0vuWCg4Mf+KB+735SU1N16dIlRUREmC9L0rJlS/Xv3z/Hx4eFhSk5OVlOTk5asWKFunXrZl7XsGFD9erVS88995wOHjyoL7/8Utu2bcsWcB5kGxUrVlTFihXl4+MjKf/JG6Yv+6CgIG3fvl1eXl4W61u1aqXBgwcrNjZWpUqVMi+vXbu2RVv7+/sXeMLHf/7zH82ZM0eDBw82L3vssccsyrz99tuqWrWqnJycLJY3bNhQzz77rIYMGaLOnTvrxo0bWrp0qXnMV05+/vlnVa5cWTt27LAIIS1atFDXrl3VtWtXJSYmauzYsfrpp5/ME19srUKFCqpcubIuXbqkyMjIQj3W9Lo1btxYW7duzVbntm3b6vXXXzf3AEv/N+En6ynj4ODgAr9uv/zyi9avX2/xeb/3dSuoY8eO6aWXXrLoyX3sscfUpUsXc2/S+fPn9eGHH2ry5Mn3tY/cFPYzkp9ffvlFc+fOlSSFhIRo+/bt5iES0t3jRdeuXdWtWzfdvn1bo0eP1okTJyw+T1kdPnxY/fv31/z58+Xs/H+jm1q3bq0KFSooPDxc58+f1/bt27kAbxHBGDXYhKk3zdnZWb1797ZY9+STT5oPRPaYVPDJJ5+oZcuW+f47duzYA+/r3m22bdtW/fr107p16+Tv768ZM2Zo8+bNOR5kjx07ph9//FHS3TCbNWCZeHh4aPHixeYv1mXLlll9G4Vx7do1SVKDBg2yhbSsfH19s4Wm+9W6dWuLkJaTatWq5bm/OnXqaMCAAZJkHkeZl/fffz/HnqIGDRqYB/NHRUXp66+/zndb1mTqjUpLS1N8fHyBH2d63Zo1a5ZnsCxXrtyDVTCLvn37Wu2PsooVK2rGjBk5rps4caJCQkIkScuXL7c4XW1En3zyiTIyMiRJc+bMsQhpJo0aNVJYWJiku6fct2zZkuv2/Pz89MEHH1iENJPhw4ebe9Fyu0g3jIegBqvLzMzU+vXrJUlt2rSRv7+/xXo3NzfzKa9t27YpLi7O7nV0hMuXL2vFihXZTgOafPfdd+b/Dxw4MNftVK1aVe3atZN095RXcnKyVbdRGKa7LBw4cEC///77fW2jsEzjHQsjNjZWv//+u3755RedPn1ap0+fNveI/Prrr3l+mfv6+uYYeE1eeukl8/+///77QtftQWQNxwkJCQV+nOl1++abb/KdVGEtBRlbVVA9evTItffb1dXV3Iv/559/6uTJk1bbry2YPrNVq1ZVmzZtci03aNCgbI/JSffu3XMdC+rt7a1HHnlEkqwyVhD2QVCD1e3du9c8Qym3g7NpeVJSkjZv3mzT+kyYMEGxsbH5/nviiSceeF/3bjMmJkbnzp3Txo0b1apVK50+fVqDBg3KddCwdLcX8t5xP/dq0qSJJCk5OVm//fabVbdRGC+++KIkKSYmRi1atNDgwYO1atUq/fe//72v7RVEQa8E/5///EcjR45UrVq1VLVqVTVs2FAtWrQw93ZOnz5d0t3Zg/dOusiqfv36efY6Va5c2Rx87D2TOevsxsJcsLlfv36S7g7wb9iwoUaMGKENGzbojz/+sHodTUzjVK2hcePGBV5v5NnlycnJ5tPWTZs2zbOsn5+fqlSpIin7EIusatWqled2TDNSCxPs4VgENVid6XTmQw89lOv9Nps0aWI+PVGcr6nm7OyscuXKqVOnTvrqq6/UokULZWZm6p133sk2m+7mzZuS7n7h5jc7Muu9Hk2Ps9Y2CqNNmzaaM2eOPD09zaH7zTffVNOmTVWzZk2NGDHCPFbRWnK6PMi9Vq5cqbZt22rNmjWKjo7Ot/ydO3dyXZfXRIN7y2Qd02UPpv25uroWKqj1799ff/vb3+Tm5qb4+HitXbtWw4YNU/369VWvXj2NHz++QOM6C6Mgr1tB5feaZF1v79ekMLL+gZD1Ti25MX1m8/q8li5dOs9tmE6JZp18A2MjqMGqEhMTFRERIenuNP/AwMAcrzHk6+tr/kvy8OHDhR4MXRS5uLho5MiRku4eJHO756k1xnJZazxYQQwePFgnT57UzJkz1aVLF/O4qWvXrmnt2rXq3Lmz3nzzTfM4nAeV09ibrM6ePauxY8cqLS1NFStW1Hvvvafvv/9ev//+u65fv27u7Zw/f775MVmv8XYve7ZlYVy7dk1XrlyRJNWoUaPQj584caJ++uknvfvuu+rQoYP5NGpUVJQ+/vhjtWrVyuJadg/KmrO7jfqaPIji+JxgHQQ1WNVXX311X13qxblXLaus9/e895SMKeDEx8ebrz+Xm6y9RFkvb2CNbdyP8uXLa9iwYVq3bp3OnTun/fv3a9KkSapUqZIkadWqVQ80aaEw1q5dq7S0NLm4uGjr1q1688039dhjj6ls2bIWlyPI63RnVqaB93m5fv26JOsOvs/Prl27zP9v0aLFfW0jMDBQo0eP1qZNm3ThwgXt3LlTYWFh8vb2VmZmpmbMmFGgyRb2lt9rYno9pOyviSno5xXOpbt/aNpa1l7GrHXOjekz+6CfVxQtXJ4DVmUKXOXLl9fMmTPzLT9v3jydPHlSGzZs0KRJk4r9X5VpaWnm/9976uEvf/mLpLtjpn766ac8v3xNt6AqVaqUeXCwtbYhPdhf905OTqpTp47q1Kmj559/Xs2aNVNycrK+/PJLvf7661bZR15M4/Tq1q2b543vf/rppwJt7+TJk0pLS8t1nNrly5fN97O11z1lMzMztXTpUvPvuQ0xKAwXFxc1btxYjRs3VteuXfXUU09Jkr788kuLS8AY4TN69OjRbJf9ySrrDO57XxNTz2F+k5jyu9CvNdqhVKlSCgkJUWRkZL63lbt27Zp5DKG93mcwBnrUYDVRUVHmW61069ZNvXr1yvefaTD6H3/8oX379jmy+naRNRxUrlzZYl379u3N/1+9enWu27hw4YJ51leLFi0sLvVhjW1IMo9vy+9WV/mpWrWqqlatKknZZhdmHUP3oPvJyhSA8+oRuXr1aoEvpREbG6utW7fmuj5rO5tm0traBx98YH4vNWzY0OJ1t4bHH39cDz30kCT7vW6FsWXLllxf37S0NPOwgnLlymW7Yb3p/Wi6IHNOMjMz9fnnn+dZB2t9RkyvnaknOjcrV67M9hiUDAQ1WM369evNpxOeffbZAj2me/fu5r9Mi/vpz9jYWM2ZM8f8+71XF2/UqJF5ttq6detyvB9ncnKyRo4cae6ZM91CyJrbkP5v0PL169fzvG/ipk2b8gxE58+fN99bMDg42GJduXLl5O7uLklWvbRH9erVJVledDmr27dva+jQoXlOILjXpEmTzL1mWZ06dUofffSRpLunEbt06XKftS6Y+Ph4TZgwwXzrNU9PT/P+C+Ozzz7L85IkBw8eNL+u975uWSeh2OuSLPe6du2a3n777RzXTZ8+3TyLedCgQeb3mEmrVq3M/583b16O25g1a1aetyiTCv4Zyc+QIUPMp2PHjh2b4yn548ePm48dDz/8cIGPrygeOPUJqzH9FVu2bNk8rweUVeXKldWkSRMdOXJEX331lWbNmmX1W74U9M4E7u7u2U4BFta9+8nMzFRsbKyOHj2qZcuW6eLFi5LuXhg3py/1efPmqWPHjkpOTla/fv00ZMgQhYaGytvbW7/88ovmz59v3kePHj1yvBWVNbbRrFkzSXdPoY4dO1bDhg2zuBCnKQz9/e9/V1hYmLp06aJWrVrpkUcekZeXl27evKljx45p2bJl5kBw770wXV1d1ahRIx06dEirV682zzg0jSMrW7bsfY3F6du3r5YtW6aMjAz16dNHo0aNUvPmzeXh4aHjx49r0aJFioyMVPPmzXXo0KF8t1e3bl2dOXNGbdu2Nd9CKi0tTd9//73mz5+vhIQEOTk5afbs2Q98S57bt29bvIdSUlIUFxenCxcu6PDhw4qIiDBf2NbHx0effPJJgS9XktXrr7+uyZMnKzQ0VM2aNVP16tXl4eGhP//8UwcOHNDHH38s6e5rlPX6XdLdu1CY7ogwf/58BQQEqEaNGubJAhUrVizUDNT70ahRI61YsUIXLlzQkCFDFBQUpOjoaK1evdo8malKlSoaN25ctsfWr1/f/NqvWbNGqamp6t+/v3x8fHThwgWtW7dO33zzTb7vj4J+RvLzl7/8RWFhYfrwww915swZPfHEEwoLC1PDhg0tbiF1+/ZtOTk5ad68ebnelQDFE0ENVvHDDz+Y/4rt2rVroW6j0717dx05ckQJCQmKiIjIc+zJ/fjkk0/0ySef5FsuKChIp06deqB9tWzZMt8y7dq10/Lly3Mc41K3bl1t2LBBgwYNUmxsrJYuXWoxFsmke/fuWrJkSY7bt8Y22rRpo6ZNm+rIkSPauHGjNm7caLE+61/98fHxWr9+vfkix/dycXHRlClTcgyEY8aMUd++fRUTE6OhQ4darJswYUKuvSZ5adSokd5++22Fh4crLi5O7733XrYyb7zxhv7yl78UKKjVq1dPw4YN09ixY/XWW29lW+/i4qLp06fr6aefLnRd7/XTTz/l+x5yc3NTaGiopk2bpsDAwPve1/Xr17V8+fIc7xcr3b3Mw7x589SgQYNs68aOHatx48bpwoUL5muymSxcuDDXW6RZyzvvvKOFCxdq586dOV5kODAwUJs3b871bhkLFy5U165dFR0drQ0bNmjDhg0W6/v06aP+/fvn2XNVmM9IfiZPnqzbt29ryZIlioqKyjFgenh4aN68eXne5xPFE0ENVpH1tGVhu+WfffZZ8/341q1bZ/Wg5khOTk7y9PSUv7+/GjZsqOeffz7f2+i0bdtWx44d05IlS7R9+3adO3dOSUlJqlChgpo0aaKXXnrJPNDbVttwdnbWpk2bNG/ePH3zzTc6f/68EhMTs82Ui4iI0LfffquDBw/qv//9r65fv66YmBiVLl1aVapUUatWrfTKK6/o0UcfzXE/nTt31pYtW7RkyRL99NNPunHjhlVu+TNhwgQ1bNhQS5Ys0bFjx3T79m1VrFhRjRo10iuvvKL27dtrzZo1Bd7ewIEDVadOHS1evFgHDx7U9evXVbZsWbVq1UqjRo2673tW5sfT01NlypRRhQoVVK9ePTVu3FjPPPOMxenH+3Hw4EHt2LFDBw8e1Pnz53Xt2jXFxcXpoYceUkhIiNq1a6dXXnlFQUFBOT5+yJAhqlixopYvX65Tp07p5s2bFhNlbM3NzU0bN27UihUr9Nlnn+ns2bO6c+eOgoOD9cwzz2jUqFHy9vbO9fEhISHavXu3PvzwQ23fvl2XL1+Wl5eX6tatq5dfflk9e/Y0j7fNTUE/IwXh5OSk6dOnq1evXvrkk0904MABXbt2Ta6urgoKClL79u31+uuvmy94i5LFKTY2tvDvKgAo5urVq6eoqCi9+OKLOd5JAgDsgckEAAAABkVQAwAAMCiCGgAAgEER1AAAAAyKoAYAAGBQzPoEAAAwKHrUAAAADIqgBgAAYFAEtRIqKSnJfLV62AZtbB+0s33QzrZHG9tHUWtngloJlp6e7ugqFHu0sX3QzvZBO9sebWwfRamdCWoAAAAGRVADAAAwKIIaAACAQRHUAAAADIqgBgAAYFAENQAAAINydXQFAAAoKjIyMpSYmGiTa3BlZGTI3d1dcXFxunXrltW3j7ts2c4eHh7y9PSUs7P1+sEIagAAFEBGRob+/PNPeXl5qUKFCnJycrL69lNSUuTu7m7VL3pYslU7Z2ZmKikpSX/++afKly9vtW3zTgAAoAASExPl5eWl0qVLWz2koehzcnJS6dKl5eXlpcTERKttl6AGAEABJCUlycPDw9HVgMF5eHhY9dQ4QQ0AgAKiJw35sfZ7hKAGAABgUIUOauvXr1dYWJjatWunSpUqydfXV2vWrMlWLjU1VVu2bNHrr7+uxx9/XJUrV1ZgYKA6duyoTz75JM8bom7YsEEdOnRQQECAgoOD9cILL+j48eOFrSoAAECRVuhZn9OmTVNUVJTKly8vPz8/RUVF5Vju999/16BBg+Tl5aU2bdqoS5cuio+P1zfffKNx48Zp+/bt+uyzz7J1Ec6ePVvTpk1TUFCQBg8erISEBG3atEmdO3fWli1b1Lx58/t7pgAAAEVMoYPa/PnzVb16dVWpUkVz5szRu+++m2M5Ly8vzZ49Wy+++KI8PT3Ny6dNm6Zu3brp22+/1ZYtW9SjRw/zusjISE2fPl2PPPKIdu7cKR8fH0nSkCFD1KlTJ40ePVoHDx5k2jIAACgRCh3U2rVrV6ByAQEBGjp0aLblnp6eGjlypIYOHar9+/dbBLU1a9YoLS1N48aNM4c0Sapfv7569eqltWvX6uDBg2rVqlVhqw0ANrf8jPWm5Ju8XMsz/0IAii2HdE25ublJklxcXCyW79u3T5LUoUOHbI/p2LGjJGn//v02rh0AALhXRkaGli1bpjZt2sjf319BQUHq0qWLtm3blmP58PBw+fr65vrvwoULFuXT09P1wQcfqEGDBqpSpYp69OihX3/9NcdtL1++XP7+/vr999/v67lkZmYqIiJCL730kmrXrq1KlSopMDBQrVq10ttvv51tv6GhofL19VV0dPR97e9BOOTOBKtXr5aUPZBFRkbKy8tLfn5+2R4TEhJiLlMQtri9R3GSkpJi8RPWRxvbh5HaOTU11erbNMqxzEjt7CgZGRnKyMiw2fYzMzPNP225n/uRmZmpl19+WREREapWrZpeeuklJScn6+uvv1a/fv00Y8YMvfrqq9keI0kvvviigoKCsm3T29vb4nkuWLBA7733njp16qSQkBBt3LhRzz33nA4fPiwvLy9zuatXr2rKlCmaMGGCgoODC91WMTExevnll7Vv3z75+PioXbt2qlq1qlJSUvTrr7/qk08+0dKlS/Xll1+qdevWFo8t6HsgIyMjz89uYa7HZ/egtnz5cu3YsUNt2rTRU089ZbEuPj5eFStWzPFxZcqUMZcpiMuXL+c5sxR3OeKvg5KGNrYPI7RzzE2X/AsVUlSUsY5jRmhnR3F3d7dLULVF4H9QERERioiI0OOPP67169erdOnSkqQJEyaoc+fOmjJlitq3b68qVaqYH2P6Du7du3euQ5aytufKlSvVpk0brVq1SpL09NNPq0ePHtq2bZvFMKm//vWvCg4O1tChQwv9eqSlpemll17SoUOH1Lt3b4WHh5vzhUl0dLTCw8MVExNj3r4pnKWmphZon0lJSbnmFRcXF1WvXr3AdbZrUPvmm280fvx4BQUFadmyZTbdV0BAgE23X9SlpKQoOjpafn5+cnd3d3R1iiXa2D6M1M7lkq3f+xUUZIwr4RupnR0lLi4uz+f+1LYb2Zb1rFpar9fOe5zhkespmnQkXsq82wvl5OQkOUnvN/VW04p5t/WS04nadP5OtuXbu1bI83GFtWPHDknKNobc399fI0aM0MSJE7Vx40a9/fbb5nWm4U1ubm4Fes9cvnxZ3bp1M5dt2rSppLs9aKZlERER+vbbb/Xvf/9bDz30UKGfx8aNG3Xo0CE1b95cixcvzjYES5KCgoK0aNEiJScnm/drmsRY0Ofi4eGR49nB+2G3oLZ9+3YNGjRIlSpVUkREhB5++OFsZby9vXNNoKY73Ht7exdof9zmo2Dc3d1pKxujje3DCO3s5mb93i9HP6d7GaGdHeXWrVt5XnXgx+vZe8Ier5T/jb8T0nJ+bEKa8n3sxdvpOT7W2ldHuHbtmiSpatWq2bZdtWpVSXfHmWddZ7r81sGDB3Xs2DE5OzurevXqateuncWpTJPKlSvr1KlT5m2cOnVK0t3g5OzsrLi4OE2YMEEjRoxQw4YN7+t5mK77OmbMGLm4uOTZTqZew6ycnZ0L1LbOzs5W+5zYJah9++23GjhwoMqXL6+IiAjzi3qvkJAQ/fDDD+a/2rIyjU0zjVUDAAD2Ub58eUnShQsXVKtWLYt1pkkBv/32W46PDQ8Pt/jdx8dH06dP14svvmixfODAgZoyZYpeeOEFhYSEaMOGDfL391fnzp0lSVOmTJGHh4cmTpx4X88hLS1NR48elaurq5o1a3Zf23AEm8/6NIW0smXLKiIiIs/zsqZz2Lt27cq2bufOnRZlAACAfTz55JOSpDlz5lgMko+JidHixYsl3T01nFXdunW1YMECHT9+XFevXtWJEyc0c+ZMOTk5acSIEdlmi44cOVKTJk3SL7/8otWrV6tOnTravHmzvLy8tG/fPq1cuVJz586Vm5ubJk2apKpVq8rPz0/9+vXT9evX830OMTExSk1NVfny5YtUr7BNg9qOHTs0cOBA+fr6KiIiIt/esP79+8vV1VUffPCBxQt+8uRJffHFF6pVq5ZatGhhyyoDAIB7PP/883riiSd08OBBtWzZUuPHj9eYMWPUvHlz82D8e08JPvPMM3rppZdUtWpVeXh4KDg4WMOGDdOKFSsk3b0AflYuLi4aP368Tp48qT/++ENbtmzRo48+qqSkJIWFhalv375q166dPvroI/3zn//U5MmTtXz5cp08eVIjRoywT0M4QKFPfa5cuVIHDx6UJJ0+fVqStGrVKvM10Fq0aKGBAwfq7Nmz5um7rVu31ueff55tW1WqVFH//v3Nvz/yyCN66623NG3aNLVu3Vrdu3c330JKkubNm8ddCQAAhtS0olu2ZUGe+X/Ners5q2lFN2VKyszIlJOzk5z+d3l+gjxdc9yvtbm6uurzzz/XnDlz9Pnnn2vFihXy9vZWt27d9Oabb6px48aqUKFgExjatm2ratWq6fTp04qPj8937PnMmTMVFxenf/zjH5KkJUuWqG/fvhoyZIiku2MHhw0bpv/+97+qUaNGrtspV66c3NzcFBMTYzFRwOgKHdQOHjyodevWWSw7dOiQDh06ZP594MCBio6OVnJysiTpiy++yHFbrVq1sghq0t1pt1WqVNHixYv16aefys3NTS1atNDEiRP12GOPFba6AADYxY5ule7rcU0ruWtHt0rKyMhQSkqK3N3zn4BgMryOl4bXyT4w3xZKlSqlt956S2+99ZbF8r1790pSoQb4ly9fXufOndOdO3fyDGo///yzPvroIy1dulRly5ZVXFycrl27pnr16pnL1K9fX5J09uzZPIOaq6urGjdubM4snTp1KnB9HanQQW3x4sXm89F5eeKJJxQbG3s/dVKfPn3Up0+f+3osAACwn40bN0qSevXqVaDyiYmJ+vXXX+Xp6WmepJCT9PR0jRo1Sh07dsy2bVNHUNb/m2aZ5sV0DbV58+aZx93lJjk5WaVKlcp3m7bGeUQAAJCvnC6ftWXLFq1evVqNGjXSM888Y15+69atHGeB3rlzR6NHj9atW7fUo0cPubrm3l+0ePFinT17Vh988IF5mY+Pjx5++GHzdd2k/7vG272zUXPSt29ftWjRQgcOHNAbb7xhvvRXVteuXdOoUaP073//O9/t2YNDbiEFAACKlieffFKVK1dWzZo15eHhoaNHj2rfvn2qWrWqli9fbnHx2JiYGDVt2lSNGjVSzZo15efnp2vXrmn37t26dOmSateurffeey/XfV24cEHh4eGaMmWKAgMDLda9/vrrmjp1qvr06aOAgACtXr1anTt3LtDlu1xdXbV69WoNGjRI69at09dff60OHTooODhYKSkpOnPmjPbt26fU1FTDnNkjqAEAgHw999xzioiI0I8//qjU1FQFBwfrr3/9q0aNGpVtnFnZsmU1dOhQHT16VDt27FBsbKxKly6tmjVr6rXXXtOrr76a4wVlTcaMGaPatWtnu3+oJL355puKiYnRmjVrtHfvXnXp0kVz584t8PMoW7asNm7cqG+//VYbN27UwYMH9a9//Uuurq6qWrWqBg0apFdeeaVAPXT24BQbG5vp6ErA/pKSkhQVFaWgoKAidT2ZooQ2tg8jtfPyM4lW3+bLtfK+/ZC9GKmdHeX69eu53o/aGu5nMgEKzx7tbM33Cu8EAAAAgyKoAQAAGBRBDQAAwKAIagAAAAZFUAMAADAoghoAAIBBEdQAAAAMiqAGAEABZWZy6VHkzdrvEYIaAAAF4OHhoaSkJEdXAwaXlJRk1YtCE9QAACgAT09PJSQk6M6dO/SsIZvMzEzduXNHCQkJ8vS03h1FuNcnAAAF4OzsrPLlyysxMVE3btyw+vYzMjLMvTHcQsp2bNnOHh4eKl++vFW3S1ADAKCAnJ2dVaZMGZUpU8bq205KSlJ8fLz8/PxK7P1U7aGotTORHQAAwKAIagAAAAZFUAMAADAoghoAAIBBEdQAAAAMiqAGAABgUAQ1AAAAgyKoAQAAGBRBDQAAwKAIagAAAAZFUAMAADAoghoAAIBBEdQAAAAMiqAGAABgUAQ1AAAAgyKoAQAAGBRBDQAAwKAIagAAAAZFUAMAADAoghoAAIBBEdQAAAAMiqAGAABgUAQ1AAAAgyKoAQAAGBRBDQAAwKAIagAAAAZFUAMAADAoghoAAIBBEdQAAAAMiqAGAABgUAQ1AAAAgyp0UFu/fr3CwsLUrl07VapUSb6+vlqzZk2u5ePj4zVx4kTVrVtXlSpVUr169TR58mQlJCTkWD4jI0NLly5Vy5Yt9fDDDyskJERDhgzR+fPnC1tVAACAIq3QQW3atGlavny5oqKi5Ofnl2fZxMREhYaGatGiRapZs6ZGjBihGjVqaP78+erevbuSkpKyPSYsLEwTJkxQZmamXnvtNXXs2FERERFq3769IiMjC1tdAACAIqvQQW3+/Pk6efKkIiMj9corr+RZdt68eTp16pTCwsK0adMmTZ06VZs2bVJYWJiOHTumRYsWWZTfs2ePVq5cqZYtW2r37t169913tWzZMq1Zs0Y3b97U+PHjC1tdAACAIqvQQa1du3aqUqVKvuUyMzO1atUqeXl5ZQtY48ePl5eXl1auXGmx3PT7pEmT5O7ubl7eqVMntW7dWrt27VJUVFRhqwwAAFAkudpqw5GRkbpy5Yo6duwoT09Pi3Wenp5q1qyZdu7cqYsXLyowMFCStG/fPnl6eqp58+bZttexY0ft27dP+/fvV9++ffPdf06nVfF/UlJSLH7C+mhj+zBSO6emplp9m0Y5lhmpnYsr2tg+jNDOHh4eBS5r06AmSdWrV89xffXq1bVz505FRkYqMDBQiYmJunr1qmrXri0XF5ccy2fdbn4uX76s9PT0+6x9yREdHe3oKhR7tLF93E87b7qa/VhjNPOOWHd7PR9+sOMi72fbo43tw1Ht7OLikms2yonNglp8fLwkycfHJ8f13t7eFuVMP03L8yufn4CAgIJXtgRKSUlRdHS0/Pz8LE4zw3poY/t4kHYul2yM3ip7Cgoq+F/yWfF+tj3a2D6KWjvbLKg5WmG6FUsyd3d32srGaGP7uJ92dnMreb3uD/pe5P1se7SxfRSVdrbZBW9NPWBxcXE5rr+3By2/HrP8etwAAACKG5sFtZCQEEnSuXPnclxvWm4q5+npqYcfflgXLlzIcWzZveUBAACKO5sGNX9/fx0+fFiJiYkW6xITE3X48GEFBwebZ3xKUqtWrZSYmKhDhw5l297OnTslSS1btrRVlQEAAAzFZkHNyclJAwYMUEJCgmbNmmWxbtasWUpISNCgQYMslpt+f//99y2mze7YsUP79u1Thw4dCnQNNwAAgOKg0JMJVq5cqYMHD0qSTp8+LUlatWqV9u3bJ0lq0aKFBg4cKEkaPXq0tm3bprlz5+rkyZNq0KCBTpw4oV27dqlRo0YaPny4xbbbtGmjgQMHauXKlWrbtq2eeuopXb16VZs3b1bZsmU1c+bMB3qyAAAARUmhg9rBgwe1bt06i2WHDh2yOF1pCmqenp7aunWrpk+froiICO3du1d+fn564403NGHCBJUuXTrb9ufOnavatWtrxYoVWrJkiTw9PdWtWzdNnjxZ1apVK2x1AQAAiiyn2NjYTEdXAvaXlJSkqKgoBQUFFYnpyUURbWwfD9LOy88k5l+omHm5lmf+hXLA+9n2aGP7KGrtbLMxagAAAHgwBDUAAACDIqgBAAAYFEENAADAoAhqAAAABkVQAwAAMCiCGgAAgEER1AAAAAyKoAYAAGBQBDUAAACDIqgBAAAYFEENAADAoAhqAAAABkVQAwAAMCiCGgAAgEER1AAAAAyKoAYAAGBQBDUAAACDIqgBAAAYFEENAADAoAhqAAAABkVQAwAAMCiCGgAAgEER1AAAAAyKoAYAAGBQBDUAAACDIqgBAAAYFEENAADAoAhqAAAABkVQAwAAMCiCGgAAgEER1AAAAAyKoAYAAGBQro6uAAAU1PIzidmWpaamKuami8olJ8nNLd0BtQIA26FHDQAAwKAIagAAAAZFUAMAADAoghoAAIBBEdQAAAAMilmfAFCC5DRztiBym137ci1Pa1UNQA7oUQMAADAoghoAAIBBEdQAAAAMiqAGAABgUAQ1AAAAgyKoAQAAGJRdglpmZqa++uordevWTbVq1ZK/v7+aNGmisLAwnT9/Plv5+Ph4TZw4UXXr1lWlSpVUr149TZ48WQkJCfaoLgAAgCHYJai98847GjhwoH777TeFhoZq2LBhCg4O1ooVK/TEE0/o9OnT5rKJiYkKDQ3VokWLVLNmTY0YMUI1atTQ/Pnz1b17dyUlJdmjygAAAA5n8wveRkdHa/HixQoKCtK+ffvk4+NjXrdw4UJNmjRJCxcu1MKFCyVJ8+bN06lTpxQWFqapU6eay06dOlVz587VokWLNHbsWFtXGwAAwOFs3qP2xx9/KCMjQ82bN7cIaZL09NNPS5Ju3Lgh6e4p0lWrVsnLy0vjx4+3KDt+/Hh5eXlp5cqVtq4yAACAIdi8Ry0kJETu7u46dOiQ4uPj5e3tbV73zTffSJLatm0rSYqMjNSVK1fUsWNHeXpa3pbE09NTzZo1086dO3Xx4kUFBgbmuV9OkeYtJSXF4iesjza2vtTU1GzL0tLSLH7CNnJrZ4611sMxwz6M0M4eHh4FLmvzoFauXDn9/e9/1zvvvKPHH39cXbt2VZkyZfTzzz9rz549Gjp0qIYNGybpblCTpOrVq+e4rerVq2vnzp2KjIzMN6hdvnxZ6enpeZbB3VPTsC3a2Hpibrrkui7+Vrwda1Jy3dvOUVEcZ62NY4Z9OKqdXVxccs05ObHLTdlHjhypgIAAjRo1Sp9++ql5eYsWLdS7d2+5ut6tRnz83QPAvadITUy9caZyeQkICHjQahdrKSkpio6Olp+fn9zd3R1dnWKJNra+csnZe2/S0tIUfyte3mW8zccSWF9u7RwUVPCeAeSNY4Z9FLV2tstRbcaMGZo9e7YmTpyoPn36yMfHR6dOndLEiRPVrVs3rVy5Ul27drXqPgvTrViSubu701Y2Rhtbj5tb7r03rq6ucnNzs2NtSqZ725n3tvVxzLCPotLONp9M8P333ys8PFyvvvqqxowZo8qVK8vLy0stWrTQZ599Jjc3N73zzjuS/q/HLC4uLsdtmXrSso5zAwAAKK5sHtR27NghSXriiSeyrfPz81ONGjV07tw5JSQkKCQkRJJ07ty5HLdlWm4qBwAAUJzZPKiZZlWYLsFxrz///FPOzs5yc3NTSEiI/P39dfjwYSUmJlqUS0xM1OHDhxUcHJzvRAIAAIDiwOZj1Jo3b66PP/5YixYtUvfu3S0mCnz66ae6dOmSmjdvrlKlSkmSBgwYoJkzZ2rWrFkWF7ydNWuWEhISuNgtUIQsP5OYfyEAQK5sHtR69OihTz75RAcOHFCTJk3UpUsX+fj46MSJE9qzZ49Kly6t999/31x+9OjR2rZtm+bOnauTJ0+qQYMGOnHihHbt2qVGjRpp+PDhtq4yAACAIdg8qLm4uGjz5s1atGiRNm/erM8//1wpKSmqVKmS+vTpo3HjxqlWrVrm8p6entq6daumT5+uiIgI7d27V35+fnrjjTc0YcIElS5d2tZVBgAAMAS7XJ6jVKlSGjNmjMaMGVOg8j4+PgoPD1d4eLiNawYAAGBcNp9MAAAAgPtDUAMAADAoghoAAIBBEdQAAAAMiqAGAABgUAQ1AAAAg7LL5TkAAMWTte8+8XItT6tuDyjq6FEDAAAwKIIaAACAQRHUAAAADIqgBgAAYFAENQAAAIMiqAEAABgUQQ0AAMCgCGoAAAAGRVADAAAwKIIaAACAQRHUAAAADIqgBgAAYFAENQAAAIMiqAEAABgUQQ0AAMCgCGoAAAAGRVADAAAwKIIaAACAQRHUAAAADIqgBgAAYFAENQAAAIMiqAEAABgUQQ0AAMCgCGoAAAAGRVADAAAwKIIaAACAQRHUAAAADIqgBgAAYFAENQAAAIMiqAEAABgUQQ0AAMCgCGoAAAAGRVADAAAwKIIaAACAQRHUAAAADIqgBgAAYFAENQAAAIMiqAEAABgUQQ0AAMCg7BrUIiIi1KNHD1WrVk1+fn6qX7++hgwZoosXL1qUi4+P18SJE1W3bl1VqlRJ9erV0+TJk5WQkGDP6gIAADiUqz12kpmZqTFjxmj58uWqVq2aevXqJS8vL125ckX79+9XVFSUAgMDJUmJiYkKDQ3VqVOn1KFDB/Xu3VsnT57U/PnztX//fm3btk0eHh72qDYAAIBD2SWoLVmyRMuXL9fQoUM1Y8YMubi4WKxPS0sz/3/evHk6deqUwsLCNHXqVPPyqVOnau7cuVq0aJHGjh1rj2oDAAA4lM1Pfd65c0czZsxQ1apVNX369GwhTZJcXe/mxczMTK1atUpeXl4aP368RZnx48fLy8tLK1eutHWVAQAADMHmPWq7du1SbGys+vfvr/T0dG3btk2RkZHy8fFRu3btVL16dXPZyMhIXblyRR07dpSnp6fFdjw9PdWsWTPt3LlTFy9eNJ8qBQAAKK5sHtSOHz8uSXJxcVGrVq3022+/mdc5OztrxIgRmjZtmqS7QU2SRXjLqnr16tq5c6ciIyPzDWpJSUlWqH3xlZKSYvET1kcbS6mpqTbfh2noRNYhFLA+e7VzST52c8ywDyO0c2HG2ts8qN24cUOStHDhQjVo0EC7du1SzZo1dfLkSYWFhWnBggWqVq2ahgwZovj4eEmSj49Pjtvy9vaWJHO5vFy+fFnp6elWehbFV3R0tKOrUOyV5DaOuZl9qIOtxN/K/7iAB2frdo6K4rhdko8Z9uSodnZxccm1QyonNg9qGRkZkiR3d3etWbNG/v7+kqSWLVtq+fLlat26tRYsWKAhQ4ZYdb8BAQFW3V5xk5KSoujoaPn5+cnd3d3R1SmWaGOpXLLte0fS0tIUfyte3mW8zeNdYX32auegoJI7q59jhn0UtXa2+VHN1Av22GOPmUOaSe3atVW1alWdO3dOsbGx5rJxcXE5bsvUk2Yqlxcu4VEw7u7utJWNleQ2dnOzX++Iq6ur3Nzc7La/ksrW7VxSPytZleRjhj0VlXa2eVCrUaOGpNxPZ5qWJyUlKSQkRJJ07ty5HMualpvKAbCe5WcSHV0FAMA9bB7UnnjiCUnS2bNns61LTU3VuXPn5OnpqQoVKsjPz0/+/v46fPiwEhMTLWZ+JiYm6vDhwwoODmbGJwAAKBFsfh21atWqqUOHDjp37ly2a6DNmTNHcXFxCg0Nlaurq5ycnDRgwAAlJCRo1qxZFmVnzZqlhIQEDRo0yNZVBgAAMAS7jLz94IMP9NRTT2nUqFHaunWratSooZMnT2rPnj0KCgrSe++9Zy47evRobdu2TXPnztXJkyfVoEEDnThxQrt27VKjRo00fPhwe1QZAADA4exyU/Zq1arpu+++U79+/XT8+HEtXbpU586d06uvvqpdu3bJz8/PXNbT01Nbt27V8OHDdfbsWS1YsEBnz57VG2+8oS1btqh06dL2qDIAAIDD2W0ue2BgoBYtWlSgsj4+PgoPD1d4eLiNawUAAGBcXHQIKKKYpQkAxZ9dTn0CAACg8AhqAAAABkVQAwAAMCiCGgAAgEER1AAAAAyKoAYAAGBQBDUAAACDIqgBAAAYFEENAADAoAhqAAAABkVQAwAAMCiCGgAAgEER1AAAAAyKoAYAAGBQBDUAAACDIqgBAAAYFEENAADAoAhqAAAABkVQAwAAMCiCGgAAgEER1AAAAAyKoAYAAGBQBDUAAACDIqgBAAAYFEENAADAoAhqAAAABkVQAwAAMCiCGgAAgEER1AAAAAyKoAYAAGBQBDUAAACDIqgBAAAYlKujKwAAgMnyM4lW3+bLtTytvk3AXuhRAwAAMCiCGgAAgEER1AAAAAyKoAYAAGBQBDUAAACDIqgBAAAYFEENAADAoAhqAAAABkVQAwAAMCiCGgAAgEER1AAAAAyKoAYAAGBQDglqc+fOla+vr3x9fXXkyJFs6+Pj4zVx4kTVrVtXlSpVUr169TR58mQlJCQ4oLYAAACOYfegdvr0aYWHh8vT0zPH9YmJiQoNDdWiRYtUs2ZNjRgxQjVq1ND8+fPVvXt3JSUl2bnGAAAAjmHXoJaamqrhw4erXr16Cg0NzbHMvHnzdOrUKYWFhWnTpk2aOnWqNm3apLCwMB07dkyLFi2yZ5UBAAAcxq5Bbfbs2fr111+1YMECubi4ZFufmZmpVatWycvLS+PHj7dYN378eHl5eWnlypX2qi4AAIBD2S2oHT9+XB988IEmTJigRx99NMcykZGRunLlipo1a5bt1Kinp6eaNWum8+fP6+LFi/aoMgAAgEO52mMnycnJ5lOeo0ePzrVcZGSkJKl69eo5rq9evbp27typyMhIBQYG5rlPxrLlLSUlxeInrM/WbZyammqT7RY1aWlpFj9hG0W5nYvK9wHHZfswQjt7eHgUuKxdgto//vEPRUZG6vvvv8/xlKdJfHy8JMnHxyfH9d7e3hbl8nL58mWlp6ffR21LlujoaEdXodizVRvH3Mz9s1QSxd/K/7iAB1cU2zkqqmh9F3Bctg9HtbOLi0uuHVI5sXlQ++GHHzR//ny99dZbql27tq13ZxYQEGC3fRVFKSkpio6Olp+fn9zd3R1dnWLJ1m1cLrlo9BLYWlpamuJvxcu7jLdcXe3yt2eJVJTbOSio4L0XjsRx2T6KWjvb9NOWlpam4cOHq06dOhozZky+5U09ZnFxcTmuN/WkmcrlpTDdiiWZu7s7bWVjtmpjN7ei1Utga66urnJzc3N0NYq9otjORe0Yx3HZPopKO9s0qCUkJJjHnVWsWDHHMp06dZIkrV692jzJ4Ny5czmWNS0PCQmxdlUBAAAMx6ZBrVSpUhowYECO6w4cOKDIyEh16dJFFSpUUJUqVRQSEiJ/f38dPnxYiYmJFjM/ExMTdfjwYQUHB+c7kQAAAKA4sGlQK126tObPn5/juuHDhysyMlJjx45V06ZNzcsHDBigmTNnatasWZo6dap5+axZs5SQkKCxY8fassoAAACGYbgRoaNHj9a2bds0d+5cnTx5Ug0aNNCJEye0a9cuNWrUSMOHD3d0FYH7svxMoqOrAAAoYhxyU/a8eHp6auvWrRo+fLjOnj2rBQsW6OzZs3rjjTe0ZcsWlS5d2tFVBAAAsAuH9agtXrxYixcvznGdj4+PwsPDFR4ebudaAQAAGIfhetQAAABwF0ENAADAoAhqAAAABmW4WZ8AAFiTtWdcv1zLM/9CgJXQowYAAGBQBDUAAACDIqgBAAAYFEENAADAoAhqAAAABkVQAwAAMCiCGgAAgEER1AAAAAyKoAYAAGBQBDUAAACDIqgBAAAYFEENAADAoAhqAAAABkVQAwAAMChXR1cAAICiZPmZRKtu7+VanlbdHooXetQAAAAMiqAGAABgUJz6RInT6V/XdOR6qsWyphXdtKNbJQfVCEBJZnlMekjSnxyTYEaPGgAAgEER1AAAAAyKU58ocdr4l1KAp4vFske8+SgAcAzTMSk9PUN3bt9W6YceUq2y7o6uFgyCbyeUOJMb+zi6CgBgZjomJSUlKSoqVkFBfvLw8HBwrWAUnPoEAAAwKHrUgFw86EUtU1NTFXPTReWSk+Tmlm6lWgEAShJ61AAAAAyKoAYAAGBQBDUAAACDIqgBAAAYFEENAADAoJj1iRLn/K003UnLtFhW2tVJVcvwcQBgf6ZjUnJKmq4mOikxLk2+qWkckyCJoIYS6NXdMdyUHYBhWB6TSks/xalpxdsckyCJU58AAACGRVADAAAwKIIaAACAQRHUAAAADIrJBChxxtQvoxtJGRbLKnjwNwsAxzAdk1JTUxUTE6Ny5crJv0wpR1cLBkFQQ4nTtUppR1cBAMxMx6SkpCRFuacrKMhDHh4eDq4VjIJuBAAAAIMiqAEAABgUQQ0AAMCgCGoAAAAGRVADAAAwKJsHtcuXL2vRokV67rnnVLduXVWsWFE1a9bUgAED9OOPP+b4mPj4eE2cOFF169ZVpUqVVK9ePU2ePFkJCQm2ri4AAIBh2PzyHMuWLdPcuXNVrVo1tW/fXhUqVFBkZKS2bt2qrVu36p///Kd69uxpLp+YmKjQ0FCdOnVKHTp0UO/evXXy5EnNnz9f+/fv17Zt25i2DAAASgSbB7VGjRrpX//6l1q3bm2x/MCBA3r22Wc1duxYhYaGqlSpuxf3mzdvnk6dOqWwsDBNnTrVXH7q1KmaO3euFi1apLFjx9q62ijGPj93W1dvp1sse/ghF/Wu/pCDagSgJDMdk9LS0hQb6yrfxDsK9M7gmARJklNsbGymo3bes2dP7dq1S999950aNmyozMxM1a5dW7du3dKZM2fk6elpLpuYmKhatWqpQoUKOn78uKOqXGwkJSUpKipKQUFBJa6HstO/runI9VSLZU0rumlHt0oWy5afSXyg/aSmpirmZozKlS0nNze3B9oWckc72wftbDtr/ptYoGMSrKOoff85dDKB6cPu4uIiSYqMjNSVK1fUrFkzi5AmSZ6enmrWrJnOnz+vixcv2r2uAAAA9uawW0hFRUXp+++/18MPP6w6depIuhvUJKl69eo5PqZ69erauXOnIiMjFRgYmOf2k5KSrFvhYiYlJcXiZ0mSkZG9EzkjIzPbeyY1NTVbucJIS0uz+AnboJ3tg3a2nYIek2AdRvj+K0xPnkOCWmpqql577TUlJydr6tSp5h61+Ph4SZKPj0+Oj/P29rYol5fLly8rPT0933IlXXR0tKOrYHcpKaUkudyzLFlRUVEWy2JuWpa5X/G38n+/4sHRzvZBO1tfSoqrCnJMgnU56vvPxcUl1w6pnNg9qGVkZGjEiBE6cOCABg0apL59+9pkPwEBATbZbnGRkpKi6Oho+fn5yd3d3dHVsSv3X+IkWfYKuLuXUlCQ5XiQcskP9tdsWlqa4m/Fy7uMt1xdHdZ5XezRzvZBO9uO+81kFeSYBOsoat9/dv20ZWRkaOTIkdq4caP69OmjOXPmWKw39ZjFxcXl+HhTT5qpXF6KwgBBI3B3dy9xbfVZJzelZFguc3eWPDws/6J1c7NOj6yrqyuDr+2AdrYP2tn6PutURikZUnJyki5fvqKAAH+VKe2R7ZgE6yoq3392C2qmnrTPPvtMvXv31uLFi+XsbDmXISQkRJJ07ty5HLdhWm4qB9yPiqU5+AEwDtMxKcnFRemlMhXwkAshDWZ2mfWZNaT17NlTS5cuNY9LyyokJET+/v46fPiwEhMtL42QmJiow4cPKzg4ON+JBAAAAMWBzYOa6XTnZ599ph49emjZsmU5hjRJcnJy0oABA5SQkKBZs2ZZrJs1a5YSEhI0aNAgW1cZAADAEGx+6nPGjBlat26dvLy89Mgjj2QLYJIUGhqq+vXrS5JGjx6tbdu2ae7cuTp58qQaNGigEydOaNeuXWrUqJGGDx9u6yoDAAAYgs2D2h9//CFJSkhI0OzZs3MsU6VKFXNQ8/T01NatWzV9+nRFRERo79698vPz0xtvvKEJEyaodOnStq4yAACAIdg8qC1evFiLFy8u1GN8fHwUHh6u8PBwG9UKAADA+Bx6CykAAADkjqAGAABgUFxeGiXOW4djdTbW8irgNX1dNb2Zr2MqBKBEMx2TMjIylJRUSh6/xevRckkckyCJoIZiYvmZxPwL/a+v/0jShQTLuw5ExqfpUd+CbwMArOXo9RQduZ76v7+5SEpVIreqxv/i1CcAAIBBEdQAAAAMiqAGAABgUIxRQ4lT3sNZyemZ2ZYBgCMEl3HVrdRMZWRkKjUtVW6ubgouw9cz7uKdgBJnYE1PR1cBAMz+2bacJCkpKUlRUVEKCqooDw8PB9cKRkFQAwDAgUyz1lNTUxVz00XlkpPk5nb/0z5frsUfo8UJ53sAAAAMiqAGAABgUAQ1AAAAgyKoAQAAGBRBDQAAwKAIagAAAAZFUAMAADAorqOGEmfOyVu6kGB5jaJgLxeNqV/GQTUCUJJZHpNKSUrkmAQzetQAAAAMiqAGAABgUAQ1AAAAgyKoAQAAGBSTCVDiNKrgrqplMiyWlSvF3ywAHMN0TMrISFdSUpI8PDxUobSbo6sFgyCoocRpG1DK0VUAADPTMSk1NVUxNxNVrmwpubkR1HAX3QgAAAAGRVADAAAwKIIaAACAQRHUAAAADIqgBgAAYFAENQAAAIMiqAEAABgU11FDiXP+VprupGVaLCvt6qSqZfg4ALA/0zEpPT1NtxKddN05TV6lOCbhLt4FKHE2/35HFxLSLZYFe7loTP0yDqoRgJLM8pjkLl1JVrBXGsckSOLUJwAAgGHRo4YCWX4m0dFVAAAUgC2O1y/X8rT6NlEw9KgBAAAYFEENAADAoDj1iRLnuWqlc5z1CQCOYDompaen6datWypTpoy8Srk5ulowCIIaShymvAMwEtMxKTVVisnIVDkfV7m5cZzCXZz6BAAAMCgiOwAAsCtrz0wtzrNS6VEDAAAwKIIaAACAQXHqEwAA5ImLnjsOPWoAAAAGRVADAAAwKE593oeiMFslvzqmpqYq5qaLyiUnyc0t3er7N7Ldl5MVk5xhsaxcKWe1DSjloBoBKMlMx6SMjHQlJbnI41ayKpTO4JgESQYOaseOHVN4eLgOHz6stLQ01a5dWyNHjtRzzz3n6KqhiDt2I0UXEizDabCXCwdFAA5heUxyleLSFOyVyTEJkgwa1Pbs2aNevXrJw8NDPXv2lJeXl7766isNHjxYFy9e1JtvvunoKgIAANic4YJaWlqaRo8eLWdnZ23dulX169eXJP3tb39Tx44d9d577+nZZ59VlSpVHFbHUi7W3d6636w/mya/OrpkOKm0m7M8XJzkauXnY3Rl3Z2UUMo52zJrv64luY3tiXa2D9rZdux1TCrOCvM9mpaapptxbiqblizXXIb+vPiIcS6g6xQbG5uZfzH72bVrl3r27Kn+/ftr4cKFFuvWrl2rESNG6O2339aECRMcVEMAAAD7MNysz3379kmSOnTokG1dx44dJUn79++3a50AAAAcwXBBLTIyUpIUEhKSbZ2fn5+8vLx07tw5e1cLAADA7gwX1OLj4yVJ3t7eOa4vU6aMuQwAAEBxZrigBgAAgLsMF9RMPWm59ZrdunUr1942AACA4sRwQc00Ns00Vi2r6OhoJSQkqHr16vauFgAAgN0ZLqi1atVK0t3LdNxr586dFmUAAACKM8NdRy0tLU1NmjTRlStXtGPHDvMFb+Pi4tSxY0f98ccfOnLkiIKDgx1cUwAAANsyXI+aq6urPvroI2VkZCg0NFSjR4/WpEmT1Lp1a/3222+aPHlyiQ5px44d0/PPP68qVaooICBATz75pDZv3lzgx+/YsUOvvPKKmjZtqipVqsjf319NmzbVG2+8od9++61A2xg7dqx8fX3l6+ur6Ojo+30qhuaods7IyNCqVav09NNPmx/XuHFjjRgxQrdu3bLGUzMUR7RzWlqaVq1apU6dOikkJESBgYFq1qyZpkyZUizfzw/axveKjY3VX/7yF/n6+qpXr165ltu5c6e6du2qwMBABQUFqVu3btq9e/d979fo7N3OkZGR+uCDD9SlSxc9+uijqlixourUqaPXXntNZ8+efZCnYliOei9n5YjvP8PdQkqS2rRpo2+++Ubh4eHavHmzUlNTVbt2bb377rvq2bOno6vnMNa4B+r27dt15MgRNWnSRE8++aTc3Nx05swZrVu3Ths3btSGDRvUtm3bXB//3Xff6dNPP5Wnp6cSE61/6ysjcFQ7Jycna+DAgfr2229Vp04d9evXT6VKldLFixe1Y8cOTZo0SWXKlLHV07Y7R7Xz4MGDFRERoerVq6tnz54qVaqUfvzxR3300UfasGGDdu/eLT8/P1s9bbuyxX2Tx48fn+8lktavX6/XXntNFSpU0IsvvihJ2rx5s3r06KHly5fr2Wefva/nY1SOaOf3339fmzZtUu3atdW1a1eVKVNGp0+f1vr16/XVV1/p888/L1bDhBz1Xs7KUd9/hjv1iZylpaWpadOmunz5cq6nhH/88cd874GalJQkDw+PbMt3796tZ599Vg0bNtR3332X42Pj4uLUsmVLNWnSRDdu3ND+/ft15syZYvOlJjm2nd9++20tXrxYU6dOVVhYmMW6jIwMSZKzs+E6we+Lo9r56NGj6tixoxo3bqxvvvlGbm5u5nUTJkzQ0qVLi80t6qzVxllt2bJFgwYN0qxZszR+/Hh17NhRX3zxhUWZ2NhYNWjQQK6urtqzZ48qV64sSbp06ZLatGkjSTp+/Hix+aPDUe28Zs0a1a1bVw0aNLBY/sUXX2jIkCF69NFHdejQoQd/ggbgqDbOypHff8XjqF8C7NmzR7///rt69+5tfpNKko+Pj8aOHauUlBStW7cu3+3k9KUmSW3btpWvr2+ed3146623dOfOHc2ePbvwT6CIcFQ7X758WR9//LFatGiRLaRJdwNacQlpkuPa+fz585Kkdu3aWYQ0SXr66aclSTdu3CjMUzEsa7WxyY0bNzRu3Di98MILeuqpp3It9+WXXyouLk7Dhg0zhzRJqly5sl599VX9+eef+te//nV/T8qAHNXO/fv3zxbSJKlXr1565JFH9Ouvv+rPP/8s3JMxKEe1cVaO/P4rPkf+Ys7W90D94YcfFBsbq9q1a+e4/uuvv9a6des0c+ZMVaxY8b73Y3SOauctW7YoLS1NPXr00K1bt7RhwwZ9+OGHWrVqlS5fvnzf+zMqR7Xzo48+Kkn6/vvvlZqaarHum2++kaQ8T/0XJdZu4zFjxsjFxUUzZsyw636NzlHtnBfTHyEuLi73vQ0jcXQbO/r7z5Bj1JCdte+BumvXLh0+fFgpKSmKjIzUt99+q/Lly+sf//hHtrIxMTEaPXq0QkND1bt37/t/EkWAo9r5+PHjku52rzdt2lRXr141r3N3d9ff//53jRw58j6ekTE5qp3r1Kmj119/XUuWLFGzZs305JNPqlSpUjpy5IiOHz+ut99+W926dXuwJ2cQ1mzj9evXKyIiQmvWrJGvr6/i4uLua795XSezqHJUO+fm6NGj+uWXX9SoUSP5+voW+vFG5Mg2NsL3H0GtiLD2PVB37dqlBQsWmH+vXr26Pv30Uz322GPZyo4bN04pKSn68MMPC1fpIshR7Ww63TZjxgy1b99eX375pSpXrqwDBw4oLCxMkyZNUs2aNdWpU6dCPiNjcuT7efr06QoODtaUKVO0bNky8/Knn35azzzzTIH3aXTWauMrV65owoQJ6t27t0JDQx9ov6ZxacXpfs2OauecxMXFafjw4XJ2dta77757X9swIke2sRG+/zj1WUJNmzZNsbGxunjxonbu3KkaNWqoc+fO2rhxo0W5TZs2afPmzZo+fXqxmjRgLwVtZ9NkgYoVK2rlypV69NFHVaZMGXXu3FkfffSRJFkEEVgqTDuPHj1a77//vmbOnKkzZ87ojz/+0MaNG3X27Fl16tRJx44dc9CzMKZRo0bJzc3tgU7FIX8P2s537tzRSy+9pLNnz2rSpEl64oknrFzDoq+wbWyU7z+CWhFhq3ugenl5qXHjxlqzZo1q1KihsLAwc+/OzZs39de//lWdO3dW375977/yRYgj2jnrftu2bauHHnrI4rEdO3ZUqVKl9NNPPxV6v0blqHZevXq1VqxYoXfeeUeDBw+Wn5+fvL291alTJ61YsUKJiYn6n//5n/t7UgZjjTZeu3atduzYodmzZ6t8+fIPvF/TtQCL0/2aHdXOWSUlJalfv37au3evxo4dq3HjxhV6G0bmiDY20vcfQa2IsPU9UF1dXfXEE08oMTHRHAiioqIUExOjb7/91nyBP9M/08DNWrVqydfXVydPnrzvfRuJI9pZkmrUqCHp7iymezk7O8vLy0tJSUn3vV+jcVQ779ixQ5Jy7G2oV68e7+V7mNpi0KBBFp9/02zDnTt3ytfXV61bty7QfvMaa1RUOaqdTe7cuaMXX3xR3333nUaPHq0pU6Y86FMyHEe0sZG+/xijVkS0atVKH374oXbt2pXtCsrWugeqaQC7acZQuXLlNGDAgBzLbt++XdHR0Xr++efl4eGhcuXKPdC+jcIR7SzdDQ6zZ8/WmTNnspW/ceOG/vzzTz3yyCMPtF8jcVQ7p6SkSMr5EhzJyclKSEgoNrOardHGjz/+eI4X9kxMTNSmTZtUuXJldejQQYGBgRb7/fzzz7Vr1y41bdr0vvZblDiqnaW7Ia1fv3767rvv9OabbxarcWlZOaKNjfT9xwVvi4jC3gP16tWrio+Pl5+fn0UvzU8//aSGDRtm2/7OnTvVt29fPfTQQzp9+rQ8PT3zrE9oaGixveCtI9o5PT1dLVu21JkzZ7R582a1b99ekpSZmanRo0dr5cqV+utf/6p33nnH1k1gF45q5zlz5ujdd99V27ZttWHDBpUqVcr8mHfffVdz5sxRnz59LCYZFFXWauOcXLhwQQ0aNMj1grf169eXm5tbibngrSPaOSkpydyTNnLkSL3//vu2eYIG4Kg2zo29v//oUSsiTPdA7dWrl0JDQy1uoREVFaX33nvP4h6o7777rtatW6eFCxeqf//+5uXt27dX7dq1VadOHQUEBOj27dv6+eefdfDgQbm5uWnBggX5hrTizFHt7OLiooULF6p79+56/vnn9cwzzyggIECHDh3S0aNH1aBBA40ZM8aubWFLjmrnIUOGaN26ddq9e7eaNm2qJ598Uh4eHjp8+LCOHj2qChUqaOLEiXZtC1uxVhsXlq+vr2bNmqXXXntNbdu21XPPPSfp7i2kYmJi9P/+3/8rNiFNclw7jxkzRt9995358hTh4eHZyvTr169Y3BvbUW1sFAS1IsQa90CdMmWK9u7dq/379+vGjRtydnZWYGCgXn75ZQ0fPly1atWy8bMwPke1c5MmTbRz506Fh4dr9+7dunXrlgIDAzV27FiNHTu22AVoR7Szt7e3duzYoXnz5mnbtm1au3at0tPTFRAQoFdeeUXjxo2zuJp+Ueeo+ya/8MILKl++vD744AOtXbtWTk5OatCggcaPH6927drZbL+O4oh2/uOPPyTdHaOV2yzG1q1bF4ugJpXse4Bz6hMAAMCgmPUJAABgUAQ1AAAAgyKoAQAAGBRBDQAAwKAIagAAAAZFUAMAADAoghoAAIBBEdQAAAAMiqAGAABgUAQ1AAAAgyKoAQAAGBRBDQAAwKD+P6Or6mt3WqewAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.distplot(ates, kde=False)\n", "plt.vlines(np.percentile(ates, 2.5), 0, 30, linestyles=\"dotted\")\n", "plt.vlines(np.percentile(ates, 97.5), 0, 30, linestyles=\"dotted\", label=\"95% CI\")\n", "plt.title(\"ATE Bootstrap Distribution\")\n", "plt.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Common Issues with Propensity Score\n", "\n", "As a data scientist, I know it can be tempting to use all the power of the machine learning toolkit to make propensity score estimation as precise as possible. You can quickly get taken away by the all AUC optimisation, cross validation and bayesian hyper-parameter tuning. Now, I'm not saying you shouldn't do that. In fact, all of the theory about propensity score and machine learning is very recent, so there are lots we don't know yet. But it pays to understand something first. \n", "\n", "The first thing is that the predictive quality of the propensity score does not translate into its balancing properties. Coming from the field of machine learning, one of the most challenging aspects of getting acquainted with causal inference is letting go of treating everything as a prediction problem. In fact, maximising the prediction power of the propensity score can even hurt the causal inference goal. **Propensity score doesn't need to predict the treatment very well. It just needs to include all the confounding variables**. If we include variables that are very good in predicting the treatment but have no bearing on the outcome this will actually increase the variance of the propensity score estimator. This is similar to the problem linear regression faces when we include variables correlated with the treatment but not with the outcome. \n", "\n", "![img](./data/img/ps/ml-trap.png)\n", "\n", "To see this, consider the following example (adapted from Hernán's Book). You have 2 schools, one of them apply the growth mindset seminar to 99% of its students and the other to 1%. Suppose that the schools have no impact on the treatment effect (except through the treatment), so it's not necessary to control for it. If you add the school variable to the propensity score model, it's going to have a very high predictive power. However, by chance, we could end up with a sample where everyone in school A got the treatment, leading to a propensity score of 1 for that school, which would lead to an infinite variance. This is an extreme example, but let's see how it would work with simulated data." ] }, { "cell_type": "code", "execution_count": 16, "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", "
Tschoolintercepty
01010.309526
11011.571468
21012.982024
31012.445420
41012.693187
\n", "
" ], "text/plain": [ " T school intercept y\n", "0 1 0 1 0.309526\n", "1 1 0 1 1.571468\n", "2 1 0 1 2.982024\n", "3 1 0 1 2.445420\n", "4 1 0 1 2.693187" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.random.seed(42)\n", "school_a = pd.DataFrame(dict(T=np.random.binomial(1, .99, 400), school=0, intercept=1))\n", "school_b = pd.DataFrame(dict(T=np.random.binomial(1, .01, 400), school=1, intercept=1))\n", "ex_data = pd.concat([school_a, school_b]).assign(y = lambda d: np.random.normal(1 + 0.1 * d[\"T\"]))\n", "ex_data.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Having simulated this data, we run bootstrap with the Propensity Score algorithm twice. The first including school as a feature to the propensity score model. The second time, we don't include school in the model." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "ate_w_f = np.array([run_ps(ex_data.sample(frac=1, replace=True), [\"school\"], \"T\", \"y\") for _ in range(500)])\n", "ate_wo_f = np.array([run_ps(ex_data.sample(frac=1, replace=True), [\"intercept\"], \"T\", \"y\") for _ in range(500)])" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl4AAAGwCAYAAAB4h2vpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABGEUlEQVR4nO3de1yUZeL//zfno6CYkuYJ2A6roqmZB7RMSjPNTralrWmnXU165PpYP3bQjcpHaNRXzMTadltX19StzTUDKwUrPEShJpitFljhITIRkFHkNL8//M3kxIAMDPcww+v5ePQg7/ua+77uubhn3lz3dV+3V0lJiVkAAABocd6urgAAAEBbQfACAAAwCMELAADAIAQvAAAAgxC8AAAADELwAgAAMAjBCwAAwCAELwAAAIMQvAAAAAxC8AIAADAIwctNVFRUqKCgQBUVFa6uChqJNnNPtJt7ot3cU1tsN4KXG6mpqXF1FeAg2sw90W7uiXZzT22t3QheAAAABiF4AQAAGITgBQAAYBCCFwAAgEEcDl5r1qxR+/btG/xv4sSJNq8pKyvTU089pb59+6pz586KjY3VggULVF5e7rQDAQAAaO18HX1BbGys5s2bZ3fde++9p6+//lrx8fHWZSaTSePHj1deXp5Gjx6tSZMmKTc3V8uWLdOOHTuUnp6uwMDAph8BAACAm3A4ePXr10/9+vWrs7yyslJvvPGGfH19NXnyZOvypUuXKi8vT7Nnz1ZiYqJ1eWJiolJSUpSamqo5c+Y0rfYXqK2tlclk8ti5QGpra+Xv76/S0lKdPn3a1dVBI7hjmwUGBiokJETe3oxCAICW4FVSUmJ2xoY2bNigBx54QOPHj9eaNWskSWazWb1799bp06d18OBBhYSEWMubTCZdeeWVuuSSS/Tll182a9+1tbU6efKkQkNDFRgYKC8vr2ZtrzWqra1VZWWl/P39+VJ0E+7WZmazWRUVFSovL1fHjh3dos4toaKiQoWFherevTu98W6EdnNPbbHdHO7xqs+qVaskSffff791WX5+vo4fP674+Hib0CVJISEhGjJkiDIyMnTkyBF169atwe031JNlMpkUHBysgIAAmc1mmc1OyZKtiuWYzGazamtrXVwbNIY7tllAQIBqa2t16tSpOudsW1FZWWnzE+6BdnNPntBujgZGpwSvH374QZ988okuu+wy3Xjjjdbl+fn5kqTo6Gi7r4uOjlZGRoby8/MvGryOHTtW7+y2fn5+Cg4OduuGa6yqqipXVwEOcrc28/b21unTp1VcXOzqqrhUUVGRq6uAJqDd3JO7tpuPj0+9Gac+Tglea9asUW1trSZPniwfHx/r8rKyMklSeHi43deFhYXZlGtI165d611XWlqqgIAAR6rsdsxms6qqquTn5+eRl1I9kTu3WVBQkC699FJXV8MlKisrVVRUpMjISPn7+7u6Omgk2s09tcV2a3bwqq2t1Zo1a+Tl5aXf//73zqiTXQ115Z0+fdrjx6NYLlV5eXl5/LF6CnduM29v7zYz3qI+/v7+bf49cEe0m3tqS+3W7G+Djz/+WEeOHNF1112nXr162ayz9GiVlpbafa2lp8tSDgAAwJM1O3jZG1RvERMTI0kqKCiw+1rLcks5AAAAT9as4FVcXKz09HR16NBBEyZMqLM+JiZGXbp0UXZ2tkwmk806k8mk7Oxs9ezZ86ID64GWYnkSg2UKlNagffv2Gj9+vKurAQBoAc0a47Vu3TpVVlbqgQcesDu43cvLS1OnTtWLL76o5ORkmwlUk5OTVV5e7pTJUy9m5UHTxQu5yPQrm3/L/vfff6/+/fvbLPPz81Pnzp01bNgwzZ49W3379rVZf+DAAb3yyivasWOHioqKFBgYqI4dO6pPnz6Ki4vTjBkzGhwQXl1dbb20/N1338nX1/ZX6f3337eO+Tt48KAiIyNt1ufm5uq6667TsGHDtHnz5oseY2FhoVJSUrRt2zYdPXpUvr6+6tixo6666ioNHz5cjzzySJud/sCZfq44f+fw8TM1Smtl540zzhUAcLVmBa9//etfkuxfZrR4/PHHlZ6erpSUFOXm5qp///7at2+fMjMzNXDgQM2cObM5VcAFoqKi9Lvf/U7S+R7FnJwcvfPOO9q0aZM2btyooUOHSpK2bdume+65R9XV1Ro1apQmTJigwMBAHT58WDt27ND777+vRx55pE6YupCvr6+GDh2qrVu3au/evRo8eLDN+qysLHl5eclsNmv79u2666676qyXpJEjR170uPLy8jRhwgSVlpZq6NChuvHGGxUaGqojR45o586d+uijjzRx4kSHb+kFAMBoTQ5eu3fv1oEDBzRo0CD16dOn3nIhISFKS0vTokWLtGnTJmVlZSkyMlIJCQmaN2+egoKCmloF/Ep0dLSefPJJm2ULFy7USy+9pOeff15paWmSpDlz5qimpkb//e9/dd1119mUN5vNyszMtJkWpD4jR47U1q1blZWVZTd4xcXF6auvvlJWVlad4LV9+3brNi7m6aefVmlpqV577TXde++9ddZ//vnnioiIuOh2AABwtSaP8Ro0aJBKSkqUkZFx0bLh4eFKSkrS/v37deLECe3fv18LFy5Uu3btmrp7NNIf/vAHSdLevXslSSdOnNDhw4f129/+tk7oks5fHo6Pj2/UvFOW0GQJURbFxcX6+uuvNXLkSA0fPtzau2VRW1urXbt2KTAwUNdee+1F9/PFF18oPDzcbuiSpGuvvVbt27evszwvL0+PPPKIevfurc6dO+vKK6/UXXfdVe+lzczMTI0ZM0ZdunRRVFSUZsyYUe8kops3b9aECRPUo0cPXXrppYqLi9Orr76q6upqp5QHAHgm95pcCE1mCVJhYWHy9fVVUVFRnRseHNW/f3+FhYUpOzvbZnb2rKwsmc1mjRgxQnFxccrPz9exY8es63Nzc1VSUqLBgwc3auLbiIgImUwmHT9+vNF127hxo+Lj4/Xf//5XgwYNUkJCgsaMGaPjx49r9erVdcpv3rxZ9957ry699FI99NBDioqK0rp16zRlypQ6ZV999VVNnjxZX331lSZNmqSHH35YFRUVmj9/vqZNm1bnkVXLly93qDwAwHM57VmNaJ3+9re/SZIGDhwo6fyz+MaNG6dNmzbppptu0rRp0zRkyBD17t3b4VmDfXx8NGzYMH344Yfas2ePhgwZIul8D1hQUJCuueYahYaGSjofxu655x7reqlxlxkl6fbbb9fy5ct1880368EHH9SwYcPUt29fBQcH2y3/008/6dFHH5Wfn5/S09Pr3Hhw9OjROq/54IMP9P7771vHwdXU1Oi2227T9u3b9cUXX1gvpR4+fFiJiYnq1KmTtm3bZr0jd8GCBbr99tuVlpam9evXW3vnvvvuOz377LONLg8A8Gz0eHmQgoICJSUlKSkpSQsWLNC4ceP04osvKjAwUAsWLLCWW7p0qW6++WYdOHBA8+bN06hRo9StWzeNHTtWr732ms6ePdvofVrC04WXE7dv365rrrlGAQEBio2NVVhYWJ31F772YhYsWKApU6aosLBQzzzzjMaMGaPu3bvr+uuvV3JyskpKSmzKr127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CF4AAAAGIXgBAAAYhOAFAABgEIIXAACAQQheAAAABiF4AQAAGITgBQAAYBCCFwAAgEEIXgAAAAYheAEAABiE4AUAAGAQghcAAIBBCF4AAAAGIXgBAAAYhOAFAABgEIeD17Fjx5Samqo77rhDffv2VadOnXTFFVdo6tSpysnJsfuasrIyPfXUU+rbt686d+6s2NhYLViwQOXl5c0+AAAAAHfh6+gL/vrXvyolJUVRUVG64YYbdMkllyg/P19paWlKS0vT3/72N915553W8iaTSePHj1deXp5Gjx6tSZMmKTc3V8uWLdOOHTuUnp6uwMBApx4UAABAa+Rw8Bo4cKDef/99jRgxwmb5zp07ddttt2nOnDkaP368AgICJElLly5VXl6eZs+ercTERGv5xMREpaSkKDU1VXPmzGneUQAAALgBhy81Tpw4sU7okqThw4dr5MiRKikp0YEDByRJZrNZq1evVmhoqObOnWtTfu7cuQoNDdWqVauaWHUAAAD34tTB9X5+fpIkHx8fSVJ+fr6OHz+uIUOGKCQkxKZsSEiIhgwZou+++05HjhxxZjUAAABaJYcvNdansLBQH3/8sS699FL16dNH0vngJUnR0dF2XxMdHa2MjAzl5+erW7duDW6/oqLCWVV1S5WVlTY/0bCqqipXV0HV1dU2P+EeaLfWraampp7ltTY/W7PW8PnUEpryPe0J322OjlN3SvCqqqrSH//4R507d06JiYnWHq+ysjJJUnh4uN3XhYWF2ZRryLFjx+o94dqSoqIiV1fBLRSf8nF1FazKTl/89xutD+3WOpnOmBpcX3HurEE1abriU8WurkKLKCxs+ne0u363+fj41Nu5VJ9mB6/a2lo9+uij2rlzp6ZNm6Z77723uZu0q2vXri2yXXdRWVmpoqIiRUZGyt/f39XVafUizrm+h7S6ulplp8sU1i5Mvr5O61xGC6PdWreQ4BC7y2tqalVx7qwCA4Lk49O6p6iM6BDh6iq0iO7dHZ+hoC1+tzXrU6W2tlazZs3S22+/rd/97ndasmSJzXpLj1Zpaand11t6uizlGsKUE+f5+/vzXjSCn1/r6R319fW1jn+E+6DdWifLFZX613tftIyreervVXO+m9rSd1uTg5elp2vdunWaNGmSVqxYIW9v278yYmJiJEkFBQV2t2FZbikHAADgyZrUH3th6Lrzzjv1+uuv2/0LIyYmRl26dFF2drZMJtvr8iaTSdnZ2erZs+dFB9YDAAB4AoeDl+Xy4rp163T77bfrr3/9a73dul5eXpo6darKy8uVnJxssy45OVnl5eWaNm1a02oOAIAb6rN3c53/0HY4fKlx8eLFWrt2rUJDQ/Wb3/ymTqCSpPHjx6tfv36SpMcff1zp6elKSUlRbm6u+vfvr3379ikzM1MDBw7UzJkzm38UAAAAbsDh4PXDDz9IksrLy/XSSy/ZLdOjRw9r8AoJCVFaWpoWLVqkTZs2KSsrS5GRkUpISNC8efMUFBTUjOoDAAC4D4eD14oVK7RixQqHXhMeHq6kpCQlJSU5ujsAAACP0bonOwEAAPAgBC8AAACDMC0zmmzlwYYf3QEAAGzR4wUAAGAQghcAAIBBCF4AAAAGIXgBAAAYhOAFAABgEIIXAACAQQheAAAABiF4AQAAGITgBQAAYBCCFwAAgEEIXgAAAAYheAEAABiE4AUAAGAQghcAAIBBCF4AAAAGIXgBAAAYhOAFAABgEIIXAACAQQheAAAABiF4AQAAGITgBQAAYBCCFwAAgEEIXgAAAAYheAEAABiE4AUAAGAQX1dXAAAAe/rs3ezqKgBOR48XAACAQQheAAAABiF4AQAAGITgBQAAYBCCFwAAgEG4qxEAABer7w7OrwaMM7gmTbfyoMnh11RVVan4lI8izlXIz6+mBWp13vQrQ1ps246ixwsAAMAgBC8AAACDELwAAAAMQvACAAAwiMPBa/369Zo9e7ZGjRqlzp07q3379lqzZk295cvKyvTUU0+pb9++6ty5s2JjY7VgwQKVl5c3q+IAAADuxuG7GhcuXKjCwkJ17NhRkZGRKiwsrLesyWTS+PHjlZeXp9GjR2vSpEnKzc3VsmXLtGPHDqWnpyswMLBZBwAAAOAuHO7xWrZsmXJzc5Wfn68HH3ywwbJLly5VXl6eZs+erXfffVeJiYl69913NXv2bO3Zs0epqalNrjgAAIC7cTh4jRo1Sj169LhoObPZrNWrVys0NFRz5861WTd37lyFhoZq1apVju4eAADAbbXYBKr5+fk6fvy44uPjFRJiO3FZSEiIhgwZooyMDB05ckTdunW76PYqKipaqqpuobKy0uZna1BVVeXqKrRq1dXVNj/hHmi31qOmpvETatbU1Nr89BSe/jlr1PnWkhnC0SFTLRq8JCk6Otru+ujoaGVkZCg/P79RwevYsWMOnYSeqqioyNVVsCo+5ePqKriFstNlrq4CmoB2cz3TGcdnQq84d7YFauI6xaeKXV0FQ7T0+VZY2DL5wcfHp96cU58WC15lZeffxPDwcLvrw8LCbMpdTNeuXZ1TMTdVWVmpoqIiRUZGyt/f39XVkSRFnGvbvZAXU11drbLTZQprFyZfX57O5S5ot9YjJLjxj3mpqalVxbmzCgwIko+P58yUFNEhwtVVaFFGnW/du7eeG/nc5lOFux/P8/f3bzXvRUs+V8uT+Pr6ys/Pz9XVgINoN9fz8XG8V93Hx7tJr2ut2srvYEufb63le1NqwQlULT1apaWldtdberos5QAAADxdiwWvmJgYSVJBQYHd9ZbllnIAAACerkWDV5cuXZSdnS2TyXaApMlkUnZ2tnr27NmogfUAAACeoMXGeHl5eWnq1Kl68cUXlZycrMTEROu65ORklZeXa86cOS21e4+x8uD50FpVVaXiUz6KOFfB2CoAANyUw8Fr1apV2rVrlyTpwIEDkqTVq1dr+/btkqRhw4bp/vvvlyQ9/vjjSk9PV0pKinJzc9W/f3/t27dPmZmZGjhwoGbOnOms4wAAAGj1HA5eu3bt0tq1a22WffbZZ/rss8+s/7YEr5CQEKWlpWnRokXatGmTsrKyFBkZqYSEBM2bN09BQUHNrD4AAID78CopKTG7uhKon+2lxmJFdIhoM7cXuzvazD3Rbq1Hn72bG122pqZGpjMmhQSHeNR0El8NGOfqKrQoo8636Vc2fk64luY5s8wBAAC0cgQvAAAAgxC8AAAADELwAgAAMAjBCwAAwCAELwAAAIMQvAAAAAzSYo8McieWubIAAGhN7M1l5ulze3k6erwAAAAMQvACAAAwCMELAADAIAQvAAAAgxC8AAAADELwAgAAMAjBCwAAwCAELwAAAIMQvAAAAAzCzPUAAMPYm4kdaEvo8QIAADAIwQsAAMAgBC8AAACDELwAAAAMQvACAAAwCMELAADAIAQvAAAAgxC8AAAADELwAgAAMAjBCwAAwCA8MggAADdi77FLXw0Y54KaoCno8QIAADAIwQsAAMAgBC8AAACDELwAAAAMQvACAAAwCMELAADAIAQvAAAAgxC8AAAADELwAgAAMIhhwWvPnj26++671aNHD3Xt2lU33nijNmzYYNTuAQAAXM6QRwZ9+umnuuuuuxQYGKg777xToaGheu+99/TAAw/oyJEjeuyxx4yoBgAAgEu1ePCqrq7W448/Lm9vb6Wlpalfv36SpP/7v/9TfHy8nn/+ed12223q0aNHS1cFAADApVo8eH366ac6fPiw7rvvPmvokqTw8HDNmTNHjz76qNauXat58+a1dFXqFeDjsl03mk+tl4L8vBXo4yVfN6gvaDN3Rbu1LN8A/xbZrldNrfxqa+QbECAfn7Y3fNkdvsfsaYvnW4sHr+3bt0uSRo8eXWddfHy8JGnHjh0tXY0GTf5NiEv333jhrq4AHEabuSfarcX8ZqKra+CRBri6As3Sts63Fv+zID8/X5IUExNTZ11kZKRCQ0NVUFDQ0tUAAABwuRYPXmVlZZKksLAwu+vbtWtnLQMAAODJ2t6FcAAAABdp8eBl6emqr1fr9OnT9faGAQAAeJIWD16WsV2WsV4XKioqUnl5uaKjo1u6GgAAAC7X4sErLi5OkpSZmVlnXUZGhk0ZAAAAT+ZVUlJibskdVFdX65prrtHx48e1ZcsW61xepaWlio+P1w8//KAvvvhCPXv2bMlqAAAAuFyLBy+p/kcGFRYW6vnnn+eRQQAAoE0w5K7G6667Th988IGGDBmiDRs26M0331Tnzp315ptvErp+JTc3V88995zuvPNOxcTEqH379ho/fnyTthUbG6v27dvb/a+p24R9zmw3iYfKG6msrExPPfWU+vbtq86dOys2NlYLFixQeXm5Q9up71xr3769Zs6c2UK192zOOA/OnTunxYsXa+DAgYqMjNRVV12lxx9/XCdOnGihWqO57bZmzZoGz6esrKwWrH3LM+Qh2ZI0aNAgvfPOO0btzm2lpaXp//2//yd/f3/95je/0cmTJ5u1vbCwMLsf+jwb07mc2W48VN44JpNJ48ePV15enkaPHq1JkyYpNzdXy5Yt044dO5Senq7AwMBGb6979+6aMmVKneWxsbHOrHab4IzzoLa2VlOmTFFGRoYGDx6siRMnKj8/X6tWrdInn3yirVu36pJLLjHgaNoOZ35+3XLLLXbPHXf//jLkUiMa7+uvv9a5c+fUp08fFRcX68orr1RcXJzS0tIc3pblFzYvL8/Z1cSvOKvdqqurNXjwYB07dqzeMZE5OTlu/8HTWrzwwgt68cUXNXv2bCUmJlqXJyYmKiUlRX/5y180Z86cRm2rffv2TT5XYctZ58G//vUvJSQkaNKkSXrjjTfk5eUlSXrzzTc1Z84cTZ8+XSkpKS19OG2Gs9ptzZo1mjVrlpYvX6777rvPiKobiglUW5nf/va3uvrqq+Xn5+fqqsABzmo3y0PlJ02aZPeh8pWVlVq7dm1zqwtJZrNZq1evVmhoqObOnWuzbu7cuQoNDdWqVatcVLu2zVnngaX9/vKXv1hDlyQ98MAD6tWrl95++22dPXvW+QfQRvH51TiGXWqEa1RWVmrNmjX68ccf1a5dOw0cOFDXXHONq6uFerjDQ+U9RX5+vo4fP674+HiFhITYrAsJCdGQIUOUkZGhI0eOqFu3bo3aZmlpqVauXKmTJ0+qQ4cOGjJkiPr06dMS1fdozjgPKioqlJOTo8svv7xOD4uXl5duuOEG/eMf/9DevXs1fPhwJ9W8bXP251dubq6Ki4tVU1OjHj16aNSoUYqIiHBOZV2I4OXhioqKNGvWLJtlAwcO1N///ndFRUW5qFaoDw+VN47lva5vAufo6GhlZGQoPz+/0cFr//79mj17ts2yG2+8UStWrFCnTp2aVd+2xBnnweHDh1VbW9tg+1r2RfByDmd/fr3++us2/w4KCtK8efPqnGPuhkuNHuy+++7Txo0b9c033+jYsWP69NNPdc8992jPnj2aOHGiTp8+7eoq4ld4qLxxLO9jeHi43fUXe9zZryUkJOijjz5SQUGBCgsL9dFHH+mmm27S1q1bdc8996impsY5FW8DnHEeOLt9cXHO+vzq2bOnXnzxRe3evVvHjx/XgQMH9Nprr6lDhw5KTEysE8jcDT1eLeDpp59WZWVlo8vPmDHD7l8IzfXEE0/Y/Ltfv37WX9j169frn//8pxISEpy+X3fVWtoNjmkt7bZw4UKbf1977bVav369br31Vu3YsUNpaWmaOHGi0/cLeJoRI0ZoxIgR1n8HBQXp3nvvVf/+/XXDDTdo0aJFeuihh+Tr654Rxj1r3cqtXLlSJpOp0eUnTpxo6Bf4Aw88oPXr1ys7O5vgdYHW0G6Neah8+/btnbpPd9fUdrO816WlpXbLXeyv98bw9vbWtGnTtGPHDmVnZxO8GskZ54ER7QtbLf359dvf/lZDhw7Vxx9/rIMHD7rt+EmCVws4evSoq6vQoI4dO0qSzpw54+KatC6tod0ufKj81VdfbbPO8lD5gQMHuqBmrVdT283yXtc35sSyvLnhmvPNcc44D3r16iVvb+8Wb1/8wojPL084nxjj1Qbl5ORIcv9J6DwRD5U3TkxMjLp06aLs7Ow6PWYmk0nZ2dnq2bNnowfW14fzzXHOOA+CgoI0aNAgffPNN/rhhx9s1pnNZm3btk0hISEaMGCAk2qNlv78qqmp0d69eyWdn6zYXRG83FxVVZUOHTqkw4cP2yw/dOiQ3b8IDh06ZJ0octKkSUZUEXbU127XX3+9evXqpXfeeUe5ubnW5aWlpdaZ8e+9916jq+uRvLy8NHXqVJWXlys5OdlmXXJyssrLyzVt2jSb5WfOnNGhQ4dUWFhos/yrr75SVVVVnX1kZ2dr6dKl8vPz0+233+70Y/BUjp4HP/74ow4dOlTnsqKl/Z577jmZzb/MFf6Pf/xD3333ne6++24FBQW18NG0Hc5qty+//LLOtmtqapSYmKiCggKNHDlSl156aYsdR0tj5vpW5tChQ1qyZImk8/PQbNiwQZ07d7bOgSJJK1assP7/999/r/79+6t79+42M9QnJSUpNTVVw4cPV/fu3RUcHKxvv/1WW7ZsUVVVlebMmaO//OUvxh2Yh3NWu0k8VN5IJpNJY8eO1f79+zV69Gj1799f+/btU2ZmpgYOHKi0tDSbL+asrCzdeuutdWaonzlzpj766CMNHTpUl112mfz8/PS///1PmZmZ8vLy0ksvvaQHH3zQFYfothw5D2bOnKm1a9fWmem8trZWd999t/WRQXFxcSooKNCmTZvUo0cPZWRk8MggJ3NGu7Vv3159+vRRnz591LVrV506dUo7duzQt99+q8suu0xpaWnq1auXC47OORjj1coUFRXVmdn3p59+sll24Rd4fUaOHKlDhw4pNzdXu3bt0pkzZ9SxY0fddNNNevjhh+1OcIemc1a7Sb88VD4pKUkbNmxQVVWVevfurWeffVZ33nmnU+vd1oWEhCgtLU2LFi3Spk2blJWVpcjISCUkJGjevHmN7g255ZZbVFpaqv379+vjjz9WZWWlIiMjddddd2nmzJkaNGhQCx+J53HGeeDt7a233npLS5Ys0fr165WamqoOHTpo6tSpmj9/PqGrBTij3RISEpSTk6OPP/5Yp06dkr+/v6KiovTnP/9ZCQkJbn+DET1eAAAABmGMFwAAgEEIXgAAAAYheAEAABiE4AUAAGAQghcAAIBBCF4AAAAGIXgBAAAYhOAFAABgEIIXAACAQQheAAAABiF4AQAAGITgBQAAYJD/D1clXix7DLz9AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.distplot(ate_w_f, kde=False, label=\"PS W School\")\n", "sns.distplot(ate_wo_f, kde=False, label=\"PS W/O School\")\n", "plt.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can see, the propensity score estimator that adds the feature school has a humongous variance, while the one without it is much more well behaved. Also, since school is not a confounder, the model without it is also not biased. As I've said, simply predicting the treatment is not what this is about. We actually need to construct the prediction in a way that controls for confounding, not in a way to predict the treatment. \n", "\n", "This leads to another problem often encountered in propensity score methods. In our mindset case, the data turned out to be very balanced. But this is not always the case. In some situations, the treated have a much higher probability of treatment than the untreated and the propensity score distribution doesn't overlap much." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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LU2PP/645Wf1+eef14wZMwr67QEMi6AGGNiNh8E6depkeTxjxgxLSJs9e7aeeuopy7p77rlHAwYM0JgxY7RhwwZ9/fXXev/9963abN++XSkpKZKuj6zdfffdVvtt3bq1hgwZotmzZys1NTXf9QYGBspkMln+X7Vq1VwXSuTXgAEDNG3aNKWlpem///1vnkFt586dunTpkiRpyJAhDqnVz89PAwYM0OrVq/Xpp59qzpw5Vs81i4+P11dffSVJGjZsmNzdC/YRe+MVqvfcc0+Bnnsrhw4d0rRp0zR9+nSr5ffff788PT21atUqRUZG6ujRo2ratKlVm7CwMEvYX758ufr27Wu1vmXLlho2bJgGDRqk/fv36/nnn1ePHj2sXv8XX3xhCWktWrTQ+vXrVaFCBavtdOnSRc8880yuUeK8JCUlafjw4dq3b59cXFw0e/ZsPfnkk/n+ngDFAePCgMH88ccf+vrrrzVs2DDLKIGvr68ee+wxSdL58+e1efNmSVL79u2tApiZq6ur5s2bp/Lly0uSli5darX+t99+k3T9PK2/h7QbeXh4qFy5crf/ogrB399fDzzwgCRp8+bNeQbG//73v5Ikk8mUa0TMnh555BFJUnJysmUE7+9Wr16t7OxsSdL/+3//r8D7MIdvKf8jj/nVrFmzPK8MnTRpkuXxjaN60l/zuUnSY489liukmXl7e1v+sDhz5kyuOyG88847kqQyZcpo+fLluULajapXr37zFyPpwoUL6tevn/bt2ycPDw8tXbqUkIYSiaAGONmcOXOsTmCvWrWqevbsqW3btkm6HtLCwsJUqVIlSddPwM/MzJT0V3iwxc/PTw899JCk6xcNnD592rLOfBg1MTGxwIc3i5J5hCwpKcny/bjRtWvXLIfjgoKCbI5y2Uvbtm3VsGFDSX8d3rxRTk6OZQ6ztm3bqkGDBgXeR3JysuWxvV/L4MGD8zyk2KBBA8tFC38/kf/nn39WbGysJOnBBx+86T4aNWpkCWA3Tr575coVHTp0SJLUr18/1axZs1CvwezMmTPq3bu3jhw5orJly2r16tUaPHjwbW0TMCqCGmBQ1atX19ixY7V//3517drVsvx///uf5fGtrkK88arRY8eOWR736dPHcoHB//t//099+/bVwoUL9d1331lCoBH06tVLfn5+kv4aObvR5s2b9ccff0i6fk6b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7NqmTRudOHFC165ds9+LkRQQEKDnnnsu1/KlS5dKkkJDQy0hTbp+L8xXXnlFLi4uWr9+vWW5n59frpAmSZ07d1ajRo20Z8+efNd05MgRHTp0SA8//LBVSJOku+66S4888oiOHTtmOQQaGRmpU6dOqVevXpaQZq515syZcnMzzpQHQHHBiBqAYsnf31/PPvusZs2apQULFuR5gv7Ro0clSR06dMh14YGrq6vat2+v6OhoHT16VNWrV7daf8899+Ta3p133inp+rlg5cqVs8Mrua5JkyaWQ503Onz4sEwmk1auXGnzed7e3jpx4oTVsr1792rJkiX69ttvdenSJWVmZlrW2dpHXg4fPizp+jlqISEhudab93vixAkFBgbqxx9/lCS1b98+V9uaNWvqzjvv1JkzZ/K9fwAENQDF2JNPPqn3339fixYt0pgxY2y2MY98Va5c2eb6gIAAq3Y3unE0zcw8KvT3k/hvV171XblyRZmZmZaT/m1JSflrQtBPP/1Ujz32mHx8fNStWzfVrFlT3t7ecnFx0erVq21ePJGXK1euSJK2b9+u7du333L/SUlJkqRKlSrZbFelShWCGlBABDUAxZa3t7deeOEFPfPMM5ozZ46GDh2aq4151OvChQs2t/Hbb79ZtXOWvKYZKVeunFxcXBQbG5uv7cyePVteXl766quvLBcNmG3YsKFANZm/J2+++eYtzwOU/gq2Fy9etLne/L0GkH+cowagWBs+fLgaN26s5cuX2wwz5qkmDhw4oJycHKt1OTk5lhPh/z4lhVG0atVKly9fVkxMTL7anzx5Ug0aNMgV0s6fP69Tp07lam8eIczOzra5b+n6HR/yo0mTJpJk+Z7e6MyZM/r111/ztR0AfyGoASjW3NzcNHPmTGVkZGj27Nm51teoUUOdOnXS//73P61YscJq3bJly3T8+HF17tw51/lpRvHkk09KkiZMmKDLly/nWp+QkKDjx49b/l+jRg2dPHnSavQqNTVVU6ZMUUZGRq7nmy88sHUxxb333qtWrVpp3bp1NkfjsrOztW/fPsv/27Vrp1q1amn79u2KjIy0LM/JydFrr71m98PFQGnAoU8AxV6fPn3Url07q3Bwo3feeUe9e/fWpEmTtG3bNjVq1Ej/+9//9Pnnn6tSpUp65513irji/OvRo4eCg4M1d+5ctWjRQj169FCNGjV0+fJlxcbGKjIyUi+99JIaNmwoSRo7dqyef/55de7cWf3791dWVpZ27dqlnJwcNWnSxHLCv1mnTp3k4uKi1157TT///LN8fX3l5+dnOdT5wQcfqF+/fnr88ce1ZMkSNW/eXF5eXoqPj9c333yjixcvKiEhQdL1izPmz5+vwYMHa8CAAZZ51Pbs2aOEhATdfffd+umnn4r2GwgUcwQ1oAR5tKHp1o2KQHZ2ttLT0+Xp6SlX16IZuJ81a5Z69eplc139+vW1a9cuzZkzRzt37tQXX3yhSpUqacSIEZo2bZplolejevHFF9WhQwe9++672r17t65evaoKFSqoVq1aeuGFFzR48GBL2yeeeEIeHh5aunSpwsLC5Ofnp549e+qVV16xOfdbo0aNtGjRIi1cuFBLly5VWlqaZZ46Sapdu7b27t2rhQsXKjw8XKtWrZKbm5sCAgLUvn179e/f32p7Xbt21aZNm/T6669r06ZN8vLyUpcuXbRs2TI99dRTjv1GASWQS2JiYs6tm0G6fvggLi5ONWrUkJeXl7PLwZ9KU79cuHAhz6sDjcQZQQ23Vtz6pbj8vN+O0vT5VVjLjqfcupGdDavlZph+Mf47FQAAoJQiqAEAABgUQQ0AAMCgCGoAAAAGRVADAAAwKIIaAACAQRHUAAAADIqgBgAAYFAENQAAAIMiqAEAABgUQQ0AAMCgCGoAAAAGRVADAAAwKHdnFwDAftx3bXZ2CZKknJwcuWRmyt3dXS4uLpKkzPv7ObmqkiUoKEj79+9XYmKis0sB4ECMqAEwPH9//wL9c5aQkBD5+/tr7969TqsBQMnCiBoAw5s2bVquZUuWLFFSUpLNdQBQUhDUABje9OnTcy1bvXq1kpKSbK4DgJKCQ58ASozTp0/L399f48aN0/HjxzVixAjVqVNH/v7+On36tKXd1q1b1b9/f9WqVUsBAQFq166dFixYoKysLKvtXb16VaGhoerTp48aNWqkypUrq1GjRnryySd18uRJq7ZBQUGaM2eOJKlfv36Ww7BNmza1anfhwgVNnz5dLVq0UJUqVVS3bl2NHDlSx44ds/maIiMj1adPH1WrVk116tTRY489pvj4eHt8uwAUAwUeUfvkk08UGRmpH374QceOHVN6eroWLVqkESNG2GyflJSk2bNn67PPPtNvv/2mgIAADRgwQNOmTZOPj0+u9tnZ2Xr//fe1fPlyxcbGymQyqWvXrpo5c6Zq165d4BcIoPQ5efKkHnjgAQUGBmr48OG6fPmyPD09JUmvvvqq5s2bp2rVqqlfv37y9fVVZGSkZs6cqcOHD2v58uWW7URHR+uNN95Qp06d1LdvX5UtW1bR0dFat26dvvjiC+3evVs1a9aUJA0fPlyStH//fj388MOW5X5+flZ19e3bV7/++qu6deumoKAgXbhwQZs3b1ZERIQ2bdqkVq1aWdrv3r1bgwYNkqurqx566CFVrVpVu3fvVu/eva22C6DkKnBQe/311xUXF6eKFSsqICBAcXFxebZNSUlRUFCQjh49qm7dumnQoEGKiorSggULtH//foWHh8vLy8vqOZMnT1ZYWJgaN26sJ598UufOndOnn36qiIgIffnll6pXr17BXyWAUuXgwYN6/vnnNWPGDKvlu3bt0rx589S9e3eFhYXJZDJJun6V6tSpU/XRRx9p06ZNevDBByVJDRo00PHjx1W+fHmr7ezZs0cDBgzQW2+9pX//+9+SpBEjRujMmTPav3+/hg8frk6dOuWq66mnntL58+e1fv16de/e3bI8ODhY999/vyZOnKgDBw5Iuv5H66RJk5SZmanw8HC1a9fOUuvYsWO1du1aO323ABhZgQ99LliwQFFRUYqJidHjjz9+07bz58/X0aNHNXnyZG3YsEGzZs3Shg0bNHnyZH333XdavHixVfs9e/YoLCxM7du31+7du/Xqq69q6dKlWrVqla5cuaLg4OCClgugFAoICNBzzz2Xa/nSpUslSaGhoZaQJkkuLi565ZVX5OLiovXr11uW+/n55QppktS5c2c1atRIX331Vb5rOnLkiA4dOqSHH37YKqRJ0l133aVHHnlEx44dsxwCjYyM1KlTp9SrVy9LSDPXOnPmTLm5ueV73wCKrwKPqHXt2jVf7XJycrRixQr5+PjkCljBwcH64IMPFBYWpilTpliWh4WFSZJefPFFy2EKSXrggQfUsWNHRUREKC4uTjVq1Cho2QBKkSZNmlh9hpgdPnxYJpNJK1eutPk8b29vnThxwmrZ3r17tWTJEn377be6dOmSMjMzLets7SMvhw8flnT9HLWQkJBc6837PXHihAIDA/Xjjz9Kktq3b5+rbc2aNXXnnXfqzJkz+d4/gOLJYVd9xsTE6Ny5c+revbvVX66SZDKZ1KZN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Ro20YMECTZs2reheWDFnr/fK448/LkkKDQ1VYmKiZXlCQoLeffddubq6qn///o59MSWEPfqkQoUKql+/vuLj4y3zdpklJiZq4cKFkv4K2LC/S5cuKTo6OldYNv++/9e//mU1dc2OHTu0b98+devWzSF/1JTaOxNIBbvVx7hx4/Txxx/nmsnY1i2kYmNjtXnzZtWsWVM7d+7kFlIFdLv9cuXKFbVo0UKJiYnq0aOH7r333lz78PPz0/jx44vsNRV39niv2HL69Gk1b96cOxMUkr365cUXX9SiRYtUvXp19e7dWxkZGQoPD9eFCxf08ssvWyaKxq3Zo0927Nihhx9+WJmZmerSpYuaNWumxMREff7557p48aL69++fK8Th5sLCwhQZGSlJOnbsmI4cOaK2bduqTp06kqR27drpkUcekSSFhIRozpw5mjZtmqZPn261nb/fQur8+fPauHGjTCaTduzYobvuusvutZfaedQkqXPnztq2bZtCQkK0ceNGyz1FX3311XzfU9TV1VWrV6/WvHnz9Mknn2jx4sUqX768Ro4cqZdeeomQVgi32y9JSUmWkYEvv/xSX375Za42NWrUIKgVgD3eK7A/e/XLv/71LwUGBuqDDz7Q6tWr5eLiombNmumdd97hcHQB2aNPHnjgAX3xxRf697//rYMHD2r//v3y8vJSgwYN9Pzzz2v06NEOfhUlT2RkZK67Qhw8eNDqMKY5qN1MaGioAgMDtXz5cr377rsymUzq27evZs6caQl99laqR9QAAACMrNSeowYAAGB0BDUAAACDIqgBAAAYFEENAADAoAhqAAAABkVQAwAAMCiCGgAAgEER1AAAAAyKoAYAAGBQBDUAAACDIqgBAAAYFEENAADAoP4/i0ytC0HAMysAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.distplot(np.random.beta(4,1,500), kde=False, label=\"Non Treated\")\n", "sns.distplot(np.random.beta(1,3,500), kde=False, label=\"Treated\")\n", "plt.title(\"Positivity Check\")\n", "plt.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If this happens, it means that positivity is not very strong. If a treated has a propensity score of, say, 0.9 and the maximum propensity score of the untreated is 0.7, we won't have any untreated to compare to the individual with the 0.9 propensity score. This lack of balancing can generate some bias, because we will have to extrapolate the treatment effect to unknown regions. Not only that, entities with very high or very low propensity scores have a very high weight, which increases variance. As a general rule of thumb, you are in trouble if any weight is higher than 20 (which happens with an untreated with propensity score of 0.95 or a treated with a propensity score of 0.05). \n", "\n", "An alternative is clipping the weight to be at a maximum size of 20. This will decrease the variance, but it will actually generate more bias. To be honest, although this is a common practice to reduce variance, I don't really like it. You will never know if the bias you are inducing with clipping is too much. Also, if the distributions don't overlap, your data is probably not enough to make a causal conclusion anyway. To gain some further intuition about this, we can look at a technique that combines propensity score and matching\n", "\n", "## Propensity Score Matching\n", "\n", "As I've said before, you don't need to control for X when you have the propensity score. It suffices to control for it. As such, you can think of the propensity score as performing a kind of dimensionality reduction on the feature space. It condenses all the features in X into a single treatment assignment dimension. For this reason, we can treat the propensity score as an input feature for other models. Take a regression, model for instance." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [0.025 0.975]
Intercept -3.0756 0.065 -47.057 0.000 -3.204 -2.947
intervention 0.3930 0.019 20.974 0.000 0.356 0.430
propensity_score 9.0504 0.200 45.309 0.000 8.659 9.442
" ], "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "smf.ols(\"achievement_score ~ intervention + propensity_score\", data=data_ps).fit().summary().tables[1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we control for the propensity score, we now estimate a ATE of 0.39, which is lower than the 0.47 we got previously with a regression model without controlling for the propensity score. We can also use matching on the propensity score. This time, instead of trying to find matches that are similar in all the X features, we can find matches that just have the same propensity score.\n", "\n", "This is a huge improvement on top of the matching estimator, since it deals with the curse of dimensionality. Also, if a feature is unimportant for the treatment assignment, the propensity score model will learn that and give low importance to it when fitting the treatment mechanism. Matching on the features, on the other hand, would still try to find matches where individuals are similar on this unimportant feature." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Treatment Effect Estimates: Matching\n", "\n", " Est. S.e. z P>|z| [95% Conf. int.]\n", "--------------------------------------------------------------------------------\n", " ATE 0.390 0.025 15.449 0.000 0.341 0.440\n", " ATC 0.380 0.028 13.652 0.000 0.326 0.435\n", " ATT 0.411 0.027 15.307 0.000 0.359 0.464\n", "\n" ] } ], "source": [ "cm = CausalModel(\n", " Y=data_ps[\"achievement_score\"].values, \n", " D=data_ps[\"intervention\"].values, \n", " X=data_ps[[\"propensity_score\"]].values\n", ")\n", "\n", "cm.est_via_matching(matches=1, bias_adj=True)\n", "\n", "print(cm.estimates)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see, we also get an ATE of 0.38, which is more in line with what we've seen before with propensity score weighting. Matching on the propensity score also gives us some intuition about why it is dangerous to have a small overlap in the propensity score between treated and untreated. If this happens, the matching on the propensity score discrepancy will be large, which will lead to bias, as we've seen on the matching chapter. \n", "\n", "One final word of caution here is that the above standard errors are wrong, as they don't account for the uncertainty in the estimation of the propensity score. Unfortunately, [bootstrap doesn't work with matching](https://economics.mit.edu/files/11862). Also, the theory above is so recent that there are no Python implementations of propensity score methods with the correct standard errors. For this reason, we don't see a lot of propensity score matching in Python. \n", "\n", "## Key Ideas\n", "\n", "Here, we've learned that the probability of getting the treatment is called the propensity score and that we can use this as a balancing score. What this means is that, if we have the propensity score, we don't need to control for the confounders directly. It is sufficient to control for the propensity score in order to identify the causal effect. We saw how the propensity scores acts as a dimensionality reduction on the confounder space.\n", "\n", "These properties allowed us to derive a weighting estimator for causal inference. Not only that, we saw how the propensity score can be used along other methods to control for confounding bias. \n", "\n", "Then, we looked at some common issues that can arise with propensity score and with causal inference in general. The first one is when we get carried away by the task of fitting the treatment mechanism. We saw that, in a very counterintuitive (and hence easy to get it wrong) way, increasing the predictive performance of the treatment does **not** translate into a better causal estimate, as it can increase variance.\n", "\n", "Finally, we looked at some extrapolation problems that we might run into if we are unable to have a good overlap between the treated and untreated propensity score distribution. \n", "\n", "\n", "## References\n", "\n", "I like to think of this entire book as a tribute to Joshua Angrist, Alberto Abadie and Christopher Walters for their amazing Econometrics class. Most of the ideas here are taken from their classes at the American Economic Association. Watching them is what is keeping me sane during this tough year of 2020.\n", "* [Cross-Section Econometrics](https://www.aeaweb.org/conference/cont-ed/2017-webcasts)\n", "* [Mastering Mostly Harmless Econometrics](https://www.aeaweb.org/conference/cont-ed/2020-webcasts)\n", "\n", "I'll also like to reference the amazing books from Angrist. They have shown me that Econometrics, or 'Metrics as they call it, is not only extremely useful but also profoundly fun.\n", "\n", "* [Mostly Harmless Econometrics](https://www.mostlyharmlesseconometrics.com/)\n", "* [Mastering 'Metrics](https://www.masteringmetrics.com/)\n", "\n", "My final reference is Miguel Hernan and Jamie Robins' book. It has been my trustworthy companion in the most thorny causal questions I had to answer.\n", "\n", "* [Causal Inference Book](https://www.hsph.harvard.edu/miguel-hernan/causal-inference-book/)\n", "\n", "The data that we used was taken from the article [Estimating Treatment Effects with Causal Forests: An Application](https://arxiv.org/pdf/1902.07409.pdf), by Susan Athey and Stefan Wager. \n", "\n", "![img](./data/img/poetry.png)\n", "\n", "## Contribute\n", "\n", "Causal Inference for the Brave and True is an open-source material on causal inference, the statistics of science. It uses only free software, based in Python. Its goal is to be accessible monetarily and intellectually.\n", "If you found this book valuable and you want to support it, please go to [Patreon](https://www.patreon.com/causal_inference_for_the_brave_and_true). If you are not ready to contribute financially, you can also help by fixing typos, suggesting edits or giving feedback on passages you didn't understand. Just go to the book's repository and [open an issue](https://github.com/matheusfacure/python-causality-handbook/issues). Finally, if you liked this content, please share it with others who might find it useful and give it a [star on GitHub](https://github.com/matheusfacure/python-causality-handbook/stargazers)." ] } ], "metadata": { "celltoolbar": "Tags", "kernelspec": { "display_name": "Python 3.8.10 ('pytorch')", "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.8.10" }, "vscode": { "interpreter": { "hash": "65b5f243489bd9358788296533fc03025fea49f65e08ef6aa7a40b96c7113e3c" } } }, "nbformat": 4, "nbformat_minor": 2 }