{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Getting started with DoWhy: A simple example\n", "This is a quick introduction to the DoWhy causal inference library.\n", "We will load in a sample dataset and estimate 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": "markdown", "metadata": {}, "source": [ "Let's check the python version. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.7.4 (default, Jul 9 2019, 03:52:42) \n", "[GCC 5.4.0 20160609]\n" ] } ], "source": [ "print(sys.version)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\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": 4, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Z0 Z1 X0 X1 X2 X3 X4 v \\\n", "0 0.0 0.053555 -1.174258 -0.987573 0.395070 -0.160051 0.264335 0.0 \n", "1 0.0 0.832194 0.631449 0.642332 1.227220 -0.364481 1.425717 1.0 \n", "2 0.0 0.306234 -0.114428 0.201991 0.023685 0.953880 1.076977 1.0 \n", "3 0.0 0.416143 0.427830 1.266550 0.755916 1.557608 0.444620 1.0 \n", "4 0.0 0.652794 0.192758 0.532143 -0.683274 -0.571159 0.977457 1.0 \n", "\n", " y \n", "0 -4.636023 \n", "1 23.078269 \n", "2 18.155708 \n", "3 23.380629 \n", "4 12.891050 \n", "digraph { v ->y; U[label=\"Unobserved Confounders\"]; U->v; U->y;X0-> v; X1-> v; X2-> v; X3-> v; X4-> v;X0-> y; X1-> y; X2-> y; X3-> y; X4-> y;Z0-> v; Z1-> v;}\n", "\n", "\n", "graph[directed 1node[ id \"v\" label \"v\"]node[ id \"y\" label \"y\"]node[ id \"Unobserved Confounders\" label \"Unobserved Confounders\"]edge[source \"v\" target \"y\"]edge[source \"Unobserved Confounders\" target \"v\"]edge[source \"Unobserved Confounders\" target \"y\"]node[ id \"X0\" label \"X0\"] edge[ source \"X0\" target \"v\"] node[ id \"X1\" label \"X1\"] edge[ source \"X1\" target \"v\"] node[ id \"X2\" label \"X2\"] edge[ source \"X2\" target \"v\"] node[ id \"X3\" label \"X3\"] edge[ source \"X3\" target \"v\"] node[ id \"X4\" label \"X4\"] edge[ source \"X4\" target \"v\"]edge[ source \"X0\" target \"y\"] edge[ source \"X1\" target \"y\"] edge[ source \"X2\" target \"y\"] edge[ source \"X3\" target \"y\"] edge[ source \"X4\" target \"y\"]node[ id \"Z0\" label \"Z0\"] edge[ source \"Z0\" target \"v\"] node[ id \"Z1\" label \"Z1\"] edge[ source \"Z1\" target \"v\"]]\n" ] } ], "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", "print(df.head())\n", "print(data[\"dot_graph\"])\n", "print(\"\\n\")\n", "print(data[\"gml_graph\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that we are using a pandas dataframe to load the data. At present, DoWhy only supports pandas dataframe as input." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Interface 1 (recommended): Input causal graph" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now input a causal graph in the GML graph format (recommended). You can also use the DOT format." ] }, { "cell_type": "code", "execution_count": 5, "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", " )" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:dowhy.causal_graph:Warning: Pygraphviz cannot be loaded. Check that graphviz and pygraphviz are installed.\n", "INFO:dowhy.causal_graph:Using Matplotlib for plotting\n", "/home/amit/virtualenvs/python37/lib/python3.7/site-packages/networkx/drawing/nx_pylab.py:579: MatplotlibDeprecationWarning: \n", "The iterable function was deprecated in Matplotlib 3.1 and will be removed in 3.3. Use np.iterable instead.\n", " if not cb.iterable(width):\n", "/home/amit/virtualenvs/python37/lib/python3.7/site-packages/networkx/drawing/nx_pylab.py:676: MatplotlibDeprecationWarning: \n", "The iterable function was deprecated in Matplotlib 3.1 and will be removed in 3.3. Use np.iterable instead.\n", " if cb.iterable(node_size): # many node sizes\n" ] } ], "source": [ "model.view_model()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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9AwLIBEREZGeYQEkIiIi0jMsgERERER6hgWQiIiISM+wABIRERHpGRZAIiIiIj3DAkhERESkZ1gAiYiIiPQMCyARERGRnmEBJCIiItIzLIBEREREeoYFkIiIiEjPsAASERER6RkWQCIiIiI9wwJIREREpGdYAImIiIj0DAsgERERkZ5hASQiIiLSMyyARERERHqGBZCIiIhIz7AAEhEREekZFkAiIiIiPcMCSERERKRnWACJiIiI9AwLIBEREZGeYQEkIiIi0jMsgERERER6hgWQiIiISM+wABIRERHpGRZAIiIiIj3DAkhERESkZ1gAiYiIiPQMCyARERGRnmEBJCIiItIzLIBEREREeoYFkIiIiEjPsAASERER6RkWQCIiIiI9wwJIREREpGdYAImIiIj0DAsgERERkZ5hASQiIiLSMyyARERERHqGBZCIiIhIz7AAEhEREekZFkAiIiIiPcMCSERERKRnWACJiIiI9AwLIBEREZGeYQEkIiIi0jMsgERERER6hgWQiIiISM+wABIRERHpGRZAIiIiIj3DAkhERESkZ1gAiYiIiPQMCyARERGRnmEBJCIiItIzLIBEREREeoYFkIiIiEjPsAASERER6RkWQCIiIiI9839ou2UvWeTiuQAAAABJRU5ErkJggg==\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": [ "The above causal graph shows the assumptions encoded in the causal model. We can now use this graph to first identify \n", "the causal effect (go from a causal estimand to a probability expression), and then estimate the causal effect." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**DoWhy philosophy: Keep identification and estimation separate**\n", "\n", "Identification can be achieved without access to the data, acccesing only the graph. This results in an expression to be computed. This expression can then be evaluated using the available data in the estimation step.\n", "It is important to understand that these are orthogonal steps.\n", "\n", "* Identification" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_identifier:Common causes of treatment and outcome:['X4', 'X1', 'Unobserved Confounders', 'X0', 'X2', 'X3']\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: backdoor\n", "Estimand expression:\n", "d \n", "──(Expectation(y|X4,X1,X0,X2,X3))\n", "dv \n", "Estimand assumption 1, Unconfoundedness: If U→v and U→y then P(y|v,X4,X1,X0,X2,X3,U) = P(y|v,X4,X1,X0,X2,X3)\n", "### Estimand : 2\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", "\n" ] } ], "source": [ "identified_estimand = model.identify_effect()\n", "print(identified_estimand)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you want to disable the warning for ignoring unobserved confounders, you can add a parameter flag ( *proceed\\_when\\_unidentifiable* ). The same parameter can also be added when instantiating the CausalModel object. " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_identifier:Common causes of treatment and outcome:['X4', 'X1', 'Unobserved Confounders', 'X0', 'X2', 'X3']\n", "INFO:dowhy.causal_identifier:All common causes are observed. Causal effect can be identified.\n", "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: backdoor\n", "Estimand expression:\n", "d \n", "──(Expectation(y|X4,X1,X0,X2,X3))\n", "dv \n", "Estimand assumption 1, Unconfoundedness: If U→v and U→y then P(y|v,X4,X1,X0,X2,X3,U) = P(y|v,X4,X1,X0,X2,X3)\n", "### Estimand : 2\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", "\n" ] } ], "source": [ "identified_estimand = model.identify_effect(proceed_when_unidentifiable=True)\n", "print(identified_estimand)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Estimation" ] }, { "cell_type": "code", "execution_count": 10, "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+X4+X1+X0+X2+X3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "*** Causal Estimate ***\n", "\n", "## Target estimand\n", "Estimand type: ate\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", "d \n", "──(Expectation(y|X4,X1,X0,X2,X3))\n", "dv \n", "Estimand assumption 1, Unconfoundedness: If U→v and U→y then P(y|v,X4,X1,X0,X2,X3,U) = P(y|v,X4,X1,X0,X2,X3)\n", "### Estimand : 2\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", "\n", "## Realized estimand\n", "b: y~v+X4+X1+X0+X2+X3\n", "## Estimate\n", "Value: 9.9999999999994\n", "\n", "Causal Estimate is 9.9999999999994\n" ] } ], "source": [ "causal_estimate = model.estimate_effect(identified_estimand,\n", " method_name=\"backdoor.linear_regression\")\n", "print(causal_estimate)\n", "print(\"Causal Estimate is \" + str(causal_estimate.value))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Interface 2: Specify common causes and instruments" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:dowhy.do_why:Causal Graph not provided. DoWhy will construct a graph based on data inputs.\n", "INFO:dowhy.do_why:Model to find the causal effect of treatment ['v'] on outcome ['y']\n" ] } ], "source": [ "# Without graph \n", "model= CausalModel( \n", " data=df, \n", " treatment=data[\"treatment_name\"], \n", " outcome=data[\"outcome_name\"], \n", " common_causes=data[\"common_causes_names\"]) " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:dowhy.causal_graph:Warning: Pygraphviz cannot be loaded. Check that graphviz and pygraphviz are installed.\n", "INFO:dowhy.causal_graph:Using Matplotlib for plotting\n", "/home/amit/virtualenvs/python37/lib/python3.7/site-packages/networkx/drawing/nx_pylab.py:579: MatplotlibDeprecationWarning: \n", "The iterable function was deprecated in Matplotlib 3.1 and will be removed in 3.3. Use np.iterable instead.\n", " if not cb.iterable(width):\n", "/home/amit/virtualenvs/python37/lib/python3.7/site-packages/networkx/drawing/nx_pylab.py:676: MatplotlibDeprecationWarning: \n", "The iterable function was deprecated in Matplotlib 3.1 and will be removed in 3.3. Use np.iterable instead.\n", " if cb.iterable(node_size): # many node sizes\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "model.view_model()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We get the same causal graph. Now identification and estimation is done as before." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_identifier:Common causes of treatment and outcome:['U', 'X4', 'X1', 'X0', 'X2', 'X3']\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:[]\n" ] } ], "source": [ "identified_estimand = model.identify_effect() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Estimation" ] }, { "cell_type": "code", "execution_count": 14, "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+X4+X1+X0+X2+X3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "*** Causal Estimate ***\n", "\n", "## Target estimand\n", "Estimand type: ate\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", "d \n", "──(Expectation(y|X4,X1,X0,X2,X3))\n", "dv \n", "Estimand assumption 1, Unconfoundedness: If U→v and U→y then P(y|v,X4,X1,X0,X2,X3,U) = P(y|v,X4,X1,X0,X2,X3)\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "## Realized estimand\n", "b: y~v+X4+X1+X0+X2+X3\n", "## Estimate\n", "Value: 12.4138990048773\n", "\n", "Causal Estimate is 12.4138990048773\n" ] } ], "source": [ "estimate = model.estimate_effect(identified_estimand,\n", " method_name=\"backdoor.propensity_score_matching\") \n", "print(estimate)\n", "print(\"Causal Estimate is \" + str(estimate.value))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Refuting the estimate\n", "\n", "Let us now look at ways of refuting the estimate obtained." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Adding a random common cause variable" ] }, { "cell_type": "code", "execution_count": 15, "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+X4+X1+X0+X2+X3+w_random\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Refute: Add a Random Common Cause\n", "Estimated effect:(12.4138990048773,)\n", "New effect:(12.427568331323032,)\n", "\n" ] } ], "source": [ "res_random=model.refute_estimate(identified_estimand, estimate, method_name=\"random_common_cause\")\n", "print(res_random)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Replacing treatment with a random (placebo) variable" ] }, { "cell_type": "code", "execution_count": 16, "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~placebo+X4+X1+X0+X2+X3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Refute: Use a Placebo Treatment\n", "Estimated effect:(12.4138990048773,)\n", "New effect:(-0.025198898772462442,)\n", "\n" ] } ], "source": [ "res_placebo=model.refute_estimate(identified_estimand, estimate,\n", " method_name=\"placebo_treatment_refuter\", placebo_type=\"permute\")\n", "print(res_placebo)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Removing a random subset of the data" ] }, { "cell_type": "code", "execution_count": 17, "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+X4+X1+X0+X2+X3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Refute: Use a subset of data\n", "Estimated effect:(12.4138990048773,)\n", "New effect:(12.379545785678552,)\n", "\n" ] } ], "source": [ "res_subset=model.refute_estimate(identified_estimand, estimate,\n", " method_name=\"data_subset_refuter\", subset_fraction=0.9)\n", "print(res_subset)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can see, the linear regression estimator is very sensitive to simple refutations." ] } ], "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.7.4" } }, "nbformat": 4, "nbformat_minor": 2 }