{ "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 load all required packages." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "import dowhy\n", "from dowhy import CausalModel\n", "import dowhy.datasets \n", "\n", "# Avoid printing dataconversion warnings from sklearn\n", "import warnings\n", "from sklearn.exceptions import DataConversionWarning\n", "warnings.filterwarnings(action='ignore', category=DataConversionWarning)" ] }, { "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": 2, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " X0 Z0 Z1 W0 W1 W2 W3 W4 v0 \\\n", "0 -0.483662 0.0 0.668529 -1.834217 0.899764 -0.027259 -1.162514 2 True \n", "1 -0.939733 0.0 0.893616 -1.211697 -0.507831 0.524436 2.010319 3 True \n", "2 -0.601658 0.0 0.134469 -0.567716 -0.923255 0.220309 0.452579 2 False \n", "3 0.144248 0.0 0.793546 -0.263509 -1.295114 1.636785 -0.414075 2 True \n", "4 1.044430 0.0 0.152600 -0.561016 -0.493955 1.239707 0.058385 0 True \n", "\n", " y \n", "0 1.998400 \n", "1 14.928353 \n", "2 0.423244 \n", "3 9.299319 \n", "4 12.149923 \n", "digraph { U[label=\"Unobserved Confounders\"]; U->y;v0->y;U->v0;W0-> v0; W1-> v0; W2-> v0; W3-> v0; W4-> v0;Z0-> v0; Z1-> v0;W0-> y; W1-> y; W2-> y; W3-> y; W4-> y;X0-> y;}\n", "\n", "\n", "graph[directed 1node[ id \"y\" label \"y\"]node[ id \"Unobserved Confounders\" label \"Unobserved Confounders\"]edge[source \"Unobserved Confounders\" target \"y\"]node[ id \"W0\" label \"W0\"] node[ id \"W1\" label \"W1\"] node[ id \"W2\" label \"W2\"] node[ id \"W3\" label \"W3\"] node[ id \"W4\" label \"W4\"]node[ id \"Z0\" label \"Z0\"] node[ id \"Z1\" label \"Z1\"]node[ id \"v0\" label \"v0\"]edge[source \"Unobserved Confounders\" target \"v0\"]edge[source \"v0\" target \"y\"]edge[ source \"W0\" target \"v0\"] edge[ source \"W1\" target \"v0\"] edge[ source \"W2\" target \"v0\"] edge[ source \"W3\" target \"v0\"] edge[ source \"W4\" target \"v0\"]edge[ source \"Z0\" target \"v0\"] edge[ source \"Z1\" target \"v0\"]edge[ source \"W0\" target \"y\"] edge[ source \"W1\" target \"y\"] edge[ source \"W2\" target \"y\"] edge[ source \"W3\" target \"y\"] edge[ source \"W4\" target \"y\"]node[ id \"X0\" label \"X0\"] edge[ source \"X0\" target \"y\"]]\n" ] } ], "source": [ "data = dowhy.datasets.linear_dataset(beta=10,\n", " num_common_causes=5,\n", " num_instruments = 2,\n", " num_effect_modifiers=1,\n", " num_samples=20000, \n", " treatment_is_binary=True,\n", " num_discrete_common_causes=1)\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.\n", "\n", "To create the causal graph for your dataset, you can use a tool like [DAGitty](http://dagitty.net/dags.html#) that provides a GUI to construct the graph. You can export the graph string that it generates. The graph string is very close to the DOT format: just rename `dag` to `digraph`, remove newlines and add a semicolon after every line, to convert it to the DOT format and input to DoWhy. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_model:Model to find the causal effect of treatment ['v0'] 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": 4, "metadata": {}, "outputs": [], "source": [ "model.view_model()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "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": [ "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": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:dowhy.causal_identifier:If this is observed data (not from a randomized experiment), there might always be missing confounders. Causal effect cannot be identified perfectly.\n", "INFO:dowhy.causal_identifier:Continuing by ignoring these unobserved confounders because proceed_when_unidentifiable flag is True.\n", "INFO:dowhy.causal_identifier:Instrumental variables for treatment and outcome:['Z0', 'Z1']\n", "INFO:dowhy.causal_identifier:Frontdoor variables for treatment and outcome:[]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor1 (Default)\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|W2,W1,W3,W4,W0,X0))\n", "d[v₀] \n", "Estimand assumption 1, Unconfoundedness: If U→{v0} and U→y then P(y|v0,W2,W1,W3,W4,W0,X0,U) = P(y|v0,W2,W1,W3,W4,W0,X0)\n", "\n", "### Estimand : 2\n", "Estimand name: backdoor2\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|W2,W1,W3,W4,W0))\n", "d[v₀] \n", "Estimand assumption 1, Unconfoundedness: If U→{v0} and U→y then P(y|v0,W2,W1,W3,W4,W0,U) = P(y|v0,W2,W1,W3,W4,W0)\n", "\n", "### Estimand : 3\n", "Estimand name: iv\n", "Estimand expression:\n", "Expectation(Derivative(y, [Z0, Z1])*Derivative([v0], [Z0, Z1])**(-1))\n", "Estimand assumption 1, As-if-random: If U→→y then ¬(U →→{Z0,Z1})\n", "Estimand assumption 2, Exclusion: If we remove {Z0,Z1}→{v0}, then ¬({Z0,Z1}→y)\n", "\n", "### Estimand : 4\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": [ "Note the parameter flag *proceed\\_when\\_unidentifiable*. It needs to be set to *True* to convey the assumption that we are ignoring any unobserved confounding. The default behavior is to prompt the user to double-check that the unobserved confounders can be ignored. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Estimation" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W1+W3+W4+W0+X0\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "*** Causal Estimate ***\n", "\n", "## Identified estimand\n", "Estimand type: nonparametric-ate\n", "\n", "## Realized estimand\n", "b: y~v0+W2+W1+W3+W4+W0+X0\n", "Target units: ate\n", "\n", "## Estimate\n", "Mean value: 11.627362169966906\n", "\n", "Causal Estimate is 11.627362169966906\n" ] } ], "source": [ "causal_estimate = model.estimate_effect(identified_estimand,\n", " method_name=\"backdoor.propensity_score_stratification\")\n", "print(causal_estimate)\n", "print(\"Causal Estimate is \" + str(causal_estimate.value))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can input additional parameters to the estimate_effect method. For instance, to estimate the effect on any subset of the units, you can specify the \"target_units\" parameter which can be a string (\"ate\", \"att\", or \"atc\"), lambda function that filters rows of the data frame, or a new dataframe on which to compute the effect. You can also specify \"effect modifiers\" to estimate heterogeneous effects across these variables. See `help(CausalModel.estimate_effect)`. " ] }, { "cell_type": "code", "execution_count": 8, "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~v0+W2+W1+W3+W4+W0+X0\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "*** Causal Estimate ***\n", "\n", "## Identified estimand\n", "Estimand type: nonparametric-ate\n", "\n", "## Realized estimand\n", "b: y~v0+W2+W1+W3+W4+W0+X0\n", "Target units: atc\n", "\n", "## Estimate\n", "Mean value: 11.976290956605318\n", "\n", "Causal Estimate is 11.976290956605318\n" ] } ], "source": [ "# Causal effect on the control group (ATC)\n", "causal_estimate_att = model.estimate_effect(identified_estimand,\n", " method_name=\"backdoor.propensity_score_stratification\",\n", " target_units = \"atc\")\n", "print(causal_estimate_att)\n", "print(\"Causal Estimate is \" + str(causal_estimate_att.value))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Interface 2: Specify common causes and instruments" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:dowhy.causal_model:Causal Graph not provided. DoWhy will construct a graph based on data inputs.\n", "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 ['v0'] 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\"],\n", " effect_modifiers=data[\"effect_modifier_names\"]) " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "model.view_model()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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Ft507cbY7T7q+/tuvC+5ubkunQcAAJQvFCHAAoqKisqcyuZKly5d0ujRo7Vw4ULFxsYqMjJSZ8+e1eTJk296blBQkCTp1KlTN107ffq0pOsrNq50Y1vercoYAACouChCgAX4+fm5/LM2Nzz33HOKiIjQAw88IElasGCBatSooffee++mo7Dvv/9+SVJaWtpN3+fGWM+ePV2aNy8vT5JUu3Ztl84DAADKF4oQYAF16tTRuXPnXD7Phg0b9Omnn2r69OnOscaNGzv//PjjjzsPSJCkbt26qU2bNlq9erWKi4ud49euXdOKFSvUuHFj9evXz6WZb7wvderUcek8AACgfKEIARYQHBysvXv3unSO/Px8jRs3Tm+//bZ8fX3LXBs3bpwiIiJ05swZxcbGOsc9PDy0ePFi5eXlacyYMTp79qzzZqxHjhzRokWLVLlyZZfm3rNnj3x8fNSsWTOXzgMAAMoXihBgAeHh4dq5c6fzJLbbrVGjRvLz81N2drbuv/9+PfTQQ85r+fn5stls2rhxoyRpyZIlstlsmj17tiSpc+fO2rFjhy5evKhWrVqpadOmOnLkiLZs2aI+ffq4JO937dy5Ux07drzlfY4AAEDFZXO46jcjAOXGgQMH1LZtW6WkpKhLly6m45QbJSUlatKkiR577DG98sorpuMAAAA3YkUIsIDQ0FDdddddevvtt01HKVfWr1+vr7/+WqNGjTIdBQAAuBkrQoBFzJ07V88//7yOHDmiBg0amI5TLvTs2bPMtj0AAGAdFCHAIoqLixUUFKRevXpp0aJFpuMYt379evXt25ftggAAWBRFCLCQuLg4jR49Wjt27NA999xjOo4xly9fVseOHdWiRQslJiaajgMAAAygCAEW4nA41L9/f2VkZGjPnj2qUaOG6UhGTJgwQfHx8dq7d6+aNm1qOg4AADCAwxIAC7HZbHrrrbf07bff6rHHHlNpaanpSG63fPlyzZ8/XwsXLqQEAQBgYRQhwGLq1aunlStX6oMPPtAzzzxjOo5bffLJJxozZoyee+45DR482HQcAABgkJfpAADcr3v37lq2bJkeeeQRValSRa+99ppsNpvpWC61ceNGDRw4UI888oj+/e9/m44DAAAMY0UIsKiBAwdqyZIlmjVrlmJiYmS3201Hcplly5apX79+evDBB7V48eIKX/oAAMBPowgBFjZixAh9+OGHSkxMVI8ePXTy5EnTkW4ru92uF154QSNHjtTTTz+tuLg4eXt7m44FAADKAYoQYHG9e/fWjh07lJeXp7vuuktr1qwxHem2OHr0qO677z7NnTtXb7/9tl5//XVWggAAgBNFCIBCQkKUmpqqgQMHatCgQRowYIC++uor07F+leLiYr3yyisKDQ1VcXGxvvjiC40ePdp0LAAAUM5QhABIkqpWraqFCxcqOTlZR44cUXBwsF588UXl5uaajvazXLt2Te+++65CQkI0Y8YMTZ06VampqQoKCjIdDQAAlEPcUBXATex2u/773//qX//6l4qKijRx4kQ99dRTatSokeloN7l8+bLi4+P12muvKSsrSyNHjtQ//vEPNWzY0HQ0AABQjlGEAPygwsJCzZs3TzNmzNC5c+fUr18/jR8/Xr179zZ+6EB6eroWL16spUuXqrCwUMOGDdOUKVPUrFkzo7kAAMDvA0UIwE+6evWqEhMTNX/+fG3ZskV+fn7q37+/oqKi1KNHD1WvXt3lGa5du6a9e/dq7dq1SkhIUEZGhgIDAzVu3DiNGTNGAQEBLs8AAAAqDooQgF8kKytLCQkJSkhI0K5du+Th4aG7775b9913nzp16qSQkBC1aNFCXl6/7X7Np0+f1sGDB5WWlqbPPvtMn332mQoKCtS0aVNFRUUpKipKYWFh8vDgo44AAOCXowgB+NVycnK0detWpaSkaMuWLfryyy917do1VapUSS1bttSdd96pevXqqVGjRqpRo4Z8fX3l5eUlX19fXblyRUVFRbpy5YouXryonJwcnTp1SmfPnlVmZqYuXLggSWrYsKG6dOmirl27qmvXrgoJCTH8qgEAQEVAEQJw2xQXF+vLL7/UwYMHlZGR4Sw2p0+fVkFBgb799lvZ7XZdunRJlSpVUrVq1VS5cmX5+voqICBADRs2VL169dSiRQsFBwcrJCRE/v7+pl8WAACogChCAAAAACyHzfUAAAAALIciBAAAAMByKEIAAAAALMdL0irTIQAAAADAnf4P+L9zlJuam4IAAAAASUVORK5CYII=\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 the same causal graph. Now identification and estimation is done as before." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:dowhy.causal_identifier:If this is observed data (not from a randomized experiment), there might always be missing confounders. Causal effect cannot be identified perfectly.\n", "INFO:dowhy.causal_identifier:Continuing by ignoring these unobserved confounders because proceed_when_unidentifiable flag is True.\n", "INFO:dowhy.causal_identifier:Instrumental variables for treatment and outcome:[]\n", "INFO:dowhy.causal_identifier:Frontdoor variables for treatment and outcome:[]\n" ] } ], "source": [ "identified_estimand = model.identify_effect(proceed_when_unidentifiable=True) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Estimation" ] }, { "cell_type": "code", "execution_count": 13, "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~v0+W2+W4+W1+W0+W3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "*** Causal Estimate ***\n", "\n", "## Identified estimand\n", "Estimand type: nonparametric-ate\n", "\n", "## Realized estimand\n", "b: y~v0+W2+W4+W1+W0+W3\n", "Target units: ate\n", "\n", "## Estimate\n", "Mean value: 11.715836681382548\n", "\n", "Causal Estimate is 11.715836681382548\n" ] } ], "source": [ "estimate = model.estimate_effect(identified_estimand,\n", " method_name=\"backdoor.propensity_score_stratification\") \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": 14, "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~v0+W2+W4+W1+W0+W3+w_random\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Refute: Add a Random Common Cause\n", "Estimated effect:11.715836681382548\n", "New effect:11.793706914431112\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": [ "### Adding an unobserved 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 Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Refute: Add an Unobserved Common Cause\n", "Estimated effect:11.715836681382548\n", "New effect:10.66151529844423\n", "\n" ] } ], "source": [ "res_unobserved=model.refute_estimate(identified_estimand, estimate, method_name=\"add_unobserved_common_cause\",\n", " confounders_effect_on_treatment=\"binary_flip\", confounders_effect_on_outcome=\"linear\",\n", " effect_strength_on_treatment=0.01, effect_strength_on_outcome=0.02)\n", "print(res_unobserved)" ] }, { "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_refuters.placebo_treatment_refuter:Refutation over 100 simulated datasets of permute treatment\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~placebo+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_refuters.placebo_treatment_refuter:Making use of Bootstrap as we have more than 100 examples.\n", " Note: The greater the number of examples, the more accurate are the confidence estimates\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Refute: Use a Placebo Treatment\n", "Estimated effect:11.715836681382548\n", "New effect:0.0031356825084195824\n", "p value:0.48\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_refuters.data_subset_refuter:Refutation over 0.9 simulated datasets of size 18000.0 each\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_refuters.data_subset_refuter:Making use of Bootstrap as we have more than 100 examples.\n", " Note: The greater the number of examples, the more accurate are the confidence estimates\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Refute: Use a subset of data\n", "Estimated effect:11.715836681382548\n", "New effect:11.64133310815932\n", "p value:0.21999999999999997\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 propensity score stratification estimator is reasonably robust to refutations.\n", "For reproducibility, you can add a parameter \"random_seed\" to any refutation method, as shown below." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:dowhy.causal_refuters.data_subset_refuter:Refutation over 0.9 simulated datasets of size 18000.0 each\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_estimator:INFO: Using Propensity Score Stratification Estimator\n", "INFO:dowhy.causal_estimator:b: y~v0+W2+W4+W1+W0+W3\n", "INFO:dowhy.causal_refuters.data_subset_refuter:Making use of Bootstrap as we have more than 100 examples.\n", " Note: The greater the number of examples, the more accurate are the confidence estimates\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Refute: Use a subset of data\n", "Estimated effect:11.715836681382548\n", "New effect:11.616914320133281\n", "p value:0.24\n", "\n" ] } ], "source": [ "res_subset=model.refute_estimate(identified_estimand, estimate,\n", " method_name=\"data_subset_refuter\", subset_fraction=0.9, random_seed = 1)\n", "print(res_subset)" ] } ], "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 }