{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Estimating effect of multiple treatments" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import logging\n", "\n", "import dowhy\n", "from dowhy import CausalModel\n", "import dowhy.datasets\n", "\n", "import econml\n", "import warnings\n", "warnings.filterwarnings('ignore')" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
X0X1W0W1W2W3v0v1y
0-0.4131361.5882260.4877700.290617001.1339984.76953279.134513
1-1.134280-0.198177-1.7966902.4934733111.87394615.240956-22.448157
2-0.040000-0.2599430.5096642.9703833014.43637521.720983178.499781
30.428227-0.1792781.130956-1.010133033.06597915.740535200.564517
40.879490-0.668984-1.2999540.571345328.74195319.404153194.187850
\n", "
" ], "text/plain": [ " X0 X1 W0 W1 W2 W3 v0 v1 \\\n", "0 -0.413136 1.588226 0.487770 0.290617 0 0 1.133998 4.769532 \n", "1 -1.134280 -0.198177 -1.796690 2.493473 3 1 11.873946 15.240956 \n", "2 -0.040000 -0.259943 0.509664 2.970383 3 0 14.436375 21.720983 \n", "3 0.428227 -0.179278 1.130956 -1.010133 0 3 3.065979 15.740535 \n", "4 0.879490 -0.668984 -1.299954 0.571345 3 2 8.741953 19.404153 \n", "\n", " y \n", "0 79.134513 \n", "1 -22.448157 \n", "2 178.499781 \n", "3 200.564517 \n", "4 194.187850 " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = dowhy.datasets.linear_dataset(10, num_common_causes=4, num_samples=10000,\n", " num_instruments=0, num_effect_modifiers=2,\n", " num_treatments=2,\n", " treatment_is_binary=False,\n", " num_discrete_common_causes=2,\n", " num_discrete_effect_modifiers=0,\n", " one_hot_encode=False)\n", "df=data['df']\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "model = CausalModel(data=data[\"df\"], \n", " treatment=data[\"treatment_name\"], outcome=data[\"outcome_name\"], \n", " graph=data[\"gml_graph\"])" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "model.view_model()\n", "from IPython.display import Image, display\n", "display(Image(filename=\"causal_model.png\"))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────────(Expectation(y|X1,W0,W2,W3,X0,W1))\n", "d[v₀ v₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{v0,v1} and U→y then P(y|v0,v1,X1,W0,W2,W3,X0,W1,U) = P(y|v0,v1,X1,W0,W2,W3,X0,W1)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n" ] } ], "source": [ "identified_estimand= model.identify_effect(proceed_when_unidentifiable=True)\n", "print(identified_estimand)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Linear model\n", "\n", "Let us first see an example for a linear model. The control_value and treatment_value can be provided as a tuple/list when the treatment is multi-dimensional.\n", "\n", "The interpretation is change in y when v0 and v1 are changed from (0,0) to (1,1)." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "*** Causal Estimate ***\n", "\n", "## Identified estimand\n", "Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────────(Expectation(y|X1,W0,W2,W3,X0,W1))\n", "d[v₀ v₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{v0,v1} and U→y then P(y|v0,v1,X1,W0,W2,W3,X0,W1,U) = P(y|v0,v1,X1,W0,W2,W3,X0,W1)\n", "\n", "## Realized estimand\n", "b: y~v0+v1+X1+W0+W2+W3+X0+W1+v0*X1+v0*X0+v1*X1+v1*X0\n", "Target units: ate\n", "\n", "## Estimate\n", "Mean value: 26.41126316018485\n", "\n" ] } ], "source": [ "linear_estimate = model.estimate_effect(identified_estimand, \n", " method_name=\"backdoor.linear_regression\",\n", " control_value=(0,0),\n", " treatment_value=(1,1),\n", " method_params={'need_conditional_estimates': False})\n", "print(linear_estimate) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can estimate conditional effects, based on effect modifiers. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "*** Causal Estimate ***\n", "\n", "## Identified estimand\n", "Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────────(Expectation(y|X1,W0,W2,W3,X0,W1))\n", "d[v₀ v₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{v0,v1} and U→y then P(y|v0,v1,X1,W0,W2,W3,X0,W1,U) = P(y|v0,v1,X1,W0,W2,W3,X0,W1)\n", "\n", "## Realized estimand\n", "b: y~v0+v1+X1+W0+W2+W3+X0+W1+v0*X1+v0*X0+v1*X1+v1*X0\n", "Target units: ate\n", "\n", "## Estimate\n", "Mean value: 26.41126316018485\n", "### Conditional Estimates\n", "__categorical__X1 __categorical__X0 \n", "(-3.537, -1.017] (-2.9979999999999998, 0.0335] -52.946620\n", " (0.0335, 0.628] -36.698335\n", " (0.628, 1.109] -28.405206\n", " (1.109, 1.706] -17.981903\n", " (1.706, 5.283] -2.357185\n", "(-1.017, -0.424] (-2.9979999999999998, 0.0335] -19.631323\n", " (0.0335, 0.628] -3.214915\n", " (0.628, 1.109] 6.064157\n", " (1.109, 1.706] 15.879803\n", " (1.706, 5.283] 32.015991\n", "(-0.424, 0.0749] (-2.9979999999999998, 0.0335] 0.264664\n", " (0.0335, 0.628] 16.556340\n", " (0.628, 1.109] 26.187937\n", " (1.109, 1.706] 36.937134\n", " (1.706, 5.283] 52.720748\n", "(0.0749, 0.645] (-2.9979999999999998, 0.0335] 21.404275\n", " (0.0335, 0.628] 37.196526\n", " (0.628, 1.109] 46.502518\n", " (1.109, 1.706] 56.370240\n", " (1.706, 5.283] 72.695058\n", "(0.645, 3.36] (-2.9979999999999998, 0.0335] 55.298602\n", " (0.0335, 0.628] 70.148621\n", " (0.628, 1.109] 79.236172\n", " (1.109, 1.706] 89.107877\n", " (1.706, 5.283] 107.081877\n", "dtype: float64\n" ] } ], "source": [ "linear_estimate = model.estimate_effect(identified_estimand, \n", " method_name=\"backdoor.linear_regression\",\n", " control_value=(0,0),\n", " treatment_value=(1,1))\n", "print(linear_estimate) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## More methods\n", "\n", "You can also use methods from EconML or CausalML libraries that support multiple treatments. You can look at examples from the conditional effect notebook: https://microsoft.github.io/dowhy/example_notebooks/dowhy-conditional-treatment-effects.html\n", "\n", "Propensity-based methods do not support multiple treatments currently. \n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": false, "sideBar": true, "skip_h1_title": true, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }