{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Different ways to load an input graph\n", "\n", "We recommend using the GML graph format to load a graph. You can also use the DOT format, which requires additional dependencies (either pydot or pygraphviz). \n", "\n", "DoWhy supports both loading a graph as a string, or as a file (with the extensions 'gml' or 'dot').\n", "\n", "Below is an example showing the different ways of loading the same graph. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os, sys\n", "import random\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", "\n", "import dowhy\n", "from dowhy import CausalModel\n", "from IPython.display import Image, display" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## I. Generating dummy data\n", "We generate some dummy data for three variables: X, Y and Z. " ] }, { "cell_type": "code", "execution_count": 3, "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", "
ZXY
0000
17110
28220
36330
45440
53550
69660
72770
81880
94990
\n", "
" ], "text/plain": [ " Z X Y\n", "0 0 0 0\n", "1 7 1 10\n", "2 8 2 20\n", "3 6 3 30\n", "4 5 4 40\n", "5 3 5 50\n", "6 9 6 60\n", "7 2 7 70\n", "8 1 8 80\n", "9 4 9 90" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z=[i for i in range(10)]\n", "random.shuffle(z)\n", "df = pd.DataFrame(data = {'Z': z, 'X': range(0,10), 'Y': range(0,100,10)})\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## II. Loading GML or DOT graphs\n", "### GML format" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_graph:If this is observed data (not from a randomized experiment), there might always be missing confounders. Adding a node named \"Unobserved Confounders\" to reflect this.\n", "INFO:dowhy.causal_model:Model to find the causal effect of treatment ['X'] on outcome ['Y']\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# With GML string\n", "model=CausalModel(\n", " data = df,\n", " treatment='X',\n", " outcome='Y',\n", " graph=\"\"\"graph[directed 1 node[id \"Z\" label \"Z\"] \n", " node[id \"X\" label \"X\"]\n", " node[id \"Y\" label \"Y\"] \n", " edge[source \"Z\" target \"X\"] \n", " edge[source \"Z\" target \"Y\"] \n", " edge[source \"X\" target \"Y\"]]\"\"\"\n", " \n", " )\n", "model.view_model()\n", "\n", "\n", "display(Image(filename=\"causal_model.png\"))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_graph:If this is observed data (not from a randomized experiment), there might always be missing confounders. Adding a node named \"Unobserved Confounders\" to reflect this.\n", "INFO:dowhy.causal_model:Model to find the causal effect of treatment ['X'] on outcome ['Y']\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# With GML file\n", "model=CausalModel(\n", " data = df,\n", " treatment='X',\n", " outcome='Y',\n", " graph=\"../example_graphs/simple_graph_example.gml\"\n", " )\n", "model.view_model()\n", "\n", "\n", "display(Image(filename=\"causal_model.png\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### DOT format" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_graph:If this is observed data (not from a randomized experiment), there might always be missing confounders. Adding a node named \"Unobserved Confounders\" to reflect this.\n", "INFO:dowhy.causal_model:Model to find the causal effect of treatment ['X'] on outcome ['Y']\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# With DOT string\n", "model=CausalModel(\n", " data = df,\n", " treatment='X',\n", " outcome='Y',\n", " graph=\"digraph {Z -> X;Z -> Y;X -> Y;}\"\n", " )\n", "model.view_model()\n", "\n", "from IPython.display import Image, display\n", "display(Image(filename=\"causal_model.png\"))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_graph:If this is observed data (not from a randomized experiment), there might always be missing confounders. Adding a node named \"Unobserved Confounders\" to reflect this.\n", "INFO:dowhy.causal_model:Model to find the causal effect of treatment ['X'] on outcome ['Y']\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# With DOT file\n", "model=CausalModel(\n", " data = df,\n", " treatment='X',\n", " outcome='Y',\n", " graph=\"../example_graphs/simple_graph_example.dot\"\n", " )\n", "model.view_model()\n", "\n", "\n", "display(Image(filename=\"causal_model.png\"))" ] } ], "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": 2 }