{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "# Python: Group Average Treatment Effects (GATEs) for IRM models\n", "\n", "In this simple example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to estimate group average treatment effects in the [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm) model." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import doubleml as dml\n", "\n", "from doubleml.datasets import make_heterogeneous_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data\n", "\n", "We define a data generating process to create synthetic data to compare the estimates to the true effect. The data generating process is based on the Monte Carlo simulation from [Oprescu et al. (2019)](http://proceedings.mlr.press/v97/oprescu19a.html).\n", "\n", "The documentation of the data generating process can be found [here](https://docs.doubleml.org/dev/api/api.html#dataset-generators). In this example the true effect depends only the first covariate $X_0$ and takes the following form\n", "\n", "$$\n", "\\theta_0(X) = \\exp(2X_0) + 3\\sin(4X_0).\n", "$$" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " y d X_0 X_1 X_2 X_3 X_4 X_5 \\\n", "0 6.114530 1.0 0.925248 0.180575 0.567945 0.915488 0.033946 0.697420 \n", "1 5.580922 1.0 0.474214 0.862043 0.844549 0.319100 0.828915 0.037008 \n", "2 1.278434 0.0 0.696289 0.339875 0.724767 0.065356 0.315290 0.539491 \n", "3 1.794805 0.0 0.615863 0.232959 0.024401 0.870099 0.021269 0.874702 \n", "4 6.178169 1.0 0.350712 0.767188 0.401931 0.479876 0.627505 0.873677 \n", "\n", " X_6 X_7 X_8 X_9 \n", "0 0.297349 0.924396 0.971058 0.944266 \n", "1 0.596270 0.230009 0.120567 0.076953 \n", "2 0.790723 0.318753 0.625891 0.885978 \n", "3 0.528937 0.939068 0.798783 0.997934 \n", "4 0.984083 0.768273 0.417767 0.421357 \n" ] } ], "source": [ "np.random.seed(42)\n", "data_dict = make_heterogeneous_data(\n", " n_obs=500,\n", " p=10,\n", " support_size=5,\n", " n_x=1,\n", " binary_treatment=True,\n", ")\n", "data = data_dict['data']\n", "print(data.head())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The generated dictionary also contains the true individual effects saved in the key effects." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[4.770944 5.4235839 5.07202564 5.30917769 4.97441062]\n" ] } ], "source": [ "ite = data_dict['effects']\n", "print(ite[:5])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The goal is to estimate the average treatment effect for different groups based on the covariate $X_0$. The groups can be specified as [DataFrame](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html) with boolean columns. We consider the following three groups" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Group 1 Group 2 Group 3\n", "0 False False True\n", "1 False True False\n", "2 False True False\n", "3 False True False\n", "4 False True False\n" ] } ], "source": [ "groups = pd.DataFrame(\n", " np.column_stack((data['X_0'] <= 0.3,\n", " (data['X_0'] > 0.3) & (data['X_0'] <= 0.7),\n", " data['X_0'] > 0.7)),\n", " columns=['Group 1', 'Group 2', 'Group 3'])\n", "print(groups.head())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The true effects (still including sampling uncertainty) are given by" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2.906716732639898, 5.223485956098176, 4.827938162750831]\n" ] } ], "source": [ "true_effects = [ite[groups[group]].mean() for group in groups.columns]\n", "print(true_effects)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Interactive Regression Model (IRM)\n", "The first step is to fit a [DoubleML IRM Model](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm) to the data." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "data_dml_base = dml.DoubleMLData(\n", " data,\n", " y_col='y',\n", " d_cols='d'\n", ")" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training IRM Model\n", " coef std err t P>|t| 2.5 % 97.5 %\n", "d 4.482012 0.086889 51.583034 0.0 4.311712 4.652312\n" ] } ], "source": [ "# First stage estimation\n", "from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor\n", "ml_g = RandomForestRegressor(n_estimators=500)\n", "ml_m = RandomForestClassifier(n_estimators=500)\n", "\n", "np.random.seed(42)\n", "\n", "dml_irm = dml.DoubleMLIRM(data_dml_base,\n", " ml_g=ml_g,\n", " ml_m=ml_m,\n", " n_folds=5)\n", "print(\"Training IRM Model\")\n", "dml_irm.fit()\n", "\n", "print(dml_irm.summary)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Group Average Treatment Effects (GATEs)\n", "To calculate GATEs just call the gate() method and supply the DataFrame with the group definitions and the level (with default of 0.95). Remark that for straightforward interpretation of the GATEs the groups should be mutually exclusive." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 2.5 % effect 97.5 %\n", "Group 1 2.701265 3.016315 3.331365\n", "Group 2 5.096550 5.314651 5.532751\n", "Group 3 4.412004 4.668981 4.925957\n" ] } ], "source": [ "gate = dml_irm.gate(groups=groups)\n", "print(gate.confint(level=0.95))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The confidence intervals above are point-wise, but by setting the option joint and providing a number of bootstrap repetitions n_rep_boot." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 2.5 % effect 97.5 %\n", "Group 1 2.441219 3.016315 3.591411\n", "Group 2 4.916528 5.314651 5.712774\n", "Group 3 4.199893 4.668981 5.138068\n" ] } ], "source": [ "ci = gate.confint(level=0.95, joint=True, n_rep_boot=1000)\n", "print(ci)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, let us plot the estimates together with the true effect within each group." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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dM84AQCAG19+fr7y8vKcXQYAJ/P09JS7u3uZXIvgBAAAbhiGYSg9PV1nz551dikAXERgYKCCg4Ov+TdcCU4AAOCGURSaateurSpVqvBj90AlZhiGcnJylJGRIUkKCQm5pusRnAAAwA0hPz/fGppq1qzp7HIAuABfX19JUkZGhmrXrn1N0/ZYHAIAANwQip5pqlKlipMrAeBKir4TrvW5R4ITAAC4oTA9D8Clyuo7geAEAAAAACYITgAAALDb3r171blzZ/n4+Kht27altgE3GoITAACAE1kslitu8fHxFVZL9+7dS6zh0UcftfYZP368qlatqn379mnFihWltl0ri8WiRYsWlcm1gLLAqnoAAACXy8+X1qyR0tKkkBCpa1epjH5E83JpaWnW1x9//LH+/e9/a9++fda2atWqWV8bhqH8/Hx5eJTfX+GGDRumiRMn2rRduuDGwYMH1adPHzVs2PCKbcCNhhEnAACASyUmSo0aST16SH/7W+E/GzUqbC8HwcHB1i0gIEAWi8W6v3fvXvn5+embb75Rhw4d5O3trbVr12rw4MHq37+/zXVGjx6t7t27W/cLCgqUkJCgsLAw+fr6qk2bNvrss89M66lSpYpNTcHBwfL395dUOAq0detWTZw40ToaVlKbJB09elT33XefAgMDVaNGDfXr10+HDx+2udf777+vFi1ayNvbWyEhIRoxYoQkqVGjRpKku+66SxaLxboPOBPBCQAAoEhionTPPdKxY7btx48XtpdTeDLz9NNPa8qUKdqzZ49at25t1zkJCQn68MMP9fbbb2vXrl365z//qQceeECrVq266jrS0tLUokULjRkzRmlpaRo7dmyJbXl5eerVq5f8/Py0Zs0arVu3TtWqVVNsbKwuXrwoSZo1a5aGDx+uf/zjH0pOTtb//vc/hYeHS5I2b94sSZozZ47S0tKs+4AzMVUPAABAKpyeN2qUZBjFjxmGZLFIo0dL/fqV27S90kycOFG333673f1zc3M1efJkLV++XFFRUZKkxo0ba+3atZo9e7a6detW6rkzZ87Ue++9Z9M2e/ZsDRw4UMHBwfLw8FC1atUUHBwsqXAq4eVt8+bNU0FBgd577z3rUtBz5sxRYGCgkpKS1LNnT73wwgsaM2aMRo0aZb3PzTffLEkKCgqSJAUGBlqvCTgbwQkAAEAqfKbp8pGmSxmGdPRoYb9LpsRVhI4dOzrU/8CBA8rJySkWti5evKh27dpd8dyBAwfq2WeftWmrU6eOQ/f/6aefdODAAfn5+dm0X7hwQQcPHlRGRoZOnDihP//5zw5dF3AmghMAAIBUuBBEWfYrQ1WrVrXZd3Nzk3HZyFheXp71dXZ2tiRp8eLFqlevnk0/b2/vK94rICDAOmXuamVnZ6tDhw6aP39+sWNBQUFyc+NpEVx/CE4AAABS4ep5ZdmvHAUFBWnnzp02bdu3b5enp6ckKTIyUt7e3kpNTb3itLzy0r59e3388ceqXbu2dWGJyzVq1EgrVqxQjx49Sjzu6emp/Pz88iwTcAhxHwAAQCpccrx+/cJnmUpisUihoYX9nOxPf/qTtmzZog8//FD79+/X+PHjbYKUn5+fxo4dq3/+85/64IMPdPDgQW3btk1vvvmmPvjggyteOycnR+np6TbbmTNnHKpv4MCBqlWrlvr166c1a9YoJSVFSUlJGjlypI7933TI+Ph4TZs2TW+88Yb2799vra9IUbC6mvsD5YHgBAAAIBUu+DB9euHry8NT0f7rr1f4whAl6dWrl55//nk9+eSTuvnmm3Xu3DkNGjTIps+kSZP0/PPPKyEhQc2bN1dsbKwWL16ssLCwK1773XffVUhIiM0WFxfnUH1VqlTR6tWr1aBBAw0YMEDNmzfX0KFDdeHCBesI1IMPPqjXX39dM2fOVIsWLfSXv/xF+/fvt15j2rRpWrZsmUJDQ02fywIqgsW4fILsDS4rK0sBAQHKzMwsdegYAABcfy5cuKCUlBSFhYXJx8fn6i+UmFi4ut6lC0WEhhaGpgEDrrlOABXrSt8NjmQDnnECAAC41IABhUuOr1lTuBBESEjh9DwXGGkC4DwEJwBApZNz8XdF/vtbSdLuib1UxYv/HOIy7u4VvuQ4ANfGM04AAAAAYILgBAAAAAAmCE4AAAAAYILgBAAAAAAmCE4AAAAAYILgBAAAAAAmCE4AAACXybn4uxo9vViNnl6snIu/O7scAC6A4AQAAHADmjt3rgIDA51dhkPKquZFixYpPDxc7u7uGj16dKltFenvf/+7Jk+efFXnxsfHq23btlfsc/jwYVksFm3fvt2hazdq1Eivv/56mdZSkXbv3q369evr/Pnz5X4vghMAAMBl8gsM6+tNKadt9svD4MGDZbFYim2xsbF2nV/SX37vv/9+/fzzz+VQra2KDmglfU4Wi0ULFy609nnkkUd0zz336OjRo5o0aVKpbdciKSlJFotFZ8+eNe37008/acmSJRo5cuRV3Wvs2LFasWKFdX/w4MHq37//VV3rcps3b9Y//vGPq67FHo6Esx9//FH33nuv6tSpIx8fHzVp0kTDhg2z/lm+PCBGRkaqc+fOevXVVx2q6WoQnAAAAC6xdGeaYl5dZd0fPGezbp36vZbuTCvX+8bGxiotLc1m++ijj676er6+vqpdu3YZVug65syZU+yzKgoS2dnZysjIUK9evVS3bl35+fmV2FaR3nzzTd17772qVq3aVZ1frVo11axZs4yrKhQUFKQqVaq4RC1ff/21OnfurNzcXM2fP1979uzRvHnzFBAQoOeff77U84YMGaJZs2bp99/Ld1otwQkAAOD/LN2ZpsfmbdPJrFyb9vTMC3ps3rZyDU/e3t4KDg622apXry5JMgxD8fHxatCggby9vVW3bl3r6EX37t115MgR/fOf/7SOvkjFR4KKpli9//77atCggapVq6bHH39c+fn5eumllxQcHKzatWvrxRdftKnr1VdfVatWrVS1alWFhobq8ccfV3Z2tqTCUZchQ4YoMzPTeu/4+HhJUm5ursaOHat69eqpatWquuWWW5SUlGRz7blz56pBgwaqUqWK7rrrLp06dcquzyowMLDYZ+Xj46OkpCRrKPrTn/4ki8VSapskrV27Vl27dpWvr69CQ0M1cuRImylfubm5euqppxQaGipvb2+Fh4frP//5jw4fPqwePXpIkqpXry6LxaLBgweXWGt+fr4+++wz9e3b19o2Y8YMtWzZ0rq/aNEiWSwWvf3229a2mJgYPffcc5Jsp8fFx8frgw8+0Jdffmn9zC/9XA8dOqQePXqoSpUqatOmjTZs2HDFz/Ly0aDU1FT169dP1apVk7+/v+677z6dPHnSevzyqXpFo1+vvPKKQkJCVLNmTQ0fPlx5eXmSSv/zebmcnBwNGTJEvXv31v/+9z/FxMQoLCxMt9xyi1555RXNnj271Pdw++236/Tp01q1alWpfcoCwQkAAECF0/MmfLVbJU3KK2qb8NXucp+2V5LPP/9cr732mmbPnq39+/dr0aJFatWqlSQpMTFR9evX18SJE62jL6U5ePCgvvnmGy1dulQfffSR/vOf/6hPnz46duyY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jz1m93W2bt2qjIwMtW/f3tqWn5+v1atXa8aMGcrNzZW7u7vNOcHBwTp58qRN28mTJxUcHFzqfby9veXt7W13XQAAAABwOYdHnBo3bqyUlBRJUrNmzfTJJ59IKhyJCgwMtPs6f/7zn5WcnKzt27dbt44dO2rgwIHavn17sdAkSVFRUVqxYoVN27JlyxQVFeXo2wAAAAAAuzk84jRkyBD99NNP6tatm55++mn17dtXM2bMUF5enl599VW7r+Pn51dsCfGqVauqZs2a1vZBgwapXr161megRo0apW7dumnatGnq06ePFi5cqC1btuidd95x9G0AAAAAgN0cDk7//Oc/ra9jYmK0d+9ebd26VeHh4aa/w+So1NRUubn9MSjWpUsXLViwQM8995yeeeYZNWnSRIsWLeI3nAAAAACUK4thGIazi6hIWVlZCggIUGZmpvz9/Z1dDgAAAAAncSQbXNMP4AIAAABAZUBwAgAAAAATBCcAAAAAMEFwAgAAAAATDgcnd3d3ZWRkFGs/depUib+9BAAAAADXO4eDU2mL8OXm5srLy+uaCwIAAAAAV2P37zi98cYbkiSLxaL33ntP1apVsx7Lz8/X6tWr1axZs7KvEAAAAACczO7g9Nprr0kqHHF6++23bableXl5qVGjRnr77bfLvkIAAAAAcDK7g1NKSookqUePHkpMTFT16tXLrSgAAAAAcCV2B6ciK1euLI86AAAAAMBlObw4xN13362pU6cWa3/ppZd07733lklRAAAAAOBKHA5Oq1evVu/evYu133HHHVq9enWZFAUAAAAArsTh4JSdnV3isuOenp7Kysoqk6IAAAAAwJU4HJxatWqljz/+uFj7woULFRkZWSZFAQAAAIArcXhxiOeff14DBgzQwYMH9ac//UmStGLFCn300Uf69NNPy7xAAAAAAHA2h4NT3759tWjRIk2ePFmfffaZfH191bp1ay1fvlzdunUrjxoBAAAAwKkshmEYzi6iImVlZSkgIECZmZny9/d3djkAAAAAnMSRbODwM06SdPbsWb333nt65plndPr0aUnStm3bdPz48au5HAAAAAC4NIen6u3YsUMxMTEKCAjQ4cOH9fDDD6tGjRpKTExUamqqPvzww/KoEwAAAACcxuERp3/9618aPHiw9u/fLx8fH2t77969+R0nAAAAADckh4PT5s2b9cgj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", "text/plain": [ "