Skip to content

Instantly share code, notes, and snippets.

@akelleh
Created February 20, 2019 20:58
Show Gist options
  • Save akelleh/5da1a66a801ed8ba5e1c666c6ae281b3 to your computer and use it in GitHub Desktop.
Save akelleh/5da1a66a801ed8ba5e1c666c6ae281b3 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"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