{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# DoWhy: Different estimation methods for causal inference\n", "This is a quick introduction to the DoWhy causal inference library.\n", "We will load in a sample dataset and use different methods for estimating the causal effect of a (pre-specified)treatment variable on a (pre-specified) outcome variable.\n", "\n", "First, let us add the required path for Python to find the DoWhy code and load all required packages" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os, sys\n", "sys.path.append(os.path.abspath(\"../../\"))" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import logging\n", "\n", "import dowhy\n", "from dowhy.do_why import CausalModel\n", "import dowhy.datasets " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let us load a dataset. For simplicity, we simulate a dataset with linear relationships between common causes and treatment, and common causes and outcome. \n", "\n", "Beta is the true causal effect. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "data = dowhy.datasets.linear_dataset(beta=10,\n", " num_common_causes=5, \n", " num_instruments = 2,\n", " num_samples=10000,\n", " treatment_is_binary=True)\n", "df = data[\"df\"]\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that we are using a pandas dataframe to load the data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Identifying the causal estimand" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now input a causal graph in the DOT graph format." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.do_why:Model to find the causal effect of treatment ['v'] on outcome ['y']\n" ] } ], "source": [ "# With graph\n", "model=CausalModel(\n", " data = df,\n", " treatment=data[\"treatment_name\"],\n", " outcome=data[\"outcome_name\"],\n", " graph=data[\"gml_graph\"],\n", " instruments=data[\"instrument_names\"],\n", " logging_level = logging.INFO\n", " )" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "model.view_model()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from IPython.display import Image, display\n", "display(Image(filename=\"causal_model.png\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We get a causal graph. Now identification and estimation is done. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_identifier:Common causes of treatment and outcome:['X2', 'Z0', 'X3', 'X4', 'X1', 'X0', 'Z1', 'Unobserved Confounders']\n", "WARNING:dowhy.causal_identifier:There are unobserved common causes. Causal effect cannot be identified.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "WARN: Do you want to continue by ignoring these unobserved confounders? [y/n] y\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_identifier:Instrumental variables for treatment and outcome:['Z1', 'Z0']\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Estimand type: ate\n", "### Estimand : 1\n", "Estimand name: iv\n", "Estimand expression:\n", "Expectation(Derivative(y, Z1)/Derivative(v, Z1))\n", "Estimand assumption 1, As-if-random: If U→→y then ¬(U →→Z1,Z0)\n", "Estimand assumption 2, Exclusion: If we remove {Z1,Z0}→v, then ¬(Z1,Z0→y)\n", "### Estimand : 2\n", "Estimand name: backdoor\n", "Estimand expression:\n", "d \n", "──(Expectation(y|X2,Z0,X3,X4,X1,X0,Z1))\n", "dv \n", "Estimand assumption 1, Unconfoundedness: If U→v and U→y then P(y|v,X2,Z0,X3,X4,X1,X0,Z1,U) = P(y|v,X2,Z0,X3,X4,X1,X0,Z1)\n", "\n" ] } ], "source": [ "identified_estimand = model.identify_effect()\n", "print(identified_estimand)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Method 1: Regression\n", "\n", "Use linear regression." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_estimator:INFO: Using Linear Regression Estimator\n", "INFO:dowhy.causal_estimator:b: y~v+X2+Z0+X3+X4+X1+X0+Z1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "*** Causal Estimate ***\n", "\n", "## Target estimand\n", "Estimand type: ate\n", "### Estimand : 1\n", "Estimand name: iv\n", "Estimand expression:\n", "Expectation(Derivative(y, Z1)/Derivative(v, Z1))\n", "Estimand assumption 1, As-if-random: If U→→y then ¬(U →→Z1,Z0)\n", "Estimand assumption 2, Exclusion: If we remove {Z1,Z0}→v, then ¬(Z1,Z0→y)\n", "### Estimand : 2\n", "Estimand name: backdoor\n", "Estimand expression:\n", "d \n", "──(Expectation(y|X2,Z0,X3,X4,X1,X0,Z1))\n", "dv \n", "Estimand assumption 1, Unconfoundedness: If U→v and U→y then P(y|v,X2,Z0,X3,X4,X1,X0,Z1,U) = P(y|v,X2,Z0,X3,X4,X1,X0,Z1)\n", "\n", "## Realized estimand\n", "b: y~v+X2+Z0+X3+X4+X1+X0+Z1\n", "## Estimate\n", "Value: 9.999999999999995\n", "\n", "## Statistical Significance\n", "p-value: <0.001\n", "\n", "Causal Estimate is 10.0\n" ] } ], "source": [ "causal_estimate_reg = model.estimate_effect(identified_estimand,\n", " method_name=\"backdoor.linear_regression\",\n", " test_significance=True)\n", "print(causal_estimate_reg)\n", "print(\"Causal Estimate is \" + str(causal_estimate_reg.value))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Method 2: Stratification\n", "\n", "We will be using propensity scores to stratify units in the data." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v+X2+Z0+X3+X4+X1+X0+Z1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "*** Causal Estimate ***\n", "\n", "## Target estimand\n", "Estimand type: ate\n", "### Estimand : 1\n", "Estimand name: iv\n", "Estimand expression:\n", "Expectation(Derivative(y, Z1)/Derivative(v, Z1))\n", "Estimand assumption 1, As-if-random: If U→→y then ¬(U →→Z1,Z0)\n", "Estimand assumption 2, Exclusion: If we remove {Z1,Z0}→v, then ¬(Z1,Z0→y)\n", "### Estimand : 2\n", "Estimand name: backdoor\n", "Estimand expression:\n", "d \n", "──(Expectation(y|X2,Z0,X3,X4,X1,X0,Z1))\n", "dv \n", "Estimand assumption 1, Unconfoundedness: If U→v and U→y then P(y|v,X2,Z0,X3,X4,X1,X0,Z1,U) = P(y|v,X2,Z0,X3,X4,X1,X0,Z1)\n", "\n", "## Realized estimand\n", "b: y~v+X2+Z0+X3+X4+X1+X0+Z1\n", "## Estimate\n", "Value: 10.061716788484345\n", "\n", "Causal Estimate is 10.0617167885\n" ] } ], "source": [ "causal_estimate_strat = model.estimate_effect(identified_estimand,\n", " method_name=\"backdoor.propensity_score_stratification\")\n", "print(causal_estimate_strat)\n", "print(\"Causal Estimate is \" + str(causal_estimate_strat.value))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Method 3: Matching\n", "\n", "We will be using propensity scores to match units in the data." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Matching Estimator\n", "INFO:dowhy.causal_estimator:b: y~v+X2+Z0+X3+X4+X1+X0+Z1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "*** Causal Estimate ***\n", "\n", "## Target estimand\n", "Estimand type: ate\n", "### Estimand : 1\n", "Estimand name: iv\n", "Estimand expression:\n", "Expectation(Derivative(y, Z1)/Derivative(v, Z1))\n", "Estimand assumption 1, As-if-random: If U→→y then ¬(U →→Z1,Z0)\n", "Estimand assumption 2, Exclusion: If we remove {Z1,Z0}→v, then ¬(Z1,Z0→y)\n", "### Estimand : 2\n", "Estimand name: backdoor\n", "Estimand expression:\n", "d \n", "──(Expectation(y|X2,Z0,X3,X4,X1,X0,Z1))\n", "dv \n", "Estimand assumption 1, Unconfoundedness: If U→v and U→y then P(y|v,X2,Z0,X3,X4,X1,X0,Z1,U) = P(y|v,X2,Z0,X3,X4,X1,X0,Z1)\n", "\n", "## Realized estimand\n", "b: y~v+X2+Z0+X3+X4+X1+X0+Z1\n", "## Estimate\n", "Value: 7.391127134286239\n", "\n", "Causal Estimate is 7.391127134286239\n" ] } ], "source": [ "causal_estimate_match = model.estimate_effect(identified_estimand,\n", " method_name=\"backdoor.propensity_score_matching\")\n", "print(causal_estimate_match)\n", "print(\"Causal Estimate is \" + str(causal_estimate_match.value))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Method 4: Weighting\n", "\n", "We will be using (inverse) propensity scores to assign weights to units in the data." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Weighting Estimator\n", "INFO:dowhy.causal_estimator:b: y~v+X2+Z0+X3+X4+X1+X0+Z1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "*** Causal Estimate ***\n", "\n", "## Target estimand\n", "Estimand type: ate\n", "### Estimand : 1\n", "Estimand name: iv\n", "Estimand expression:\n", "Expectation(Derivative(y, Z1)/Derivative(v, Z1))\n", "Estimand assumption 1, As-if-random: If U→→y then ¬(U →→Z1,Z0)\n", "Estimand assumption 2, Exclusion: If we remove {Z1,Z0}→v, then ¬(Z1,Z0→y)\n", "### Estimand : 2\n", "Estimand name: backdoor\n", "Estimand expression:\n", "d \n", "──(Expectation(y|X2,Z0,X3,X4,X1,X0,Z1))\n", "dv \n", "Estimand assumption 1, Unconfoundedness: If U→v and U→y then P(y|v,X2,Z0,X3,X4,X1,X0,Z1,U) = P(y|v,X2,Z0,X3,X4,X1,X0,Z1)\n", "\n", "## Realized estimand\n", "b: y~v+X2+Z0+X3+X4+X1+X0+Z1\n", "## Estimate\n", "Value: 17.631870964903452\n", "\n", "Causal Estimate is 17.6318709649\n" ] } ], "source": [ "causal_estimate_ipw = model.estimate_effect(identified_estimand,\n", " method_name=\"backdoor.propensity_score_weighting\")\n", "print(causal_estimate_ipw)\n", "print(\"Causal Estimate is \" + str(causal_estimate_ipw.value))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Method 5: Instrumental Variable\n", "\n", "We will be using the Wald estimator for the provided instrumental variable." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_estimator:INFO: Using Instrumental Variable Estimator\n", "INFO:dowhy.causal_estimator:Realized estimand: Wald Estimator\n", "Realized estimand type: ate\n", "Estimand expression:\n", " -1\n", "Expectation(Derivative(y, Z1))⋅Expectation(Derivative(v, Z1)) \n", "Estimand assumption 1, As-if-random: If U→→y then ¬(U →→Z1,Z0)\n", "Estimand assumption 2, treatment_effect_homogeneity: Each unit's treatment v isaffected in the same way by common causes of v and y\n", "Estimand assumption 3, Exclusion: If we remove {Z1,Z0}→v, then ¬(Z1,Z0→y)\n", "Estimand assumption 4, outcome_effect_homogeneity: Each unit's outcome y isaffected in the same way by common causes of v and y\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "*** Causal Estimate ***\n", "\n", "## Target estimand\n", "Estimand type: ate\n", "### Estimand : 1\n", "Estimand name: iv\n", "Estimand expression:\n", "Expectation(Derivative(y, Z1)/Derivative(v, Z1))\n", "Estimand assumption 1, As-if-random: If U→→y then ¬(U →→Z1,Z0)\n", "Estimand assumption 2, Exclusion: If we remove {Z1,Z0}→v, then ¬(Z1,Z0→y)\n", "### Estimand : 2\n", "Estimand name: backdoor\n", "Estimand expression:\n", "d \n", "──(Expectation(y|X2,Z0,X3,X4,X1,X0,Z1))\n", "dv \n", "Estimand assumption 1, Unconfoundedness: If U→v and U→y then P(y|v,X2,Z0,X3,X4,X1,X0,Z1,U) = P(y|v,X2,Z0,X3,X4,X1,X0,Z1)\n", "\n", "## Realized estimand\n", "Realized estimand: Wald Estimator\n", "Realized estimand type: ate\n", "Estimand expression:\n", " -1\n", "Expectation(Derivative(y, Z1))⋅Expectation(Derivative(v, Z1)) \n", "Estimand assumption 1, As-if-random: If U→→y then ¬(U →→Z1,Z0)\n", "Estimand assumption 2, treatment_effect_homogeneity: Each unit's treatment v isaffected in the same way by common causes of v and y\n", "Estimand assumption 3, Exclusion: If we remove {Z1,Z0}→v, then ¬(Z1,Z0→y)\n", "Estimand assumption 4, outcome_effect_homogeneity: Each unit's outcome y isaffected in the same way by common causes of v and y\n", "\n", "## Estimate\n", "Value: 12.992472396947559\n", "\n", "Causal Estimate is 12.9924723969\n" ] } ], "source": [ "causal_estimate_iv = model.estimate_effect(identified_estimand,\n", " method_name=\"iv.instrumental_variable\", method_params={'iv_instrument_name':'Z1'})\n", "print(causal_estimate_iv)\n", "print(\"Causal Estimate is \" + str(causal_estimate_iv.value))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Method 6: Regression Discontinuity\n", "\n", "We will be internally converting this to an equivalent instrumental variables problem." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_estimator:Using Regression Discontinuity Estimator\n", "INFO:dowhy.causal_estimator:\n", "INFO:dowhy.causal_estimator:INFO: Using Instrumental Variable Estimator\n", "INFO:dowhy.causal_estimator:Realized estimand: Wald Estimator\n", "Realized estimand type: ate\n", "Estimand expression:\n", " -1\n", "Expectation(Derivative(y, Z1))⋅Expectation(Derivative(v, Z1)) \n", "Estimand assumption 1, As-if-random: If U→→y then ¬(U →→Z1,Z0)\n", "Estimand assumption 2, treatment_effect_homogeneity: Each unit's treatment local_treatment isaffected in the same way by common causes of local_treatment and local_outcome\n", "Estimand assumption 3, Exclusion: If we remove {Z1,Z0}→v, then ¬(Z1,Z0→y)\n", "Estimand assumption 4, outcome_effect_homogeneity: Each unit's outcome local_outcome isaffected in the same way by common causes of local_treatment and local_outcome\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "*** Causal Estimate ***\n", "\n", "## Target estimand\n", "Estimand type: ate\n", "### Estimand : 1\n", "Estimand name: iv\n", "Estimand expression:\n", "Expectation(Derivative(y, Z1)/Derivative(v, Z1))\n", "Estimand assumption 1, As-if-random: If U→→y then ¬(U →→Z1,Z0)\n", "Estimand assumption 2, Exclusion: If we remove {Z1,Z0}→v, then ¬(Z1,Z0→y)\n", "### Estimand : 2\n", "Estimand name: backdoor\n", "Estimand expression:\n", "d \n", "──(Expectation(y|X2,Z0,X3,X4,X1,X0,Z1))\n", "dv \n", "Estimand assumption 1, Unconfoundedness: If U→v and U→y then P(y|v,X2,Z0,X3,X4,X1,X0,Z1,U) = P(y|v,X2,Z0,X3,X4,X1,X0,Z1)\n", "\n", "## Realized estimand\n", "Realized estimand: Wald Estimator\n", "Realized estimand type: ate\n", "Estimand expression:\n", " -1\n", "Expectation(Derivative(y, Z1))⋅Expectation(Derivative(v, Z1)) \n", "Estimand assumption 1, As-if-random: If U→→y then ¬(U →→Z1,Z0)\n", "Estimand assumption 2, treatment_effect_homogeneity: Each unit's treatment local_treatment isaffected in the same way by common causes of local_treatment and local_outcome\n", "Estimand assumption 3, Exclusion: If we remove {Z1,Z0}→v, then ¬(Z1,Z0→y)\n", "Estimand assumption 4, outcome_effect_homogeneity: Each unit's outcome local_outcome isaffected in the same way by common causes of local_treatment and local_outcome\n", "\n", "## Estimate\n", "Value: 12.84020418877542\n", "\n", "Causal Estimate is 12.8402041888\n" ] } ], "source": [ "causal_estimate_regdist = model.estimate_effect(identified_estimand,\n", " method_name=\"iv.regression_discontinuity\", \n", " method_params={'rd_variable_name':'Z1',\n", " 'rd_threshold_value':0.5,\n", " 'rd_bandwidth': 0.1})\n", "print(causal_estimate_regdist)\n", "print(\"Causal Estimate is \" + str(causal_estimate_regdist.value))" ] } ], "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.5.2" } }, "nbformat": 4, "nbformat_minor": 2 }