Created
February 20, 2019 20:58
-
-
Save akelleh/5da1a66a801ed8ba5e1c666c6ae281b3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"%matplotlib inline" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import dowhy.api\n", | |
"import dowhy.datasets\n", | |
"\n", | |
"import numpy as np" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"data = dowhy.datasets.linear_dataset(beta=5,\n", | |
" num_common_causes=1,\n", | |
" num_instruments = 0,\n", | |
" num_samples=1000,\n", | |
" treatment_is_binary=True)\n", | |
"\n", | |
"data['df']['y'] = np.random.normal(data['df']['y'], 0.1)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"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.causal_identifier:Common causes of treatment and outcome:{'U', 'X0'}\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"['X0']\n", | |
"yes\n", | |
"{'observed': 'yes'}\n", | |
"Model to find the causal effect of treatment v on outcome y\n", | |
"{'label': 'Unobserved Confounders', 'observed': 'no'}\n", | |
"There are unobserved common causes. Causal effect cannot be identified.\n", | |
"WARN: Do you want to continue by ignoring these unobserved confounders? [y/n] yes\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"INFO:dowhy.causal_identifier:Instrumental variables for treatment and outcome:[]\n", | |
"INFO:dowhy.do_sampler:Using WeightingSampler for do sampling.\n", | |
"INFO:dowhy.do_sampler:Caution: do samplers assume iid data.\n", | |
"/home/akelleh/.virtualenvs/data/lib/python3.6/site-packages/sklearn/linear_model/logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", | |
" FutureWarning)\n", | |
"/home/akelleh/.virtualenvs/data/lib/python3.6/site-packages/sklearn/utils/validation.py:761: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", | |
" y = column_or_1d(y, warn=True)\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"WeightingSampler\n", | |
"treatments ['v']\n", | |
"backdoor ['X0']\n", | |
" X0\n", | |
"0 0.873833\n", | |
"1 0.897756\n", | |
"2 -0.810375\n", | |
"3 1.202965\n", | |
"4 -1.411507\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x7fa3b4735400>" | |
] | |
}, | |
"execution_count": 4, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"data['df'].causal.do( x='v', \n", | |
" variable_types={'v': 'b', 'y': 'c', 'X0': 'c'}, \n", | |
" outcome='y',\n", | |
" common_causes=['X0']).groupby('v').mean().plot(y='y', kind='bar')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"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.causal_identifier:Common causes of treatment and outcome:{'U', 'X0'}\n", | |
"INFO:dowhy.causal_identifier:Instrumental variables for treatment and outcome:[]\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"['X0']\n", | |
"yes\n", | |
"{'observed': 'yes'}\n", | |
"Model to find the causal effect of treatment v on outcome y\n", | |
"{'label': 'Unobserved Confounders', 'observed': 'no'}\n", | |
"All common causes are observed. Causal effect can be identified.\n", | |
"McmcSampler\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"WARNING:theano.tensor.blas:Using NumPy C-API based implementation for BLAS functions.\n", | |
"INFO:dowhy.do_sampler:Using McmcSampler for do sampling.\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"treatments ['v']\n", | |
"backdoor ['X0']\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"INFO:pymc3:Auto-assigning NUTS sampler...\n", | |
"INFO:pymc3:Initializing NUTS using jitter+adapt_diag...\n", | |
"INFO:pymc3:Multiprocess sampling (4 chains in 4 jobs)\n", | |
"INFO:pymc3:NUTS: [y_sd, beta_y, v_sd, beta_v]\n", | |
"Sampling 4 chains: 100%|██████████| 8000/8000 [00:12<00:00, 639.95draws/s] \n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x7fa39b07a8d0>" | |
] | |
}, | |
"execution_count": 5, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"data['df'].causal.do( x='v', \n", | |
" variable_types={'v': 'b', 'y': 'c', 'X0': 'c'}, \n", | |
" outcome='y',\n", | |
" method='mcmc', \n", | |
" common_causes=['X0'],\n", | |
" proceed_when_unidentifiable=True,\n", | |
" stateful=True).groupby('v').mean().plot(y='y', kind='bar')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"INFO:dowhy.causal_identifier:Common causes of treatment and outcome:{'U', 'X0'}\n", | |
"INFO:dowhy.causal_identifier:Instrumental variables for treatment and outcome:[]\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"{'label': 'Unobserved Confounders', 'observed': 'no'}\n", | |
"All common causes are observed. Causal effect can be identified.\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x7fa398439390>" | |
] | |
}, | |
"execution_count": 6, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"data['df'].causal.do( x='v', \n", | |
" variable_types={'v': 'b', 'y': 'c', 'X0': 'c'}, \n", | |
" outcome='y',\n", | |
" method='mcmc', \n", | |
" common_causes=['X0'],\n", | |
" proceed_when_unidentifiable=True,\n", | |
" stateful=True).groupby('v').mean().plot(y='y', kind='bar')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"data['df'].causal.reset()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"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.6.7" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment