{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Causal DAGS for Quasi-Experiments" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This page provides an overview of causal Directed Acyclic Graphs (DAG's) for some of the most common quasi-experiments. It takes inspiration from a paper by {cite:t}`steiner2017graphical`, and the books by {cite:t}`cunningham2021causal` and {cite:t}`huntington2021effect`, and readers are encouraged to consult these sources for more details." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "tags": [ "remove-input" ] }, "outputs": [], "source": [ "import daft\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "tags": [ "remove-input" ] }, "outputs": [], "source": [ "ff = \"times new roman\"\n", "plt.rcParams[\"font.family\"] = ff\n", "\n", "GRID_UNIT = 2.0\n", "DPI = 200\n", "NODE_EC = \"none\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before we take a look at randomized controlled trials (RCTs) and quasi-experiments, let's first consider the concept of confounding. Confounding occurs when a variable (or variables) causally influence both the treatment and the outcome and is very common in observational studies. This can lead to biased estimates of the treatment effect (the causal effect of $Z \\rightarrow Y$). The following causal DAG illustrates the concept of confounding. Note that the confounder is written as a vector because there may be multiple confounding variables, $\\mathbf{X}=x_1, x_2,x_3$." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "tags": [ "remove-input" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAATMAAAEMCAYAAACodFEmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAB7CAAAewgFu0HU+AAAQAElEQVR4nO3de2jV9R/H8ddxaqV4g5kXnJVGOZfzsnlJXIlZm5akKaywpHQ6/8myzMgmJBGZVkoUkbJRIKWpZavpzMVW2siQ8oLTLlNzapaZyJzT3b6/P/p58Ox6pmfne877+3zAwHPOd/Ku1tPP+5zt6HMcxxEARLl2bg8AAKFAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMAJhAzACYQMwAmEDMcM0uXbqkQYMGyefzBXw8/fTTzX5ecXGxYmJiGnxeQUFBmCaHRT7HcRy3h0D0Ki4uVkpKiurq6vz3+Xw+ffvtt0pJSWlw/eXLlzVs2DAdPnw44P6MjAytXbu2zeeFXZzMcF3Gjh2rBQsWBNznOI7mzJmjysrKBtcvW7asQcj69eunN998s03nhH2czHDdLl68qMTERJWWlgbcv2jRIq1cudJ/+6efftLo0aNVU1MTcF1eXp4mT54clllhFzFDSBQVFWnChAm6+sspJiZGxcXFGjVqlGpqapScnKx9+/YFfN6sWbP00UcfhXtcGMSaiZAYP3685s+fH3BfbW2tZs+eraqqKi1fvrxByHr37q3Vq1eHcUpYxskMIXPhwgXddddd+uOPPwLunzlzpjZu3KiqqqqA+z/77DNNmzYtnCPCMGKGkNqxY4ceeOCBFq9LT0/X+vXrwzARvIKYIeQyMjKUnZ3d5OM9e/bUwYMH1bNnzzBOBeuIGULu/PnzSkhI0MmTJxt9fP369UpPTw/zVLCOFwAQct26ddOECRMafaxz585BraFAaxEzhNx3332ndevWNfpYRUWFFi5cGOaJ4AWsmQipyspKJSYm6vfff2/2um3btiktLS1MU8ELOJkhpLKyshqErH379g2umzdvnsrLy8M1FjyAmCFkdu/e3eCbYH0+n7788kvFx8cH3F9WVqYXXnghjNPBOmKGkKiqqtLs2bMD3j1DkjIzM5WWlqacnBy1axf45bZmzRoVFhaGc0wYRswQEsuWLVNJSUnAfXFxcVqxYoUkacyYMQ2e+HccRxkZGbp48WLY5oRdvACA6/bzzz/7f5j8alu3btWkSZP8tysrKzV06FD99ttvAdc988wz/Iwmrhsxw3WpqanRyJEjtXfv3oD7m3o3jF27dumee+4JeHeNdu3aaefOnRo7dmxbjwvDWDNxXV5//fUGIevVq5dWrVrV6PXjxo1r8LbadXV1mjNnji5dutRWY8IDOJnhmpWUlGj48OEN3g1j06ZNmj59epOfV1FRocTERB05ciTg/hdffFHLly9vk1lhHzEDYAJrJgATiBkAE4gZABOIGQATiBkAE4gZABOIGQATiBkAE4gZABOIGQATiBkAE4gZABOIGQATiBkAE4gZABOIGQATiBkAE4gZABOIGQATiBkAE4gZABOIGQATiBkAE4gZJEmnT59WZWWl22O02tGjR8Vf/QqJmOH/+vTpo06dOunjjz92e5SgOI6jadOmacCAAZo6darb4yACEDNo3rx5/l/PnDlT//77r4vTBOett97Sli1bJEm5ubnav3+/uwPBdT6HM7qnlZaW6vbbb/ffvvfee1VUVOTeQK3g8/kCbtfV1TW4D97Byczjrg6ZJBUWFro0SeuVlJQE3Gbd9DZi5mFXr5eStHv37qg62cTHxys9Pd1/m3XT21gzPSqa18v6WDchcTLzrGheL+tj3YREzDwp2tfL+lg3IbFmeo6l9bI+1k1v42TmMZbWy/pYN72NmHmItfWyPtZNb2PN9AjL62V9rJvexMnMIyyvl/WxbnoTMfMA6+tlfayb3sSaaZyX1sv6WDe9hZOZcV5aL+tj3fQWYmaY19bL+lg3vYU10ygvr5f1sW56Ayczo7y8XtbHuukNxMwgr6+X9bFuegNrpjGsl01j3bSNk5kxrJdNY920jZgZwnrZPNZN21gzjWC9DB7rpk2czIxgvQwe66ZNxMwA1svWYd20iTUz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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pgm = daft.PGM(dpi=DPI, grid_unit=GRID_UNIT, node_ec=NODE_EC)\n", "\n", "pgm.add_node(\"z\", \"$Z$\", 1, 0)\n", "pgm.add_node(\"x\", \"$\\mathbf{X}$\", 1.5, 0.75)\n", "pgm.add_node(\"y\", \"$Y$\", 2, 0)\n", "\n", "pgm.add_edge(\"z\", \"y\")\n", "pgm.add_edge(\"x\", \"y\")\n", "pgm.add_edge(\"x\", \"z\")\n", "\n", "pgm.render();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One way to tell that our estimate of the causal relationship $Z \\rightarrow Y$ may be biased is the presence of a backdoor path, $Z \\leftarrow \\mathbf{X} \\rightarrow Y$. This path type is known as a \"fork\". Because $\\mathbf{X}$ is a common cause of $Z$ and $Y$, any observed statistical relation between $Z$ and $Y$ may be due to the confounding effect of $\\mathbf{X}$. \n", "\n", "Backdoor paths are problematic because they introduce _statistical associations_ between variables that do not reflect the true causal relationships, potentially leading to biased causal estimates. For example, if we ran a regression of the form `y ~ z`, and observe a main effect of $Z$ on $Y$, we have no way of knowing if this represents a true causal impact of $Z$ on $Y$, or if it is due to the confounding effect of $\\mathbf{X}$. \n", "\n", "One approach is to \"close the backdoor path\" by conditioning on the confounding variables. Practically, this could involve including confounders $\\mathbf{X}$ as a covariate in a regression model such as: `y ~ z + x₁ + x₂ + x₃`. Without explaining why, the coefficient for the main effect of $Z$ would now be an unbiased estimate of the _causal_ effect of $Z \\rightarrow Y$.\n", "\n", "However, unless we are very sure that we have accurate measures of _all_ confounding variables (maybe there is an $x_4$ that we don't know about or couldn't measure), it is still possible that our estimate of the causal effect is biased." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This leads us to Randomized Controlled Trials (RCTs) which are considered the gold standard for estimating causal effects. One reason for this is that we (as experimenters) intervene in the system by assigning units to treatment by {term}`random assignment`. Because of this intervention, any causal influence of the confounders upon the treatment $\\mathbf{X} \\rightarrow Z$ is broken - treamtent is now soley determined by the randomisation process, $R \\rightarrow T$. The following causal DAG illustrates the structure of an RCT." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "tags": [ "remove-input" ] }, "outputs": [ { "data": { "image/png": "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M3E9ZeeLVP3V+PHjXS9Azs3NtfLz8638/HzryJEj1ubNm63ExETX/YMGDbJ7XMuyLOvDDz90zcTFs0tcXJz10ksvWdnZ2XY/fS5ZWVmuF7ZLslauXGn3SG45nU7bn8NAu0RGRlrJycnW7Nmz7X766lm+fLlrzszMTLvHCRhEtAHdunWzJFnt2rVr8P6ysjKrZ8+erm+4o0eP+njC+uz+5RDIl0WLFtn99FmWZVm5ublWq1atXHN9+umndo/UqBs3btj+3AXqJSIiwu6nr54333zTNd+lS5fsHidg8BKXOpxOp86fPy9JSkxMbPCYyMhILVy40PX1li1bfDIbvCMszP4fg6NHj2r06NEqKyuTdO+1ex999JHNUyGU3P8zVtu2bWu9iQwa55+b8zY6efKkqqurJUl9+/Z1e9yYMWP0yCOP6Pbt29qxY4eWL1/uowkbtm/fPtdp6cFs2bJlD/3fcDgc6tatm+tvVaNGjWqGycwVFBQoNTVVt27dkiTNmjVLn3/+ua0zeaJ169aaP3++3WN4XXZ2tsfnSTQmJibG9bfRfv36PfxgzaiiokKFhYWSpD59+tg8TWAhonXU/GFxtxKV7n1qy/Dhw5WZmanLly/rjz/+aPSdjbxtxIgRIXH25q5du2qdhv8gdYOZlJSkxMREv3k5UlFRkZ5//nldv35dkjRx4kR99dVXNk/lmRYtWmjp0qV2j+F1dV/i4omawbwfzS5duvjt6y1PnTql8vJySY0vHlAfEa2jZkQf9M00atQo1xmgu3fvtjWi8P9g1nXlyhUNHz5cV69elXRvd+Obb77xi+1leC7QgtmQpvzeQ21EtI7730xRUVHq1q1bo8eOHDlSDodDlmXpp59+0scff+yDCSEFXjDrunHjhoYPH65Lly5JuvcmEosWLdLp06c9/m/ExcUpJibGSxOiIcEQzIacPHnSdZ2INg3vWFRDdXW1oqOj5XQ6H/ghtfclJSXp2LFjCgsL09WrV/32tYfBYsuWLXryyScDKpgN2bp160O/H2leXp6ee+65ZpoI7uTn56uwsDBogtmQYcOG6ZdfflHLli11+/ZttWjRwu6RAgYr0RrOnj3r+gxRT/81NmrUKB07dkzV1dXKysrSW2+95cUJ8cYbb9g9QrPIz89/qMeHh4ezYvCR3r17N/pxiMHg/kq0R48eBLSJWIkCAGCIMxgAADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADBERAEAMEREAQAwREQBADD0f1uMy4xvJGA6AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pgm = daft.PGM(dpi=DPI, grid_unit=GRID_UNIT, node_ec=NODE_EC)\n", "\n", "pgm.add_node(\"r\", \"$R$\", 0, 0)\n", "pgm.add_node(\"z\", \"$Z$\", 1, 0)\n", "pgm.add_node(\"x\", \"$\\mathbf{X}$\", 1.5, 0.75)\n", "pgm.add_node(\"y\", \"$Y$\", 2, 0)\n", "\n", "pgm.add_edge(\"r\", \"z\")\n", "pgm.add_edge(\"z\", \"y\")\n", "pgm.add_edge(\"x\", \"y\")\n", "\n", "pgm.render();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The new variable $R$ represents the random assignment of units to the treatment group. This means that the treatment effect $Z \\rightarrow Y$ can be estimated without bias." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Instrumental Variables\n", "\n", "In quasi-experiments, we cannot randomly assign subjects to treatment groups. So confounders $\\mathbf{X}$ will still influence treatment assignment. In the instrumental variable (IV) approach, the causal effect of $Z \\rightarrow Y$ is identifiable if we have an IV that causally influences the treatment $Z$ but not the outcome $Y$." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "tags": [ "remove-input" ] }, "outputs": [ { "data": { "image/png": "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VqKAD7X0mhoFGptaW5Fu3rxZn3/+uUup0IgSBXxm7969zUaBFGhsa61I2WDkPkoU8JnXX39d5eXlznUKND60VKRLly7V77//7mIqUKKAz6xcudK5TIHGl6ZFWldXp7Vr17qcyt/YWAT4TG1trWbOnKlFixbp008/pUDj0KuvvqqcnBzNnTtXI0eOdDuOr1GigE/V1dUpKSnJ7RgwxPMXGyhRAAAM8ZooAACGKFEAAAxRogAAGKJEAQAwRIkCAGCIEgUAwBAlCgCAIUoUAABDlCgAAIYoUQAADFGiAAAYokQBADBEiQIAYIgSBQDAECUKAIAhShQAAEOUqKQXX3xRlmXJsizl5+c7x88//3xZlqUuXbqE/Jjjx493HvPtt98OZ1x40KxZs5zfF5Of2bNnu/2fgDiye/dudezYUZZlKTU1VXV1de3ep76+XiNGjHB+5954440oJI19lKik4uJi5/Lpp5/uXO7Xr58k6b///tOuXbuCfrySkhKnjIcMGaIxY8aEJSe8a8OGDQd1//79+4cpCfygS5cumjRpkiRp586dQf1Df+rUqSooKJAkTZ8+Xddcc01EM8YLy7Zt2+0Qbhs0aJC++uorJScna+/evUpMTJQkvfTSS7rlllskSStWrNAFF1wQ1ONlZ2fr008/lSR9+eWXGjx4cGSCwzN++uknVVZWBnVueXm5xo4dq7KyMknSGWecobVr1yolJSWSEeExZWVl6tWrl2prazVo0CCtW7eu1XPnzZunm266SZI0evRoLVmyRJZlRStqbLN9rr6+3k5JSbEl2QMHDgy4bc2aNbYkW5L93HPPBfV4hYWFzn3Gjh0bicjwsaqqKvu8885zfsf69Olj//XXX27HQpwaP36887tUVFTU4jmrVq2yO3ToYEuyMzMz7YqKiiinjG2+H+du3brVWQEcOMqVpPT0dOfypk2b2n0s27Z1zz33SJIOPfRQPfbYY+ELCt+rra3VmDFjtHr1aklSz549tWLFCh199NHuBkPcuueee5wVZUuvq2/btk1jxoxRbW2tunfvrg8++ICJRxO+L9EDXw/NzMwMuK1r16467rjjJEmbN29u97Hy8/O1ceNGSdLtt9+unj17hi8ofK2hoUHXXXedli1bJkk6/vjjtWLFCh1//PEuJ0M8S09P18iRIyVJ77zzjn755Rfntj179uiyyy7TP//8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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pgm = daft.PGM(dpi=DPI, grid_unit=GRID_UNIT, node_ec=NODE_EC)\n", "\n", "pgm.add_node(\"iv\", \"$IV$\", 0, 0)\n", "pgm.add_node(\"z\", \"$Z$\", 1, 0)\n", "pgm.add_node(\"y\", \"$Y$\", 2, 0)\n", "pgm.add_node(\"x\", \"$\\mathbf{X}$\", 1.5, 0.75)\n", "pgm.add_edge(\"iv\", \"z\")\n", "pgm.add_edge(\"x\", \"z\")\n", "pgm.add_edge(\"x\", \"y\")\n", "pgm.add_edge(\"z\", \"y\")\n", "\n", "pgm.render();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's try to get some intuition of why having the $IV$ helps:\n", "* The presence of $\\mathbf{X}$ is a confounder because it influences both $Z$ and $Y$.\n", "* But the $IV$ helps overcome this confounding because it is not influenced by $\\mathbf{X}$.\n", "* Any association between the $IV$ and $Y$ must be through the treatment $Z$.\n", "* This means that the $IV$ can be used to estimate the causal effect of $Z \\rightarrow Y$, without being confounded by $\\mathbf{X}$. Informally, the $IV$ causes some variation in the treatment $Z$ that is not due to $\\mathbf{X}$, and this variation can be used to estimate the causal effect of $Z \\rightarrow Y$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Readers are referred to {cite:t}`steiner2017graphical,cunningham2021causal` or {cite:t}`huntington2021effect` for a more in-depth discussion of the IV approach from the causal DAG perspective." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Interrupted Time Series\n", "\n", "A causal DAG for interrupted time series quasi-experiment is given in Chapter 17 of {cite:t}`huntington2021effect`, though they are labelled as [Event Studies](https://theeffectbook.net/ch-EventStudies.html). These kinds of studies are suited to situations where an intervention is made at a given point in time at which we move from untreated to treated. Typically, we consider situations where there are a 'decent' number of observations over time. Here's the causal DAG - note that $\\text{time}$ represents all the things changing over time such as the time index as well as time-varying predictor variables." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "tags": [ "remove-input" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdEAAAEzCAYAAABuTzkSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAB7CAAAewgFu0HU+AAAhKklEQVR4nO3deXRU9d3H8U8IkIUACViMQTYXkKWCAuKGSUGFChxQQKB4RDQgiKiIwnlkK1QqxyoFxIK1AoeWTbBQVESUTUEQREREK8hOZE9igSSEJN/njzS3CUkguWQy2/t1zhyTe+/M/G6IvLm/uXMnxMxMAACg1Cp4ewAAAPgrIgoAgEtEFAAAl4goAAAuEVEAAFwiogAAuEREAQBwiYgCAOASEQUAwCUiCgCAS0QUAACXiCgAAC4RUQAAXCKiAAC4REQBAHCJiAIA4BIRBQDAJSIKAIBLRBQAAJeIKAAALhFRAABcIqIAALhERAEAcImIAgDgEhEFAMAlIgoAgEtEFAAAl4goAAAuEVEAAFwiogAAuEREAQBwiYgCAOASEQUAwCUiCgCAS0QUAACXiCgAAC4RUQAAXCKiAAC4REQBAHCJiAIA4BIRBQDAJSIKAIBLRBQAAJeIKAAALhFRAABcIqIAALhERAEAcImIAgDgEhEFAMAlIgoAgEtEFAAAl4goAAAuEVEAAFwiogAAuEREAQBwiYgCAOASEQUAwCUiCgCAS0QUAACXiCgAAC4RUQAAXCKigIetWbNGNWvW1IMPPigz8/ZwAJQhIgp42NKlS5WcnKxly5YpOTnZ28MBUIYqensAQKAbPHiwtm/frrZt26pmzZreHg6AMhRizC8BZWL37t1auHChxo4d6+2hACgnTOcCZWTSpEnKycnx9jAAlCMiCpSBlStXas6cOd4eBoByRkSBK7R69Wr17NmTM2+BIEREgSswefJk9erVS+np6ZJyp3Sjo6MVHR2t2bNnKycnRytXrtSDDz6oG2+8sdD9jx07plGjRqlGjRo6cOCAJOmdd95RkyZNVKVKFbVt21bbt293tt+2bZs6d+6satWqKTY2VmPGjCl2CjktLU0TJ05UixYtVL16dUVHR6tDhw5av3592f8ggGBlAK5YfHy8SbJx48Y5y7Zs2WIdOnSwihUrmiSrV6+es+6XX36xxMRECwsLM0kmyfbt22cDBw60KlWqWGxsrLO8Vq1advLkSXv//fctPDzcrr32WgsPD3fWT5w4sdB4jhw5Ys2aNbOXX37ZfvnlF8vMzLS3337bwsLCrEKFCjZ79mzP/1CAIMCRKOAhrVu31sqVKzVs2LBC66pUqaLx48frtddec5ZNmDBBzZs31+nTp3X06FEtW7ZMISEhOnHihF544QX95S9/0ddff63Dhw8rJSVFnTt3liRNmzatwGObmXr27KmOHTtq1KhRqlatmipVqqTExESNHDlSOTk5Gjx4sH7++WfP/gCAIEBEAQ9r0KBBoWWhoaGKi4tTQkKCs6x///566qmnFBYWJknq2rWrbr/9dknSoUOH9P7776tx48aSpPDwcL3wwguSpOPHjyslJcV5nA8++ECbNm1SYmJioee94447JEkZGRlavHhx2ewgEMS42ALgYeHh4cWui4yMdL6uW7duofX169fXpk2bVLduXYWGhhZYFxcX53x99uxZxcTESMq9QpIktWnTptDj5eTkOJHet29fKfYCQFGIKOBhISEhxa6rUOHSk0GVK1cudl2lSpWcr7Ozs52vd+7cKSn3pKVLBRzAlWM6FwgwqampkqSkpCTvDgQIAkQUCDB5U8Tr1q275Hb5j14BuENEgQDTqFEjSbln7WZlZRW5zaFDh/Tyyy+X57CAgEREgTKQ99pmRkaGl0cidenSRZL07bffaujQoYWupJSTk6NnnnlG9957rzeGBwQUIgqUgapVq0qSNmzYoOzsbP3000+aMGGCpNwrB0lyrmqUX/5lRQU470gyMzOz0Lr807H5H6d3795q2rSpJGnmzJmKj4/Xe++9px07dmj58uW6//77deHCBd11112l3k8ABRFRoAzkvZ9z48aNiouLU9u2bdWvXz+dP3/eecvJiRMnCrxOaWZatGiR8/2SJUsKHDUeOXLE2X7Tpk0FThQyMy1cuND5fvHixc7l/ypVqqSlS5c6b5n5/PPP1aNHD7Vo0UJdu3bVkSNHuFg+UFa8er0kIECkpaVZ3759LTIy0m677TbbunWrrV271rnkX/5b+/btLSsrq8Al//JuYWFhdvDgQRs4cGChdSEhIdavXz87ePCgVa5cucj75nfq1Cl7/vnnrX79+la5cmWrU6eOPffcc5acnOylnxIQePhQbgAAXGI6FwAAl4goAAAuEVEAAFwiogAAuEREAQBwiYgCAOAS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nKjVq1dr2bJlysnJ0YMPPqh169apSpUq2rZtmxo1auTtIQIAfAivif7X2rVrNXr0aA0bNkzVqlVTdHS0Fi1apLi4OJ07d07btm3z9hABAD6GiP7X66+/LkmqW7eus6xWrVrauHGjZs+erV69emnUqFE6cOCAl0YIAPA1TOcq9xTyKlWqKD09XXv27NENN9xQaJvU1FRdd911+vrrr1W/fv3yHyQAwOdwJCopJSXFeQ9WaGhokds89dRTpfowbABA4COiyj37Lc/FZ8JmZ2frmWee0YIFC8p7WAAAHxdwET1//rymTp2qVq1aKTY2VlFRUWratKnGjh2rjIyMAtuOHz9e0dHR+vWvf+0su/nmmxUdHa3o6Gh9+OGHuu+++zRnzpwi158/f95ZbmaaN2+e4uPjVatWLUVGRqpVq1b629/+VmiMP/zwg5599llFR0frwIED2r17t+655x5Vq1ZN48aNK/sfCgDAMyyAZGRk2O23326VK1e2lStXmpnZnj17rHnz5ibJHn744SLvt3//fpNkkmz//v2lXp+ZmWk9evSwnj172qFDh8zMbP369Va3bl2TZI8//riZmZ08edIeeughq1ixovN4mzdvtkaNGjnLKlSoYJmZmWXzAwEAeFRARXT27Nkmye68884Cy5cuXeoEKi0trdD9rjSiI0eOtNtvv92ysrIKLF+zZo1zv/fee89Z/t577znLO3XqZD/++KPt2rXLunTpYiNHjnS38wCAclexnA98Pers2bOSct+akt9NN90kScrJyVFycrJq165dZs958uRJTZ06VVOmTCl0UtIdd9zhfP33v/9dDz30kCSpadOmzvKHHnpIDRs2lCQtX768zMYFAPC8gIroE088obCwMN1///3OspycHG3fvt35Pisrq0yf86OPPlJGRoaGDx+ukSNHFlofFhYmSQXeX1q5cmXn63bt2pXpeAAA5SegIhoREaEBAwZIkk6cOKEZM2ZoxYoVat68ubONlfHbYvM+bWXJkiXq2LFjie7DtXABIDAE3Nm56enpGjFihO6++241bNhQGzdu1EsvveSx50tNTZUkJSUleew5AAC+KaAievLkSbVu3VorVqzQ5s2b1adPH1Ws6NmD7cjISEnSunXrLrlddna2R8cB//bqq68qJCTE9W3KlCne3gX4kZSUFFWtWlUhISGqU6dOiV7mys7O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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pgm = daft.PGM(dpi=DPI, grid_unit=GRID_UNIT, node_ec=NODE_EC)\n", "\n", "pgm.add_node(\"a\", \"after\\ntreatment\", -1, 0)\n", "pgm.add_node(\"z\", \"$Z$\", 0, 0)\n", "pgm.add_node(\"y\", \"$Y$\", 1, 0)\n", "pgm.add_node(\"t\", \"time\", 0, 1)\n", "\n", "pgm.add_edge(\"a\", \"z\")\n", "pgm.add_edge(\"t\", \"a\")\n", "pgm.add_edge(\"t\", \"y\")\n", "pgm.add_edge(\"z\", \"y\")\n", "\n", "pgm.render();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What we want to understand is the causal effect of the treatment upon the outcome, $Z \\rightarrow Y$. But we have a back door path between $Z$ and $Y$ which will make this hard, $Z \\leftarrow \\text{after treatment} \\leftarrow \\text{time} \\rightarrow Y$.\n", "\n", ":::{note}\n", "Below is an attempt to explain one way that we can deal with this. Though it is a bit of a brain-twister and can take some time to get your head around. Thanks to Nick Huntington-Klein for some clarification in [this twitter thread](https://twitter.com/inferencelab/status/1783882438063661374).\n", ":::\n", "\n", "One approach we can use is:\n", "1. We want to close the backdoor path, and one way to do this is to split the dataset into two parts: pre-treatment and post-treatment. By fitting a model only to the pre-treatment data, we have removed any variation in $\\text{after treatment}$ (all values are $0$), so there is now no variation in $Z$ caused by $\\text{time}$. This is one way to close a backdoor path, and means that a model fitted to this data (e.g. $Y_{\\text{pre}} \\sim f(\\text{time}_{\\text{pre}})$) will not be biased by the backdoor path.\n", "2. However, our goal is to estimate the causal effects of the treatment $Z \\rightarrow Y$, but we have just removed any variation in $Z$ and it does not appear in the aforementioned model, $Y_{\\text{pre}} \\sim f(\\text{time}_{\\text{pre}})$, so our work is not done. One way to deal with this is to use the model to predict what would have happened in the post-treatment era if no treatment had been given. If we make the assumption that nothing would have changed in the absence of treatment, then this will be an unbiased estimate of the counterfactual. By comparing the counterfactual with the observed post-treatment data, we can estimate the treatment effect $Z \\rightarrow Y$. By focussing only on the post-treatment data we are looking at empirical outcomes $Y_\\text{post}$ which are affected by treatment $Z = 1$, but have closed the back door because all $\\text{after treatment} = 1$. The final comparison (subtraction) between the counterfactual estimate and the observed post-treatment data gives us the estimated treatment effect." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Propensity Score Weighting\n", "\n", "In this exposition we follow the presentation of {cite:t}`steiner2017graphical`. The idea they discuss is that we should conceive of the propensity score adjustment techniques as a primarily an offset aimed at balancing the existing degree of confounding. The focus is on recovering the condition of __strong ignorability__ such that $Y(1), Y(0) \\perp\\!\\!\\!\\!\\perp Z | X$. This constraint is phrased in terms of potential outcomes $Y(0), Y(1)$, which we won't define here, but basically we're saying the outcomes are independent of the treatment when we condition on the covariates $X$ which determine selection effects. Achieving this status removes the backdoor path between the measured covariates $X$ and the treatment $Z$ thereby giving us license to causal conclusions. They emphasise this point in that the PS (propensity score) is a collider variable we can use to disentangle the confounding influence of the covariates $X$ influencing selection into the treatment. \n", "\n", "> \"This general result is obtained because the PS _itself_ is a collider variable and, thus, conditioning on the PS offsets the confounding relation $X \\rightarrow Z$ regardless of the choice of a specific PS design— matching, stratification, or weighting\" -pg 176 \"Graphical Models\n", "for Quasi-experimental Designs\"\n", "\n", "However, we have to be wary that the design assumes all relevant variables are measured in $X$, it cannot account for unmeasured confounding. In this way, we try to recover the conditions of an RCT using PS but need to be wary of unmeasured confounding. \n" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "tags": [ "remove-input" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABvQAAAJRCAYAAACa1FDJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAB7CAAAewgFu0HU+AACo9UlEQVR4nOzdd3gU1dvG8TuNkJCQ0EKXLh2lqKAIKiiIoogNsFBFQaz8VLBjA+yiWFCQImJFsYPSO4jSpHekt4QSQsqe94+8O2azu+mbnWy+n+vykuxOOdtmzpx7npkgY4wRAAAAAAAAAAAAAFsK9ncDAAAAAAAAAAAAAHhHoAcAAAAAAAAAAADYGIEeAAAAAAAAAAAAYGMEegAAAAAAAAAAAICNEegBAAAAAAAAAAAANkagBwAAAAAAAAAAANgYgR4AAAAAAAAAAABgYwR6AAAAAAAAAAAAgI0R6AEAAAAAAAAAAAA2RqAHAAAAAAAAAAAA2BiBHgAAAAAAAAAAAGBjBHoAAAAAAAAAAACAjRHoAQAAAAAAAAAAADZGoAcAAAAAAAAAAADYGIEeAAAAAAAAAAAAYGMEegAAAAAAAAAAAICNEegBAAAAAAAAAAAANkagBwAAAAAAAAAAANgYgR4AAAAAAAAAAABgYwR6AeTgwYNq0KCBGjZsqEOHDvm7ObmWmJioV199VS1btlSpUqVUr149Pf/880pMTPR30/Ll7NmzatOmjapVq6YNGzb4uzk+t2LFCt1yyy0677zzFBsbq2uuuUbLli3zd7MQwIwxmjlzpq699lpdddVV/m5OkTB69GhFR0frtdde83dTAPjArl27NHToUMXExGjXrl0uz+W3XzJ16lTFxMTowQcfLKDWwk4OHz6spUuX+rsZPrN8+XL17t1bERERbs+lpqZq+vTp6tixo9f+xJAhQxQTE6Np06blar3r16/XPffc43G9Be2XX36RMcbn6wEA2EtSUpLGjx+vpk2b6vnnn3d7/vXXX+cYsJjK73gx4weBI1DHbA8fPqwRI0aoYsWKmjdvnstzxhjdeOONKl++vNtzRRWBXi6MGjVK4eHhCgoKcvsvJCRE0dHRatiwoe6++24tXLgwy2Vt2bJFAwYMUI0aNRQdHa2KFSvqiiuu0OjRo7Vhwwa99NJL+umnn3LVvsWLF2vz5s3atGmTFi1alJ+XWuhOnDihK6+8UpGRkVq1apVmzpypgwcPasSIEbrxxhv93bx82bBhg5YtW6Z9+/bp119/9XdzfGrSpEm65557NHbsWG3evFldunTR77//rrZt22r+/Pn+bh4C0Ny5c9WyZUt17txZv/32mxwOh7+bVCR89tlnOn36tCZPnuzvpgC2s3HjRj3++ONq1aqVYmNjFRsbq3r16unGG2/UF198obNnz+r06dPq2rWrv5vq5uTJk+rVq5fq1aunN998UydPnnSbJr/9ki+++EInT57Up59+WhBNDmiDBw9WWFiYx2OH0NBQxcbGqlmzZho4cKDWrl2b5bL+/PNP9ejRQ1WqVFF0dLSqVKmizp07a8yYMdq6dasGDRqk9evX56u9EyZM0IMPPqi6devmazk5lZycrClTpuimm27Seeedp4iICFWrVk0tW7bU8OHDrcB51KhR+u233/K1rr1796pbt25q166dJk+erKSkJJfn//jjD1155ZW6+eabNXv2bK/9iUmTJunkyZP6/PPPc7zerl27qmnTpvrkk0/c1usrXbt21Y4dOwplXQBgB3Yfr/Pk1KlTatq0qdLS0vK9rPfee0/16tXTgAEDvPYHJk2axDGgjXz55ZcKCQlx+65u27YtV8vZu3evW3+zZMmS+uqrr6xp8jtezPhBYAjEMVtjjAYOHKjatWvr+eef1+HDh92mOX78uH744QcdO3ZM3377rR9a6QMGuZKammo+/vhjI8lIMtHR0ebWW281DzzwgOnatasJCwuznhs4cKBxOBxuy5gxY4aJiIgwN9xwg9m4caNxOBzm9OnT5ttvvzXNmze35v/xxx9z1bbTp0+bbt26mW7dupnTp08X1EsuFHfffbcpX768y/s1ZcoUI8lERESYlJQUP7Yuf9LS0ky/fv1Mhw4dzP79+/3dHJ/ZtGmTKVGihBkzZoz1WGJiomnatKmRZF5++WU/tg6B6syZMyY1NdV06NDBSDLt27f3d5OKhK+++sq0atXKfPXVV/5uCmAbx48fN7179zZBQUHmoosuMl988YU5dOiQMcaY5ORks2jRItOjRw9TtmxZU61aNXP++ef7ucXuHA6HSUxMNJMmTbL6kzt37nSZJr/9kvnz55uLL77YZX8P786dO2eeffZZ6/OoUKGC6dWrlxkyZIjp2LGjCQ4ONpJMcHCwGTFihMdlfPjhhyYkJMQMGDDA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6GhrmTt37nSZZuHChaZkyZLm008/NampqSYxMdFMmjTJREdHmxtvvDHH61qyZImJjIw0l1xyiTlw4IBJTU01X331lQkNDTWSzM8//5zr9j/33HNe38utW7eaKlWqGEmmd+/eLs8lJyebQYMGud1g/ttvvzVt2rSxHu/du7eZM2eOiYmJMVWrVjUlS5a0npsyZYrbOg8cOGBatGhhLrnkErN+/XrjcDjMX3/9ZWJiYowk8+qrr7pM/+mnnxpJpkaNGi6Pp6Wlmf79+5sKFSpkeWPODRs2mNq1a5sbbrjB7NmzxxhjzF9//WWaNWtmJJmePXtaN2ROTU01jz/+uNsyH3roIRMeHm6qVatmgoKCjCRTrlw5Ex8fn4NP4D/Tp083pUqVMk8//bQ5efKkSU1NNdOnTzdlypQxwcHBZsyYMV7nzeo1ZsfTvJs3bzadOnWyXo8ks2HDBpfXWL16dWv6L7/80px//vnm999/N6mpqWb//v2mR48eRpI577zzzN69e61pk5KSTOvWrU2JEiXMb7/9ZoxJ/65dcMEFRpK57bbb3Nro7XNetGiRad26tdXG9u3bmz179pjatWubypUrm8jISOu5vn37mrS0NHPXXXdZn5fzufDwcLN9+3a39eb0dX388cemSZMm1vKee+45M23aNBMREWGqV69uwsLCjCQTFBRkFixY4LYe5zYttzeozs02Ib9tPHLkiGnatKmpUqWK9V3ZsmWLufTSS01wcLDX7Uh27S9Xrpzp37+/OXjwoHE4HGbChAnWzajnz5/vMn1CQoLp1KmTOf/8882KFSuMMcbs27fP3H777UaSadKkiTl06JA1fXJysnn77bet13z55Zd7vNnwv//+aySZ1157zTgcDmOMMUePHjV169Y1ZcuWNX/++acxxphVq1aZ6tWrG0nm8ccft+afMWOGufDCC12+h5999pmJjY21HrvrrrvM5MmTrRule9quGmPMI488YiSZF154waSmppoTJ06YXr16GUmmZs2abu3fuXOn132P8z245ZZbzK233mpt4+bPn2/OO+88I8n069fPZfovvvjClCpVyvz888/G4XCYkydPmjfffNOEhYWZhx56yMsnCeTNFVdcYX1/M98gPC/Gjh1rIiIizJgxY0xSUpI5d+6c+eSTT0x4eLgpWbKk+fbbb61p16xZY2699VZrn1ajRg3z77//mkaNGply5cqZsmXLWm3r37+/x/UNHz7cBAUFmRdeeMEkJiaa06dPm+eff96EhIS4/S5z2i/xtj/49ddfTbt27az2etveDh8+3ERHR5tp06aZ1NRUc/r0aTNy5EgTFBRkYmNjzeLFi61p586dazp16uSy7Vq3bp2pUqWKqVixokvf9sUXX8zVZ5Hb7XV+91HZyWq7e+bMGau/EBYWZo4fP+7yOurWrety7HDppZeaZcuW5boNGc2ePdtIMsHBwebs2bMep3E4HKZ79+7W98HhcJj9+/ebDh06GEnmkksusfZZ2Zk3b57V/gsvvDBfbTcm/bNs2bKladOmjdm4caMxJr0vd+WVVxpJ5sorrzSnT592m2/u3Lluxw4ZeTsueeONN0zDhg1dvh+ZpaWlmTvvvNOEhYWZjz76yKSkpJhjx46Ze++91+qneFrv+vXrTd26dc2HH35ozpw5Y86cOWP9ZkqWLGlmzpxpjMn5vj6zd99912MfFgAClZ3G6zI7fvy4KVWqlPnwww+NMcacPHnSREVFGUnm/PPPz9F+dfny5SY2Nta0bdvWGkP4448/TOXKla39Tcb91DfffGOaN2/utS+yYsUKU6pUKY/7tzNnzpgbbrjB437k6NGjplq1aub+++83p06dMqmpqWbevHmmQYMGJiYmxq3dnvqYqampZujQoS59vrlz55qXXnrJlCxZ0lStWtV6PCIiwmzcuNGsWLHClClTxlSqVMl67ySZe+65x22dCQkJpl27dmbIkCHmyJEjJi0tzXz33XemTJky1jGvMcbs3r3b9O3b1xrHkGQSEhJM27ZtTenSpU1cXJz1eIcOHdzW4228KKfat29vvff9+/e31vX11197nH7BggVGklm4cKHLe5v5O5+T8WJjvI/n5WT8wOFwmD59+hhJZuTIkSYpKcns37/fXH311dZYV0xMjImNjTWPPfaYNU9u+5jZ9eFy+lk7jRo1ylSsWNEsXbrUGJP+fR42bJiRZN566y2P6/DmySefNKVLlzaff/65SUxMNAkJCea6664zkkyrVq3cxlAWLVpkKlSoYO655x5z5MgRY4wxc+bMscZInO+TMemf4ZAhQ6zfqCSzZcsWc/PNN5vIyEhTuXJl6/H69eublJQUj23M6vgvt20yJn1c9a677vL6mSxYsMA6bnT+5vP7OzPGmPfff98EBwebQYMGmfj4eHPu3DkzduxYl7H+jK/xiSeesH4fmbc/+T3+27VrlznvvPNM5cqVzZIlS0xaWpr5448/TNmyZU1wcLCJjIw0MTExpmzZsmbVqlUeX09eEejlUVYdhClTplhfhi5durg9Hx8fb22kMv7XsWNH8/fff+e5TT///LPXDXTnzp1NixYt3OaZOHFirgK99u3bG0lm3LhxLo/feOONRpLp0aNHrtudVaBnjLEGkj3tOGbOnOm28UhMTDTGGKvDctFFF5kbbrjB/PPPP8YYY06fPm1atWplJJnWrVu7LC8lJcW0bt3aVKpUyS0Mc4YoJUqUMCdPnrQez27H/c8//3jdcCYmJprzzz/fnHfeeW6DKQcOHLAO0IcOHeoyz+rVq61lXnPNNeb555+32rR06VKrE+fsJObEP//8Y8LDwz2GWb/99pu1vh9//NHj/NntHLKS1bxvvPGG9fwdd9xhDh8+bBYtWmQ6duxo3n77bWNM+qBoZGSkWb16tcu8KSkppk6dOkaS6dq1q/W48zO79NJLXab/7rvvrMEt5/co8zyZP+djx46ZI0eOmMsvv9xI6QOEvXr1sgbakpOTrcHDsLAwM3DgQPPcc8+ZU6dOGWOMWbt2rdXBeOKJJ1yWnZvXlZiYaJKTk60dYLt27UzPnj3N7t27jTHGHDp0yNpuefqd5jXQy802IT9tdDgcpl27diY4ONgsX77c5bkjR46Y0qVLZ7kd8WTXrl2mbNmypnPnzm7PVapUyeM24s477zTBwcFm3bp1Lo+npaWZyy67zOp8OkP4zO9Hu3btPLZl6dKlpnHjxi6dVue2sVevXi7TvvXWW0aSqVSpkttyunbtaiSZhg0bmt69e5vU1FQzfvx4c/nll7v8vi666CKP29UdO3ZYv7fk5GTr8ePHj1udMWcI7pRdoPfEE0+Y1q1bu70nc+bMsebLGHI0aNDAdO/e3W05zz//PIEeClzGcGvRokX5WtYff/xhgoKCXMJ2pw8//NDaD/z111/GGGPt9x9++GEjycTFxZmuXbuaX3/91doWDB482EgyoaGhbuHEJ598YiSZIUOGuK3P2Xfy9LvMql9iTPb7g1tvvdXr9tbZpvfff9/tOecBcmxsrHUyinNf261bNyPJNGjQwHTp0sUsWbLEGJO+v3Nu1zxt87KS2+11fvej2clqIOTFF1+0nh88eLDb83v37rVOOsr436233mq2bduW67YYY8zQoUONJFOrVi2v0zgHTqpUqeLy+N9//221YdOmTTla39ixY12OefLD4XCY9u3bm+joaJdQ1pj0gUdnH+nmm292mzevgZ4x6YOOzv6Bp0Dv6aefNpLM66+/7tZe53cu83pPnz5t6tSpY9577z235d19991GkqlYsaJLvzSn+3qnjMeIGzZs8Pi6ASCQ2HG8zunVV181pUuXdunXDRw40FpP5mOtzA4ePGjKly9vqlat6jZmNWvWLJeB6cycY2Se+iLOINPTfB999JHHsZBRo0YZSS7jY8akn2BTvnx5t+V462Pu3bvX/PDDD1bbe/ToYV588UVrzGTJkiVWmHHLLbeYDh06WCFMWlqauffee40kExISYs3jdPvtt5tbbrnFrS3Ok3iDgoLMqlWrzLlz50xaWprLybi33367mTp1qtVXHD16tNf+T0EGehs2bLCOvS+++GKP03fr1s1ccskl1t9ZfeeNyXq82Jjsx/O8jR8YY8ykSZOMJNOmTRuXx/fv32+FLJMmTXJ5Li99zOz6cDn9rI1JH6eLjo42jz76qNv0ffr0yVWg5zxx6osvvnB5POM4asaxWedv2FNouW7dOitEevfdd40x6d/xpKQk8/3331vL69q1q3n33XdNUlKSMSa9ECC7bUhWn3Fu2+SUcZvjiTNsdP7m8/s7mzVrlgkKCjLXX3+927qefPJJr68xISHBOuE14/Ynv8d/zhMJM4+HOsfsYmNjc11ok1MEennk/ECbN29udu/ebRwOhzl9+rQZO3asCQ8PN5L7mb8ZpaWlmXfffdeq+nL+FxwcbO677z63HWJObNiwwesGun79+iYqKsrs37/f5fHU1FRz77335ngdzjMzMp/F/sQTT+T5AD27QK93795edxxZbdBvu+02I6VXxGQ+Q8HZIcl81pBzJzx8+HC35X333XcmNDTUVK9e3SV8y27HnZiY6HWj4hzA8TT4Z4wxL7/8svW92Lp1q8dlfvTRR27zOSsUczP47ey0/vLLLx6fd55dU6tWLbeBeWN8F+hl3AnOnj3b4/zdu3d3C16cnGFacHCwdca7c4fbrVs3l2k3btxorevff/91eS67z9k5MNawYUO3cHbz5s3WcidMmOA2r/NsphtuuCFfr8sYYy6++GIjpVd2ZjZ8+HAjyVxwwQVuz+U10MvLNiEvbXS+/9dee63Hdtxxxx1Zbkc8cW5bnGe+Z/S///3POmBwWrhwYZad6sWLF3v9nOfPn291IjP+lp369OnjFsA7v1MPP/ywy+O//vqrkdIH+DNzDpiXKVPGOqvKE+f2MfN2dd26dVbHI7OKFSsaSeazzz5zeTyrQO/w4cOmZMmSHk8uOHv2rDVfxt9ieHi4Oe+889zCi2PHjrmdFQbkV8azA3MaTHjicDhMvXr1jOR5wNzhcJj69etbBwoZvf/++9bv7uDBgy7PZdx/ZBxEio+PNzExMSYkJMTs27fPbX2///67199lVv0SY7LfHzz++OMet7enT582MTExJjQ01CQkJLjNd+bMGavfe/fdd3tcZr169dwGYjKevHXixAmPbcosP9vrvO5Hs+Nc33XXXWf2799vHA6HOX78uBkxYoR1ItYVV1zhdkKR07lz58xzzz1nHWc4/ytRooR5+umnzblz53LVHmd16pVXXul1mh9//NFI7hV1GbffOQ3CX3rpJWuevASiGTkHYz2dhGaMMVOnTrXWNWfOHJfn8hPoGfPf9yPzgOfWrVtNaGioKVOmjMeKx48//tjjeseMGWNCQ0PdvvfGGPPBBx9Y82TsZ+V0X++UsX+b234eABRFdhyvMyZ9/K1mzZrmgQcecHk8Y4jhaaA6I+cx7OjRoz0+77wKkKdgznlSlqexNeeJup7m8zYW4gzSPJ307enqEln1MU+dOmW9B5nDH2OM6dmzp5HST/7KXO20a9cua17niXPGpJ88LXkOODLuGzMeb//yyy/W45s3b3aZ58yZM9axw3fffefyXEEGesYYq7pLkttVg7Zu3WqCg4PNV199ZT2WXaCX1XixMdmP53kbPzDmv1DD0/ijs7rz6quvdnk8L33MrPpwuf2sDxw4YCTPJ2OvW7cux4Ge85isatWqbkHYyZMnTe3atU1wcLCZMWOG9bizAtPTCZDGGHPPPfcYSSY6OtolDMr4GXoaw3Je3c5b27P6jPPapuz61d5+83n5naWmplon7WU+yd+Y9N9FVq/RGdp52v7k5fhv9+7dHo/TjUk/Id753NSpU92WWRC4h14+HTp0SPfff78aNGigqlWr6rnnnlOLFi30+uuva/ny5YqLi/M4X3BwsIYMGaItW7bonnvuUXBw+kfhcDj04Ycf6qKLLtK+ffty1ZaSJUt6fa5+/fo6ffq02rZtq5kzZ1qPh4SE6MMPP8zxOiZPnqyJEye6XC/8+PHj2rlzp6T06xXbhfO607Vr11ZoaKjLc9WrV5f0301BnZz39rj44ovdltetWzedPHlSO3bsyPK9zszbtMYYTZgwQZJ0wQUXeJymV69ektK/F862Sf+9Nkk6//zz3ebz9vq82bVrl3U98uzasnPnTi1atChHyy0IJUqUsP7t6X49ycnJ+uWXX7Rq1SrrOtAZ//vxxx8VHh6usLAw63rS/fv317hx41yui+1wOPT3339bf+f2u+y8x19cXJzbZ57xWvO1atVym7dKlSqS5HIfuLy8Lum/70ZBfC9yIi/bhLy00Xk/gI4dO3psR506dXLV7uTkZH3zzTeSPP/eX3vtNZ06dUpfffWV9dj48eMlef+NXHrppdZnPXnyZJfn2rVrpwsvvFDGGL333nsuzx0/fly//fab7rzzTpfHn3zySX344Yd6+umnXdq9bt06SZ7fW+fvpVmzZipfvrzHdkret0tNmjTR119/rV9++cXl8TVr1ljry81v49dff1VSUpKGDh3q9h2uVKmSwsPDFR4e7nId//r162vPnj1q166dy72AypYtq1dffTXH6wZyIuNvwdM9UnJqwYIF2rp1q8LCwtSwYUO354OCgtSjRw9r2t27d1vPObeJMTExqlixost8zm2i5LpdnDhxohISEtSoUSNrH5JRVtvE3PRhcjP/N998o4SEBNWqVUulS5d2ez4yMtK6b/NXX33lcg8753tQpUoVRUVFuczn7T3ISn62177ej27dulV9+vRRvXr1VKNGDY0dO1bt27fXuHHj9PvvvysiIsLjfCVKlNDzzz+vDRs2qHv37tbjycnJeumll3TllVfq5MmTuWqHlH5/Om+uvfZaTZw40e2+Ec77xEg53ycU1G9Nyv7z7d69u7W+zJ9vfnn7/o8dO1apqalq27atx2m8/Sa/++47paWlqVq1am77yccee8zaT2bs6+V0X+9UtmxZ69/e7uUJAIHITuN1Uvo94Xbt2qXBgwe7PH7hhRfqkksukST98ssv2rFjh8f5jx49qs8//1yS9+Pi2rVre11/fvuAmTnvX9ajRw9rP+jk7V7p3jjHUyTpvPPOc3ve2W+rWLGiy7SSXPrCGcdUnPdNu/XWW932sZdccom1j3WOXUhZj7VFRkZa+9SCHFPx5H//+5/179dee83lubfeeks1atRw6Q9mx1f9fyn9vmuS3O6jJv33fdy7d6/L4wXZx5Ry/1nHxcWpTJkyWr58uTp16qRNmzZZy2rSpIkefvjhHK33p59+UkJCglq1auX2+qOjo7Vt2zYlJCTohhtukCSdOXNGX375paTsx15PnTql77//3no8u3HgatWqWfPlRn7alFd5+Z399NNP2r59u0qXLq2LLrrIbZnZjQlm9R3Oy/Gf83svuX/3y5QpY923MPN3v6AQ6OVTvXr19OOPP2rz5s2Kj4/XkSNHtGTJEg0dOtRtJ+NJXFycxo0bp7///tslrNi8ebN69uyZq7Z42ng6jRgxQjExMdqxY4c6d+6syy67TD/99FOuli+l39iyd+/eCgkJ0ZIlS3THHXfo1ltv1bFjxySlh1R24ex0eeIcLMl8g1lnoJN5MCnjfJnDwex4+1z+/fdfa2cSExPjcZqaNWuqQoUKkqTVq1dbj2f12pztlGTddDg7CxcutD47b23JGHpkbIuvZfW9ltIHJpKSktS9e3fFx8e7/XfmzBklJSUpKSlJrVq1kpT+/txzzz2qUaOGDh8+rBEjRqhNmzaaO3eutdzcfpez+kwyhpKehIWFSXL9vPLyurJrR26/FzmRl21Cbtt45MgR6zvn6UbcUvbfk8y2bNmiM2fOSPL+e3feGNlpwYIFkrz/RiRZHQtPv5EHHnhAUvqNiTMeaIwfP149evSwbgjsVLZsWd17770qV66cdu7cqf/9739q166d1qxZ43X9OX0fsprulltuUZs2bZSUlKRPPvlE7dq1c7nBem5+G87w8ZtvvvH4PXZ+hzOG6a+++qrCw8P1119/qXXr1urSpYsWLlyY43UCuZFxAODw4cN5Xk5Otg/e9qM52SZKrtvF33//XVLetom53V7mdP7cvAdJSUkuB855eQ+ykp/tta/3o23atNHMmTO1bds2nTx5UocOHdKcOXN0zz335KiPWbt2bX377bdasGCBmjdvbj2+ZMkS3X///Tlux4kTJyRlHeiFhISod+/eatKkiU6ePKm33npLbdq0sQ76pZzvEwrqt+ZwOLR48WJJ3j/fkiVLqmnTppIKvs/q7fuf19/kunXrFBcX53EfeerUKWs/+eijj2a7LG8yHpMeP348V/MCQFFmp/E6SRozZow6dOigBg0auD133333SUrfz73//vse5583b551Ukxe+oDZjSPl1oABA9SkSROdOXNGQ4YMUb169TR27FglJSXlelnZtS2rMRXneIrk2kdzHouuWLHCbR+bkJBg7WMzBhQFPdaWV1dccYVatmwpSfr555+1ceNGSen78YkTJ+rhhx9WSEhIjpfnq/6/9N9J6xmDUSdnPzHzSYsF2ceUcv9ZBwcH6/XXX1dwcLBmz56tJk2aqGfPnlq7dm2O1yllP4YcFBTk8txff/1ljQV568dmDAd9OQ5cEG3Kq7y8Fmdfu0aNGh6/j9l9x/O6bfT2vtasWdNaZm6++wWFQM8mmjVrptmzZ+vjjz+2dkYLFy4ssEqoCy+8UKtXr9aNN94oKf2gv2vXrrriiitczhLPifXr1+vKK6/UyJEjNWzYMM2ePVtt27YtkHb6W0JCgqT0M598LeMZXYmJiV6ncw6AZDyT3R9tyTgQ48u25FZ8fLwk5foMubNnz+rxxx9X27Ztdf7552vx4sV68sknfdDCvMnr6/IHX28TMlZvZReO5pTzty7l/Pfu/Czy+nvt1auXypcvr5MnT2rSpEmS0nfy48aNcztL0+n48ePq37+/brzxRl111VVaunSpBgwYkKP25sf48ePVqFEjHTp0SD/++KMmTJjgtZOalbx8jzt16qQVK1bo8ssvl5Re5deuXTt1796dgUgUOOfZ0JK0bdu2PC8nN9sHKf/7UedBQ0FtEwtCYb8HBdUWO/VpcuPyyy/XypUr9eKLL1oHk1OnTtWePXtyNL/zdWc+uS2ztLQ0jR49WhdeeKHCw8M1Z84cjRkzJtftzfhby1htlluHDx+2BjPt9Pnm9TcZHx+vY8eO5WnwM6fyEooDAP5TEON1a9as0fz587Vs2TKPV+B56KGHrP35hAkTdPbsWbdlZBw0tkMfMDo6WsuWLdPQoUOtq64MGTJEjRo1sq4A5U9FaUzFk6FDh0pKHzN44403JEkffvihwsPD1b9/f382zYUzjJ45c6YOHDjg8tyff/4p6b8Kr4wKqo8p5e2z7tevn+bMmaNmzZopLS1NX3zxhZo3b66BAwfmuF+W2zHknIy9RkVFWVc7KYx+rB3b5Indjn8rVapkZSwTJ050ec5ZmRkdHe1yNbOCRKBXyB5++GGXgeTMBgwY4FIJsWLFigJbd82aNfX9999r2bJl6tChgyRp/vz5atu2rXWWbnamT5+uiy66SG3atNGPP/5onf0aKJxnKS9dujTL6ZzVR/mRsRrHU5rv5DwIz3jJqYKWk7ZkHAzwZVtyy3lm3apVq7IsLc9c8XXRRRfpl19+0bJly9SzZ89cV176Wl5elz8UxjYh42Cjs6OWXxkrErL6vZ86dUrJycmS/vud5PX3WrJkSd1zzz2SpHfffVfGGP3666+qU6eO6tWr5zb9li1b1KxZM+3cuVMrVqxQly5d8n1mXXYcDod69uyphx56SN98842eeuqpLCtcsuP8Hs+bNy/L6TJ/j5s1a6YFCxZo5syZ1pmJ3333nTp06JDvS7UBGd16663WvzNfajY3nNuHxMREr9VHBbkfdW4XC2qbWBCc78Hu3bu9nlFbWH2J/G6v7aRfv35e38+QkBA9/fTTeuyxxySlD/g4B06y4zxJI6tQ7OzZs+rQoYPeeecdzZkzR4MHD/Z6SdDs1K5d29qe79+/P89n99qp/5xRXn+TkZGRSk1NtaoOvclPfy/joJTz8j8AAHe+HK9755131KhRI506dcpjVXZCQoJ1mcUTJ0643HLFyRfHxflVqlQpvf7669q6dasGDhyokJAQ7dy5U9dee222+zZfy+uxqF3ceuutqlGjhiTps88+0+7du/Xee+/p3nvvdbu6jz/deOONGjFihJKTk9WrVy/t2rVLZ86c0ejRo7V48WJ1797d7aTkguxjSnn/rNu3b6/Vq1fryy+/VL169eRwOPTxxx/rlltuydF6neNKK1euzPISoc7Az479WDu2yRM7Hv+OHz9el1xyiWbMmKHXX39dp0+f1q5du9S/f3+FhYVpwoQJObo8fl4Q6BWy1NRUzZ8/P8tpBgwYYP2gCqok3jmILKWfIfvHH39oypQpCg0N1b///quPP/4422UcPHhQd955p0JDQzVixIgCaVdOOIOW7M4gLojLfTrve/PFF19Yl+PL7Pvvv892J5ETDRo0sD7nrC4n5wxzrrzyynyv05uMl2z01hZnO4KDg9WuXTuftSW36tatq5CQEJ09e1YffPCB1+leffVV674hAwcO1D///KOnnnrK5b4idpKX11XYCmub4OzESv9dSiG/6tata51dmdX1/Z977jnroM75O1m2bJnXzlp2v9fBgwcrNDRUmzdv1qxZs/T+++9ryJAhHqft0aOH9u3bp5dffrnA73fgzbvvvqsvvvhCd9xxh1q0aJHv5Tnvq/DNN994rQZ3OBy69957rb8z7q+uueYarVy50rp33urVq63r4wMF4brrrlPjxo0lpV/GIzdndf7777/W5ctzsx+NiYlxuVRiXji3i+vXr8/XcgqS8z04c+aM/vrrL4/TON+D+vXrq3Llyj5vS36213Zx+PDhbPd9Ge/zkdNjB+f9abz1d6X0e7nOnz9fDzzwgNdLe+XG448/bv37008/zdW848aNk8PhUHR0tHV/C3/3nzNy/iZz209x7iedZ957snTpUuu+23mR8cSwSpUq5Xk5ABDofDVed/ToUU2bNk1PPPFElidoPvzww1b1Seb7rku+OS52ysm4W+Yxt8cff9waXK9evbo++ugjLV++XFWrVlVycrJefvnlAm1jbjn3sZ988onX+wyfPn3a5bLWdhIaGqqHHnpIUnpVVJcuXXTs2DE9+OCDfm6ZuyFDhqhly5aKiIjQxRdfrPPOO0/ff/+9PvjgA3399dduv5WC7mPm9rOOj4+3TogLCgrSbbfdpvXr11vv7c8//5yjwN45hnz8+HGv4xRnz561rgbmPLlNsk8/Nj9tylgYkZttR144t387d+50uYWNP5UtW1bPP/+8mjZtqmnTpqlatWq67LLLFBcXpyVLluQ4GM4LAr08ys+XMavBecm1U1BQl637888/XS5bJ0l33nmnda+NrFJ4p4ULF1pl/96u1Zxd6OaJ8wwJb++p84yHgwcPuj2XcYDYWUWTH85y2cOHD1sb94wOHjyo5557Tp07d7Yec35eub1UTlhYmFV2/vvvv3t8fcnJydq+fbvKli1r3UTVF1q3bm3tADPflNbJec3uq6++WlWrVnV5LuNZLnn5bTg7tXm53FB0dLTat28vKT18yXgfPKetW7dqxowZqlu3riRp1qxZkrx/jyX373JeP+e8ysvryo+8vD5fbRMyq1Spki688EJJ6RWBWS0zp2fXRUZGWjcS/+WXX1yu1e60YMECbd682bqPZe/evSWlnzH5448/elyu83fSp08fj89Xq1ZNN910kyTpqaee0qZNm9SlSxe36Y4cOWJdjz0339P8ys9vQ3L//nTp0kUhISFKSkrSbbfd5vGM17feesu67r4k/fbbby4DzEFBQXrssces7XNO9ldATgUHB1uXT0pMTLTudZmdxMRE676WknTDDTeoTJkykqTJ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9erVs8atXn31Veu3OHv2bOvkBCl9vF76L6TNy2vp2rWrFbY+88wzbrfCyur4V8r6O5yX4z9jjPr27WtdOn/dunXatGmTtmzZou3bt2v//v2+vV2MQa4kJyeb999/30gykkxYWJj5/fffjcPhyNH8999/vzVv586dzW+//WbOnDljjDHm4MGDZtSoUSYiIsK0bdvWxMfH57hdDofDPPvss9ayn3/+eZc2XXDBBUaS6dmzp9m9e7cxxpg1a9aYGjVqmIsvvtgkJSVlu47Tp0+b6tWrW+uIi4szUVFR5o477jAjR460Hq9QoYL56KOPctTuLVu2mKpVqxpJJjg42Pzyyy9u0xw9etTExsYaSSYoKMhUq1bNREREmIEDB5o5c+ZY642JiTEDBgwwqampZt++fSYuLs5IMtWrVzf79u2zlpeWlmYeeugha75Jkya5rG/58uWmTJky1vMZ/+vVq5dJS0tzmX7Pnj0mNDTUSDIRERGmXLly5t1337WeHz9+vDV///79TWpqqsv8S5YsMTExMUaSefTRR82JEyeMw+EwP//8sylbtqx59tln3d6TTz75xFrmwIEDXZZ55MgRU6tWLSPJVK1a1ezfvz9Hn4Uxxrz77rsmODjYREREmAkTJpjk5GRz9uxZ8/rrr5vSpUubH374wW2e1NRUM3z4cKs911xzjUlISMjxOo0x5pprrrHmr1atmrnkkktMamqqSUpKMn379rWee/TRR825c+c8LuODDz4wwcHBHj+3Rx991GXaRx991HquZMmSpnLlyqZWrVpm3rx5Lt+nDh06mOTkZGNM1p9zfHy8adq0qZFkSpUqZTZs2OCyvk8//dRa7uDBg61lGmPMiRMnTIsWLYwkExUVZdauXZvn17VhwwZTokQJI8k0b97c5XM4d+6c6d69uzXvvHnzXOYdOHCg9VyVKlVM3bp1s/0c87JNyE8bhw0bZm0rXnjhBXPq1CmTkpJixo8fbypUqGAkmdDQUDN16lTz008/Zdl2p48++sgEBQW5vbfBwcHm/fffd5v+8OHDpnHjxkaSufrqq822bduMMcasX7/eNG/e3Fx33XXm1KlT2a63RYsWJiIiwhw7dszrNBnfi+joaFOhQgXTvHlzM2PGDOvxsmXLmjvuuMMYk76tbNasmdX+r776yuO+ad++faZSpUrWZ51x+/jDDz+4vAfVq1c3UVFR5vPPPzcXXnihkWTCw8NNvXr1zJ49e6z5zj//fGueKlWqmJtvvtl67syZM6ZDhw4ev8NRUVFm8eLFLu1zbg8feughc/jwYWOMMfPnzzcxMTGmW7du2b63QF7NmjXL2n82atTIvP/++2bXrl0mNTXVpKWlmd27d5s33njDdOvWzWzZssXjMh5//HEjyZQrV87MmDHDpKWlmZMnT5qhQ4eauLg4s3TpUpfpz549azp27Gj1cebPn+/y/DfffGP9Xpx9HKdly5ZZv5crrrjCbNq0yRhjzOrVq83ll1/u0vf48ssvre1tdv2SrPYHCQkJpkmTJkaSiYyMNP/884/LvGlpaaZnz55GkqlZs6ZZsGCBcTgc5vDhw6ZXr16mbt26ZvPmzS7zxMfHW8uMiopy24e+8cYbVnteeOGFHPe587K9zs8+ypuzZ8+69JPKli1rVq1alaN5jTHmuuuuc+mHLly40CQlJRmHw2H27NljHnvsMRMcHGxuvvlml/5Fdo4cOWL1a5zvTWZjxoxxOeapVq2aKV++vJk9e7bVN4+KijLNmzfP1XHLyZMnzX333WeCgoJMeHi46dOnj1m8eLG1jFOnTpk5c+aYu+66y4wcOdLjMjIeQ9xxxx1Wf3fx4sWmRo0apn///iYlJcVlntTUVJd+5QcffODWLud3sWTJkuavv/5yeX79+vUmIiLCSDLNmjVz6yfNmDHD+v7ceuutZu/evcaY9H2Ys58oyTz11FNm6tSp1jHF0qVLvR57XHbZZSYxMdFaR0739Rm99NJLRpK58cYbs5wOAIo6u43X7d+/33Tu3NlIMn379nXZnnszadIkl/3AY4895rK/OXv2rLnyyiutPsWXX35pUlNTzYkTJ8zQoUNNZGSkkWTq1KljZsyYYVasWGHN27t3byPJ9O7d2229GftAwcHB5rzzzjMlSpQwL730kst4RqVKlcywYcOMMcYaV2vRooVZtmyZ9T516tTJlC9f3q2/nFUfc8KECdZz99xzj0v/9MSJE9aYZkxMjFv/c/LkyS795Yz9ocOHD1vzZv6vUqVKLv3S1NRU06dPH+v5KVOmuKxn6dKlJiwszPp+ZBxHzW5c0Ju0tDTz448/mtDQUFOnTh2zdetWt2n+/fdfExYWZq655hq351JSUsy4ceOsNoeGhpqZM2e6fOezGy82xvuYnDFZjx8Y4zq+5u2/li1buhzn5KWPefbsWVO6dGlrnooVK5qhQ4day8zNZ33ixAkjyYSEhJiXXnrJJCQkmLS0NPPtt9+asLAw89BDD2X72TklJiZ6He+oVq2ax890+vTpJjw83AQHB5vRo0ebM2fOmJSUFDN58mQTFRVlxo0b5zK9w+EwzzzzjLXcl156yeUz3LZtm/W+XXDBBS7bjJyO2ea2TU533nmntezY2FgTFxdn6tata3bt2mVq1KhhPdexY0ezcuXKfP3Otm7daqpVq2b1xZ3bt+3bt5tu3bpZy7z++uvN9OnTrb747NmzXV5/xmXm9fgvJSXFyh28/RcZGWnuuusuc/z4cY/vXX4Q6OXCyJEjrS9V5v9Klixppk6dmu0yHnroIfPXX3+ZFStWmFdeecVcddVV1iB4bGysufzyy824cePcDkCzkpqaasLDw93aFB4ebm2AM2/USpcubRo3bmxGjRplzp49m+N1rV271rRt29ZERESY+vXrm/HjxxtjjNm9e7epVauWqVatmpk8eXKOlnXJJZd4/cI/9thjLtOuXLnStG7d2pQsWdI0aNDAfPjhh8YYY+bOnWvi4uLMU089Ze1UXnzxRbdlBgUFmd69e5ulS5daP9SM/9WsWdNlfbt27TJ9+vQxcXFxJjw83DRv3tx6rZ5MnDjRVK5c2VSuXNm8/vrr1uN169Z1W1dYWJjZsWOHy/x79+41gwYNMjVq1DAlS5Y0devWNTfffLNZsGCB27rq1KnjcZl//PGHGTJkiFs4ERQU5DEU9Gbp0qWme/fu1veyYcOGZsiQIWb79u1u086YMcPjdy84ONjExMRkGVZktH37dtOmTRsTFRVlbr75ZnPw4EHz119/mZCQELdlh4aGug32OS1evNhcf/31JjY21pQsWdK0bNnS4/cxMTHR3H///aZ8+fKmbNmyZuDAgebEiRPGGGP69OljoqKiTN++fc3p06dd5vP0OU+aNMlj4Na5c2djjPH4/oSGhprff//djBw50mOYNHDgwFy/rv79+3v8HJ599lnz5ZdfWp3LjP9dccUV1vxHjhwx1157rYmMjDQdO3b02OnwJDfbhPy20Zj0we02bdqYiIgIU7p0aXPVVVeZKVOmmGeffdZUrlzZ3HnnnWbixIluncysLFy40HTq1MlER0ebqKgoc/XVV3v87TklJiaal156yTRp0sRERESYatWqmfbt25spU6a4Bf7eTJw40fTr1y/LaY4dO2Z69uxpYmJiTKVKlcwTTzxhzp49a9LS0kzHjh1NTEyMeeyxx0xKSop55513PG5Pq1Sp4rLMF154weM24oUXXrCmGTt2rKlZs6aJjIw0nTt3tg6Yxo0bZ6KioswVV1zh9v1YuXKladKkiSldurQZMGCA2yC5s40XXHCBCQ8PN2XLljW33HKLx9+yM6DI2Cls3ry5+eijj9yCB6CgJSYmmilTpphu3bqZOnXqmFKlSplSpUqZOnXqmFtuucV8/fXX2f7Of/nlF9OpUydTtmxZExsba5o0aWKefPJJc+DAAZfp5s2b53E/V6tWLWOMsQ5YM+/vMw6ObN++3dx5552mfPnypkSJEqZJkybmscceMytXrjQlS5Y0HTp0MCNHjjQrV640aWlpOeqXeNsfTJo0yWN7+/fv7/YefPbZZ+byyy83MTExpnz58qZ58+Zm1KhRboNfkydP9rgfvOKKK8y+fftMyZIlPfZvc3IimvPzzOn2uiD2UZkNGjTI43vm7O8uXLgw29dw9913my1btpgFCxaYZ555xlx22WWmfPnyplSpUqZcuXLmmmuuMV999VWO3o/MnAfTn332mcfn09LSrP1rdHS0ue2226wD42eeecaUKlXK3HjjjebQoUN5Wv/atWvNsGHDTMuWLU3FihVNaGioqVSpkrnooovMU089ZZ2E6M3x48fN448/burVq2dKlixpatasaa699lqPJ6AdO3bM4zFAyZIlTWpqqvn+++89flYdO3Y0xnj/fmQ+MfDvv/82N954o4mJiTHh4eGmZcuW5sUXXzQ//fSTiY6ONtddd5156623zLp161zm27NnjxkwYICpUqWKKVGihKlTp4557rnnXAZ/c7qvz8w5SJfTk50AoCiy23hdxgHkjPuNV155xes8nvZTzv/mzp1rTXfu3DkzevRoU79+fRMWFmadULlo0SJzxRVXmIYNG5oHHnjAzJgxw5w8edKazxno9e3b1+P6f/vtN9O0aVNTsmRJ06JFC/PNN98YY9JPUK5Ro4YZPXq0yxhPxhPlpfQgq1atWua+++5z6/ca472P6W2Ma+HChebll1/22lc0xnjsK4aFhbn0Ic6cOWNGjBhh6tevb0qUKGEqVqxo+vbta/VpjDFmx44dHr8/JUuWNElJSdbJNJ7GdZy8jQt68+WXX3ocL4qKinLrW911111m1qxZLo+99dZbXr/z4eHhVtib3XixMZ7H5IzJ2fhBcnKy6dKli6lXr56pXr26iY6O9thvjoiIsI458trH/OWXX0zt2rVNuXLlzOOPP+42PpCTz9qY/wK9jL/NsmXLmjZt2pivv/46288us+TkZPPGG2+YRo0amRIlSpgqVaqYIUOGmCNHjnidZ8OGDeauu+4yVapUscbTevfubVavXu0ynbfPsESJEmbLli2ma9eubs+FhISY8ePH53rMNqdtyvye9+/f38TGxppy5cqZAQMGmKNHjxpj0n/bN998sxWEFcTv7NChQ2bw4MGmcuXKJiwszJx//vnmvvvuM7t27TKhoaHm0ksvNc8++6xZsGCBSU5O9hi2hoaGmrlz5+b7+G/Tpk2mXLlypkmTJiYuLs5ERERkOT5ckIKMKYA7EwIAAAAAioydO3eqfv36uvXWWzV16lR/Nwc+kJiYqHLlyqlJkyZauXKlv5sDAPCjPn36aNKkSRoyZIjeffddfzcHAWLBggV68cUX9euvv7pdVtbhcOjUqVPasGGDevfurQceeCDH9ywH7O7+++9Xs2bNrMuuZpSSkqKjR4/qhx9+0KBBgxQfH2/drqMgcA89AAAAAChmatWqpQceeEAzZszI0z2QYX9ffvmlUlJS9N577/m7KQAAP3PWczjvwwzk17///qubbrpJL7zwgsd7RAYHBysmJkZt2rRR165dFRxMDIHA8MEHH2j27NkewzxJCgsLU+XKlXXvvfeqXLlyCgoKKtD180sCAAAAgGJo1KhRatGihZ555hl/NwUFLDU1VS+99JKeeuopXXLJJf5uDgDAz1JSUiRJrVu39nNLECiGDRum48ePKzw8PMvp4uPj9dNPP6lr166F1DLAd+Lj4/X444+rZMmSyu7Cl999951atWql6OjoAm0DgR4AAAAAFENhYWH6+uuv9ccff+j777/3d3NQgB555BG1bdtWzz//vL+bAgAoZP/++6+ef/55rV271nrs0KFDqlevntq1a+fHliGQbNy4UZLUtWtXTZgwQcePH3d5Pjk5Wb/88osuu+wyDRkyROedd54/mgkUqL179+r06dNas2aNunTpogULFig1NdVlmkOHDmnUqFF66KGHNHbs2AJvA/fQAwAAAIBi7OjRo+rVq5ceeeQRXXvttf5uDvLB4XDohRdeUGJiokaOHKmQkBB/NwkAUMgeeeQRvf3224qMjNTYsWNVrVo19ejRQz/++KPatGnj7+YhQCxdulTdu3fXwYMHrcfi4uJUunRpJScn68CBAypRooTGjh2r3r17+7GlQMF65pln9Morr8jhcEj67xKb4eHhSkhI0OHDh3XBBRfo22+/VZ06dQp8/QR6AAAAAFDMpaWl6aOPPlLdunV1zTXX+Ls5yKMRI0bosssuU8eOHf3dFACAn2zatEn9+vXT33//rcjISF155ZV64YUX1KhRI383DQHm1KlTGjdunGbMmKH169fr1KlTKl26tOrVq6fOnTtr8ODBiouL83czgQK3bt06ffjhh5o7d6527dqltLQ0VahQQRdddJFuu+023X777T67bySBHgAAAAAAAAAAAGBj3EMPAAAAAAAAAAAAsDECPQAAAAAAAAAAAMDGCPQAAAAAAAAAAAAAGyPQAwAAAAAAAAAAAGyMQA8AAAAAAAAAAACwMQI9AAAAAAAAAAAAwMYI9AAAAAAAAAAAAAAbI9ADAAAAAAAAAAAAbIxADwAAAAAAAAAAALAxAj0AAAAAAAAAAADAxgj0AAAAAAAAAAAAABsj0AMAAAAAAAAAAABsjEAPAAAAAAAAAAAAsDECPQAAAAAAAAAAAMDGCPQAAAAAAAAAAAAAGyPQAwAAAAAAAAAAAGyMQA8AAAAAAAAAAACwMQI9AAAAAAAAAAAAwMYI9AAAAAAAAAAAAAAbI9ADAAAAAAAAAAAAbIxADwAAAAAAAAAAALAxAj0AAAAAAAAAAADAxgj0AAAAAAAAAAAAABsj0AMAAAAAAAAAAABsjEAPAAAAAAAAAAAAsDECPQAAAAAAAAAAAMDGCPQAAAAAAAAAAAAAGyPQAwAAAAAAAAAAAGyMQA8AAAAAAAAAAACwMQI9AAAAAAAAAAAAwMYI9AAAAAAAAAAAAAAbI9ADAAAAAAAAAAAAbIxADwAAAAAAAAAAALAxAj0AAAAAAAAAAADAxgj0AAAAAAAAAAAAABsj0AMAAAAAAAAAAABsjEAPAAAAAAAAAAAAsDECPQAAAAAAAAAAAMDGCPQAAAAAAAAAAAAAGyPQAwAAAAAAAAAAAGyMQA8AAAAAAAAAAACwMQI9AAAAAAAAAAAAwMYI9AAAAAAAAAAAAAAbI9ADAAAAAAAAAAAAbIxADwAAAAAAAAAAALAxAj0AAAAAAAAAAADAxgj0AAAAAAAAAAAAABsj0AMAAAAAAAAAAABsjEAPAAAAAAAAAAAAsDECPQAAAAAAAAAAAMDGCPQAAAAAAAAAAAAAGyPQAwAAAAAAAAAAAGyMQA8AAAAAAAAAAACwMQI9AAAAAAAAAAAAwMYI9AAAAAAAAAAAAAAbI9ADAAAAAAAAAAAAbIxADwAAAAAAAAAAALAxAj0AAAAAAAAAAADAxgj0AAAAAAAAAAAAABsj0AMAAAAAAAAAAABsjEAPAAAAAAAAAAAAsDECPQAAAAAAAAAAAMDGCPQAAAAAAAAAAAAAGyPQAwAAAAAAAAAAAGyMQA8AAAAAAAAAAACwMQI9AAAAAAAAAAAAwMYI9AAAAAAAAAAAAAAbI9ADAAAAAAAAAAAAbIxADwAAAAAAAAAAALAxAj0AAAAAAAAAAADAxgj0AAAAAAAAAAAAABsj0AMAAAAAAAAAAABsjEAPAAAAAAAAAAAAsDECPQAAAAAAAAAAAMDGCPQAAAAAAAAAAAAAGyPQAwAAAAAAAAAAAGyMQA8AAAAAAAAAAACwMQI9AAAAAAAAAAAAwMYI9AAAAAAAAAAAAAAbI9ADAAAAAAAAAAAAbIxADwAAAAAAAAAAALAxAj0AAAAAAAAAAADAxgj0AAAAAAAAAAAAABsj0AMAAAAAAAAAAABsjEAPAAAAAAAAAAAAsDECPQAAAAAAAAAAAMDGCPQAAAAAAAAAAAAAGyPQAwAAAAAAAAAAAGyMQA8AAAAAAAAAAACwMQI9AAAAAAAAAAAAwMYI9AAAAAAAAAAAAAAbI9ADAAAAAAAAAAAAbIxADwAAAAAAAAAAALAxAj0AAAAAAAAAAADAxgj0AAAAAAAAAAAAABsj0AMAAAAAAAAAAABsjEAPAAAAAAAAAAAAsDECPQAAAAAAAAAAAMDGCPQAAAAAAAAAAAAAGyPQAwAAAAAAAAAAAGyMQA8AAAAAAAAAAACwMQI9AAAAAAAAAAAAwMYI9AAAAAAAAAAAAAAbI9ADAAAAAAAAAAAAbIxADwAAAAAAAAAAALAxAj0AAAAAAAAAAADAxgj0AAAAAAAAAAAAABsj0AMAAAAAAAAAAABsjEAPAAAAAAAAAAAAsDECPQAAAAAAAAAAAMDGCPQAAAAAAAAAAAAAGyPQAwAAAAAAAAAAAGyM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wgR6AAAAAAAAkDCBHgAAAAAAACRMoAcAAAAAAAAJE+gBAAAAAABAwgR6AAAAAAAAkDCBHgAAAAAAACRMoDfC1772tSiVStP+5/bbb8/6PwEAkrJ9+/Y46qijolQqRUdHR+zbt2/C37N///646KKLhv5+/cY3vlGHSSkaex0AVJe9jqzY66gn9zogVQK9EZ555pkZ/f6lS5dWaRIAKIb29va47rrrIiLirbfeinXr1k34e770pS/F+vXrIyJi7dq18dnPframM1JM9joAqC57HVmx11FP7nVAqkqVSqWS9RAp+e///u/YvXv3pK7dtWtX/MIv/EJs3rw5IiK6urri8ccfj9bW1lqOCAC5s3nz5jjppJNi7969cfrpp8fTTz895rV33XVXfP7zn4+IiMsvvzy+9a1vRalUqteoFIi9DgCqz15HFux11Jt7HZAigd409ff3x0UXXRSPPfZYREQsWrQofvCDH8RHPvKRbAcDgER97nOfi3vvvTciIp566qk488wzD7nmsccei/PPPz/27t0bH/vYx+KJJ57wjTc1Z68DgKmx15Eqex3V5F4HpMYjN6dh7969ccUVVwwtBz/90z8dGzZssBwAwDjWrFkz9CnF0c6weO211+KKK66IvXv3xvz58+ORRx7xjRA1Z68DgKmz15Eiex3V5l4HpEagN0UHDhyIX/7lX45/+Zd/iYiI4447LjZs2BDHHXdcxpMBQNqWLFkSF198cUREPPjgg/Hmm28Ovbdz585YuXJlbN26NcrlcvzjP/5jLFiwIKtRaRD2OgCYHnsdqbHXUQvudUBqBHpTdP3118f9998fEREf+chH4nvf+16ceOKJGU8FAPmwZs2aiIjYv39/fP3rXx/69S/+4i/Gyy+/HBERPT098fGPfzyzGWkc9joAmD57HSmx11Er7nVASgR6U/ClL30p/vqv/zoiIo4++uhYv359LF68OOOpACA/PvWpT8UZZ5wRER8cHP7+++/Hb/3Wb8X69esjIuLmm2+Oz372s1mOSIOw1wHAzNjrSIW9jlpyrwNSUqpUKpWsh8iDr371q3HLLbdERERra2t897vfjRUrVmQ7FACFdMMNN0RHR0d0d3dHd3d34c58ePjhh+Oyyy6LiIif/dmfjUcffTQiIi6//PL41re+NXRGAdSKvQ6AevmVX/mVOPnkk6O7uzu6urqivb09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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pgm = daft.PGM(dpi=DPI, grid_unit=GRID_UNIT, node_ec=NODE_EC)\n", "\n", "pgm.add_node(\"z\", \"$Z$\", 0, 0)\n", "pgm.add_node(\"y\", \"$Y$\", 3, 0)\n", "pgm.add_node(\"x\", \"$X$\", 2, 2)\n", "pgm.add_node(\"ps\", \"$PS$\", 1, 1)\n", "\n", "pgm.add_node(\"z1\", \"$Z$\", 4, 0)\n", "pgm.add_node(\"y1\", \"$Y$\", 7, 0)\n", "pgm.add_node(\"x1\", \"$X$\", 6, 2)\n", "pgm.add_node(\"ps1\", \"$PS$\", 5, 1, observed=True)\n", "\n", "pgm.add_node(\"z2\", \"$Z$\", 8, 0)\n", "pgm.add_node(\"y2\", \"$Y$\", 9, 0)\n", "pgm.add_node(\"x2\", \"$X$\", 10, 2)\n", "pgm.add_node(\"ps2\", \"$PS$\", 9, 1, observed=True)\n", "\n", "\n", "pgm.add_edge(\"x\", \"ps\")\n", "pgm.add_edge(\"z\", \"y\")\n", "pgm.add_edge(\"x\", \"y\")\n", "pgm.add_edge(\"z\", \"ps\")\n", "\n", "pgm.add_edge(\"x1\", \"ps1\")\n", "pgm.add_edge(\"z1\", \"y1\")\n", "pgm.add_edge(\"x1\", \"y1\")\n", "pgm.add_edge(\"z1\", \"ps1\")\n", "\n", "pgm.add_edge(\"x2\", \"ps2\")\n", "pgm.add_edge(\"z2\", \"y2\")\n", "pgm.add_edge(\"x2\", \"y2\")\n", "\n", "pgm.add_text(0, 3, label=\"PS is a function of treatment and covariates\")\n", "pgm.add_text(4, 3, label=\"Condition on PS (a Collider)\")\n", "pgm.add_text(8, 3, label=\"PS Adjustment Mitigates confounding\")\n", "\n", "pgm.render();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One nice feature of this set up is that we can evaluate the claim of __strong ignorability__ because it implies that $Z \\perp\\!\\!\\!\\perp X | PS(X)$ and this ensures the covariate profiles are balanced across the treatment branches conditional on the propensity score. This is a testable implication of the postulated design! Balance plots and measures are ways in which to evaluate if the offset achieved by your propensity score has worked. It is crucial that PS serve as a balancing score, if the measure cannot serve as a balancing score the collision effect can add to the confounding bias rather than remove it. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Difference in Differences\n", "\n", "Difference in Difference studies involve comparing the change in outcomes over time between a treatment and control group. The causal DAG for this is given in Chapter 18 of {cite:t}`huntington2021effect`:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "tags": [ "remove-input" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAATMAAAEzCAYAAABdWOReAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAB7CAAAewgFu0HU+AAAbmklEQVR4nO3deXCU9R3H8c8mJCEhkN1AMaYkIExBkgCBcBjRhiPIIFBgoAUrCM5EpDPFIgiKyiVQQKpDWyx1OEwLgigKhOEo9yEqhwMaEWQ4AiEcUhIoOSDHfvsH7mM22c1ukt19nv3t5zWzM2Gf3fBNeHjzXHkwiYiAiMjPBek9ABGRJzBmRKQExoyIlMCYEZESGDMiUgJjRkRKYMyISAmMGREpgTEjIiUwZkSkBMaMiJTAmBGREhgzIlICY0ZESmDMiEgJjBkRKYExIyIlMGZEpATGjIiUwJgRkRIYMyJSAmNGREpgzIhICYwZESmBMSMiJTBmRKQExoyIlMCYEZESGDMiUgJjRkRKYMyISAmMGREpgTEjIiUwZkSkBMaMiJTAmBGREhgzIlICY0ZESmDMiEgJjBkRKYExIyIlMGZEpATGjIiUwJgRkRIYMyJSAmNGREpgzIhICYwZESmBMSMiJTBmRKQExoyIlMCYEZESGDMiUgJjRkRKYMyISAmMGREpgTEjIiUwZkSkBMaMiJTAmBGREhgzIlJCwMVs7969aNq0KYYNGwYR0XscIvKQgIvZxo0bkZ+fj02bNiE/P1/vcYjIQxroPYCv/eEPf8CJEyfw5JNPomnTpnqPQ0QeYhJF97XOnj2Ljz76CDNnztR7FCLyAWV3MxcuXAir1ar3GETkI0rGbMeOHcjMzNR7DCLyIeVitmfPHvz2t7/lmUqiAKNUzN59912MHDkSJSUlAB7saprNZpjNZnzwwQewWq3YsWMHhg0bhl/96lfV3n/9+nW88cYbiI6ORk5ODgBg5cqVSEhIQKNGjfDkk0/ixIkT2uu//vprDBo0CE2aNEFMTAxmzJjhdNe2uLgY8+fPR3JyMqKiomA2m9G/f38cOHDA898I8pri4mLMmTMHCQkJaNy4MSwWC37zm9/g2LFj1V578+ZNLFq0CK1bt0ZmZibu3r2L5557Dk2aNMHgwYNx//597bUVFRXIzMzEr3/9a8TGxqJx48bo0qULFi9ebPc6ALBYLDCZTNqj8l7IokWL7Jb16tXL7r3nz5/HtGnT0KxZM+Tk5KCoqAgvv/wyHn74YURGRqJfv34Ovxa/IApKS0sTADJr1iztuaNHj0r//v2lQYMGAkBatmypLbtz545kZGRIWFiYABAAcuHCBRk/frw0atRIYmJitOebN28uN2/elC1btkjDhg2lRYsW0rBhQ235/Pnzq81z5coVSUpKknnz5smdO3ektLRUli9fLmFhYRIUFCQffPCB978pVG8FBQXSqVMniYyMlK1bt0pFRYUcP35cWrVqJSaTScLDwyUqKkosFoskJydLdHS0tl6sWrVKBgwYIJGRkdpze/bsEZEH61///v2lbdu2cvToURERycvLk5EjRwoASUpKkhs3btjNsnXrVu3zVF1/8vPzpVu3bgJA0tLStOfGjBljt45///330qNHD2natKk0b95ce75hw4ayf/9+r38/PS1gYmYzderUajErLy+XvLw8+fvf/679gY4bN07ee+89uXfvnoiIbNq0SUwmkwCQsWPHyoABA+T7778XEZGSkhIZNGiQAJCHHnrI7vezWq2Smpoqr7zySrVZZs6cqa08eXl5nvsGkFc8//zzAkBef/11u+c3btwoAKRBgwZy7tw57flr165JSEiIAJDHH39cPvnkE8nPz5cXX3xRhg4dKoWFhSIiMnr0aAkKCpLs7Gy7z1tRUSE9e/YUANKjRw8pLy+3Wx4bG+swZiIi06dPt4uZzZYtW7R1fNiwYbJy5UqxWq0iIrJ27VoJDQ0VABIfHy/379+v67dKFwEXs3/84x/VYmaTnZ2t/UEfOHCg2vLU1FQBIL179662Yu3fv197b35+vvZ8VlaWAJAzZ85U+3zbt2/X3rNkyZLaf6HkM/fv39e2wDdu3Gi3zGq1SlRUlMMtc9tW/ZgxYxx+3kOHDgkA6d69u8Plhw8fttu6q6xly5ZOYzZr1iyHMTt37pz2+VavXl3tfXPnztWWr1u3zuFMRqXUMTN3NGzY0OmyiIgI7eP4+Phqy1u1aqUtCw4OtlsWGxurfVxYWKh9vHHjRgBAjx49tON3tsfvfvc7hIWFISwsDBcuXKjT10O+kZ+fj3v37gEATCaT3TKTyYRHHnkEAJCbm2u3LDQ0FADQp08fh5935cqVAIBOnTo5XP74449r692///3vug1fSeX19oknnqi2/I9//CPC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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pgm = daft.PGM(dpi=DPI, grid_unit=GRID_UNIT, node_ec=NODE_EC)\n", "\n", "pgm.add_node(\"z\", \"$Z$\", 0, 0)\n", "pgm.add_node(\"y\", \"$Y$\", 1, 0)\n", "pgm.add_node(\"t\", \"time\", 0, 1)\n", "pgm.add_node(\"g\", \"group\", 1, 1)\n", "pgm.add_edge(\"t\", \"z\")\n", "pgm.add_edge(\"t\", \"y\")\n", "pgm.add_edge(\"g\", \"z\")\n", "pgm.add_edge(\"g\", \"y\")\n", "pgm.add_edge(\"z\", \"y\")\n", "pgm.render();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ":::{note}\n", "For our explanation below, we will assume we are dealing with the simplest case of a two-group, two-time period design, the so called \"classical\" 2$\\times$2 difference-in-differences design. \n", ":::\n", "\n", "Our goal is to estimate the causal effect of the treatment on the outcome, $Z \\rightarrow Y$, but now we have _two_ backdoor paths:\n", "1. $Z \\leftarrow \\text{time} \\rightarrow Y$\n", "2. $Z \\leftarrow \\text{group} \\rightarrow Y$\n", "\n", "From a regression point of view, both $time$ and $group$ are binary variables. In this situation, treatment is given to the treatment group ($\\text{group}=1$) at time $\\text{time}=1$.\n", "\n", "The causal effect of the treatment upon the outcome is typically estimated by fitting a regression model of the form `y ~ time + group + time:group`. The interaction term `time:group` captures the causal effect of $Z \\rightarrow Y$. \n", "\n", "We can note that this interaction term $\\text{time} \\times \\text{group}$ encodes the values of $Z$, which as we said above, is equal to 1 for only the treatment group at time 1. So another way to think about the inclusion of an interaction effect is that we are simply conditioning on all the observed data ($Z$, $\\text{time}$, $\\text{group}$, $Y$) to estimate the causal effect of $Z \\rightarrow Y$.\n", "\n", ":::{warning}\n", "Achieving an unbiased estimate is strongly dependent upon the {term}`parallel trends assumption`. That is, we assume that the treatment and control groups would have followed the same trajectory (over time) in the absence of treatment. This is a strong assumption and should be carefully considered when interpreting the results of a difference-in-differences study. In the case of the classic 2$\\times$2 design we cannot assess the validity of this assumption empirically, so it is important to consider the plausibility of this assumption in the context of the particular example. \n", ":::" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Synthetic Control\n", "\n", ":::{warning}\n", "While many texts cover the synthetic control method, they typically do not provide a causal DAG-based treatment. So this section is pending - we hope to update it soon.\n", ":::" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Regression Discontinuity\n", " \n", "The regression discontinuity design is similar to the interrupted time series design, but rather than the the treatment being at a specific point in time, treatment is based on a cutoff value $\\lambda$ along some running variable $RV$. This running variable could be a test score, age, spatial location, etc. The running variable may also influence the outcome $RV \\rightarrow Y$. The running variable may also be associated with a set of variables $\\mathbf{X}$ that influence the outcome, $RV - - - - \\mathbf{X} \\rightarrow Y$." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "tags": [ "remove-input" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAm4AAAFFCAYAAABVK2F7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAB7CAAAewgFu0HU+AAA+BElEQVR4nO3dd3RT5f8H8Hc6aOmggyK0tpSChbLLnjIEFFGGgKCgIBsFEUQQEBkHB4oooIAKSFEQRRyALBkiUBAEGS2bIntji9Dd5PP7g1/ut2mSNk2Tpjd5v87JOem9z715bnLz6Ts397nRiIiAiIiIiEo8N0d3gIiIiIgsw+BGREREpBIMbkREREQqweBGREREpBIMbkREREQqweBGREREpBIMbkREREQqweBGREREpBIMbkREREQqweBGREREpBIMbkREREQqweBGREREpBIMbkREREQqweBGREREpBIMbkREREQqweBGREREpBIMbkREREQqweBGREREpBIMbkREREQqweBGVAzS09PRrFkzhIeH4/jx447ujlNLT0/Hl19+iZo1a2LatGmO7o7Lu379OmJiYlC9enXcuHGj2B535MiRCAgIwMqVKwu9bGJiIsLDw9G8eXOkp6fboXekd/36dUyZMgUPPfQQduzY4ejuqAKDWyFs3boVr776KsLDw6HRaIxunp6eKFOmDKKiotCqVSuMHj0aGzduRE5OjqO7Tg52/Phx/Pnnn7hy5Qo2btzo6O44rTlz5iA6OhrDhg1jQC6Cb775Bt7e3ibrnEajQbly5SxeV3x8PE6dOoWTJ09i9+7dduy1oWXLluG///7Dt99+W+hlN2/ejCtXrmDv3r3cj+xEq9ViyJAhqFKlCmbMmIFbt245ukvqIVRoFy9eFI1GIwDkkUcekXXr1sm5c+fk33//lTNnzsjq1aulZ8+eSpsqVarI5s2bHd1tciCtVisDBw6Udu3aydWrVx3dHaeVnp4u9+7dk6CgIAEgU6dOdXSXVEur1covv/wibm5uAkAAyNixY+X27duFWs/9+/elW7du0q1bN7l//76demts3rx50rhxY/njjz8KvezVq1elffv2MmDAANFqtXboHYk8eL/Gx8cr+9fvv//u6C6pAoOblR566CEBIK1btzbbZvfu3Uo7Nzc3Wbx4sU370KdPH5uuj4qOr0nJ0KhRIwY3G6lZ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e/dEo9EoBXjFihXKsgsWLLDlJpCTmzRpklEhi4iIMLgExNixY43aVK5cWVJTUx3YcyosV6hHTzzxhBLaEhISCrXsZ599pvR7y5YtJttERkYKAGnUqJEtukvFiLXONpw+uA0dOlR58Y8fP55v20WLFilt33nnnQLXXalSJQEgHTp0kKioKAEeXHCyoOH7RHp///23eHh4GBWqDRs2GLRLS0uT6Ohoo3amLv9AJZcr1KO7d+9K165dJTExsVDLXb16VQICAgSA9OvXz2y7p59+WrlkhE6nK2p3qZiw1tmO0wc3/WF3Hx8fycnJybftlStXlE+tTZs2LXDdTz31lNHOtW7dOlt1nZxcdna2xMbGGu1D5v5p7dq1S9k/9Tc3NzeJj48v5p6TtViPzHv22WcFgISEhMitW7fMtst91CYpKakYe0jWYq2zLacenKDT6ZQTWGvXrg13d/d824eFhSknDO/fv7/AH0nOfUIwADz22GN4+umni9BjciXvv/++0TW9ypcvj08++cRk+5YtWyqXSNDT6XQYNGgQMjIy7NVNshHWI/M2btyIH374AQAwe/ZshISEmG2bd2QplXysdbbl1MHt9OnTSEtLAwDExsZatIz+wrE6nQ7r16/Pt23uQunm5oaPPvrIuo6Syzl+/Djeeecdo+nz589HcHCw2eXee+89VK5c2WDayZMnMW3aNFt3kWyM9ci09PR0jBgxAgDQrl079OvXL9/2DG7qwlpnexqRfK6AR0REREQlhlMfcSMiIiJyJgxuRERERCrB4EZERESkEgxuRERERCrB4EZERESkEgxuRERERCrB4EZERESkEgxuRERERCrB4EZERESkEgxuRERERCrB4EZERESkEgxuRERERCrB4EZERESkEgxuRERERCrB4EZERESkEgxuRERERCrB4EZERESkEgxuRERERCrB4FaCvfDCC/jggw8c3Q0iIiIqITwc3QEyrU+fPli5cqXy95tvvunA3hAREVFJoBERcXQnyJCIwM3N8GDozJkzGd6IiIhcHL8qLYE0Gg2Sk5MNpk2YMIFfmxIREbk4BrcSKjAwkOGNiIiIDDC4lWAMb0RERJQbg1sJx/BGREREegxuKsDwRkRERACDm2owvBERERGDm4owvBEREbk2BjeVYXgjIiJyXQxuKsTwRkRE5Jr4ywkWOH/+PFavXg0AaNas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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pgm = daft.PGM(dpi=DPI, grid_unit=GRID_UNIT, node_ec=NODE_EC)\n", "\n", "# data generating graph\n", "pgm.add_node(\"a\", \"$RV$\", 0, 1)\n", "pgm.add_node(\"z\", \"$Z$\", 0, 0)\n", "pgm.add_node(\"x\", \"$\\mathbf{X}$\", 1, 1)\n", "pgm.add_node(\"y\", \"$Y$\", 1, 0)\n", "pgm.add_edge(\"a\", \"z\")\n", "pgm.add_edge(\"a\", \"y\")\n", "pgm.add_edge(\n", " \"a\",\n", " \"x\",\n", " plot_params={\"ec\": \"grey\", \"lw\": 1.5, \"ls\": \":\", \"head_length\": 0, \"head_width\": 0},\n", ")\n", "pgm.add_edge(\"z\", \"y\")\n", "pgm.add_edge(\"x\", \"y\")\n", "pgm.add_text(0, 1.3, \"Data generating graph\")\n", "\n", "# limiting graph\n", "x_offset = 2\n", "pgm.add_node(\"a2\", r\"$RV \\rightarrow \\lambda$\", 0 + x_offset, 1)\n", "pgm.add_node(\"z2\", \"$Z$\", 0 + x_offset, 0)\n", "pgm.add_node(\"x2\", \"$\\mathbf{X}$\", 1 + x_offset, 1)\n", "pgm.add_node(\"y2\", \"$Y$\", 1 + x_offset, 0)\n", "pgm.add_edge(\"a2\", \"z2\")\n", "pgm.add_edge(\"z2\", \"y2\")\n", "pgm.add_edge(\"x2\", \"y2\")\n", "pgm.add_text(x_offset, 1.3, \"Limiting graph\")\n", "\n", "pgm.render();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see from the data generating graph (left) that the $RV$ is a confounding variable as it influences both the treatment $Z$ and the outcome $Y$. \n", "\n", "If we tried to identify the causal effect of $Z \\rightarrow Y$ by conditioning on the running variable ($RV=rv$), we would eliminate any variation in $Z$ or $Y$ caused by $RV$. And because $Z$ is constant for any given value of $RV$, then the $Z \\rightarrow Y$ path would disappear and we could not estimate the causal effect.\n", "\n", "Identification of the causal effect of $Z \\rightarrow Y$ is done with a limiting graph (right). The $RV$ node is replaced by a subset of the data where $RV$ is close to the cutoff value $\\lambda$, hence the name \"limiting graph\" and the symbol $RV \\rightarrow \\lambda$.\n", "\n", "In the limit, this eliminates variation in the running variable and so breaks the $RV \\rightarrow Y$ path. The causal effect of $Z \\rightarrow Y$ can be estimated by comparing the outcomes of units just above and just below the cutoff value $\\lambda$.\n", "\n", "Readers are referred to {cite:t}`steiner2017graphical` and [Chapter 6](https://mixtape.scunning.com/06-regression_discontinuity) of {cite:t}`cunningham2021causal` who discuss limiting graphs in more detail. Chapter 20 of {cite:t}`huntington2021effect` also covers regression discontinuity designs, but presents simplified (and non-kosher, in his own words) causal DAG." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## References\n", ":::{bibliography}\n", ":filter: docname in docnames\n", ":::" ] } ], "metadata": { "kernelspec": { "display_name": "CausalPy", "language": "python", "name": "causalpy" }, "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.11.4" } }, "nbformat": 4, "nbformat_minor": 2 }