{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Demo for the DoWhy causal API\n",
"We show a simple example of adding a causal extension to any dataframe. "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import dowhy.datasets\n",
"import dowhy.api\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"from statsmodels.api import OLS"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" W0 | \n",
" v0 | \n",
" y | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0.883800 | \n",
" True | \n",
" 6.032204 | \n",
"
\n",
" \n",
" 1 | \n",
" 2.151652 | \n",
" True | \n",
" 8.274524 | \n",
"
\n",
" \n",
" 2 | \n",
" 0.565327 | \n",
" True | \n",
" 5.615925 | \n",
"
\n",
" \n",
" 3 | \n",
" 1.943763 | \n",
" True | \n",
" 9.943361 | \n",
"
\n",
" \n",
" 4 | \n",
" 1.025108 | \n",
" True | \n",
" 6.526274 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 995 | \n",
" -1.452482 | \n",
" False | \n",
" -1.081065 | \n",
"
\n",
" \n",
" 996 | \n",
" 1.532964 | \n",
" False | \n",
" 2.817101 | \n",
"
\n",
" \n",
" 997 | \n",
" -0.350965 | \n",
" True | \n",
" 1.761346 | \n",
"
\n",
" \n",
" 998 | \n",
" -1.642007 | \n",
" False | \n",
" -3.852874 | \n",
"
\n",
" \n",
" 999 | \n",
" 0.641072 | \n",
" False | \n",
" 2.620429 | \n",
"
\n",
" \n",
"
\n",
"
1000 rows × 3 columns
\n",
"
"
],
"text/plain": [
" W0 v0 y\n",
"0 0.883800 True 6.032204\n",
"1 2.151652 True 8.274524\n",
"2 0.565327 True 5.615925\n",
"3 1.943763 True 9.943361\n",
"4 1.025108 True 6.526274\n",
".. ... ... ...\n",
"995 -1.452482 False -1.081065\n",
"996 1.532964 False 2.817101\n",
"997 -0.350965 True 1.761346\n",
"998 -1.642007 False -3.852874\n",
"999 0.641072 False 2.620429\n",
"\n",
"[1000 rows x 3 columns]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"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",
"df = data['df']\n",
"df['y'] = df['y'] + np.random.normal(size=len(df)) # Adding noise to data. Without noise, the variance in Y|X, Z is zero, and mcmc fails.\n",
"#data['dot_graph'] = 'digraph { v ->y;X0-> v;X0-> y;}'\n",
"\n",
"treatment= data[\"treatment_name\"][0]\n",
"outcome = data[\"outcome_name\"][0]\n",
"common_cause = data[\"common_causes_names\"][0]\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# data['df'] is just a regular pandas.DataFrame\n",
"df.causal.do(x=treatment,\n",
" variable_types={treatment: 'b', outcome: 'c', common_cause: 'c'},\n",
" outcome=outcome,\n",
" common_causes=[common_cause],\n",
" proceed_when_unidentifiable=True).groupby(treatment).mean().plot(y=outcome, kind='bar')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df.causal.do(x={treatment: 1}, \n",
" variable_types={treatment:'b', outcome: 'c', common_cause: 'c'}, \n",
" outcome=outcome,\n",
" method='weighting', \n",
" common_causes=[common_cause],\n",
" proceed_when_unidentifiable=True).groupby(treatment).mean().plot(y=outcome, kind='bar')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"cdf_1 = df.causal.do(x={treatment: 1}, \n",
" variable_types={treatment: 'b', outcome: 'c', common_cause: 'c'}, \n",
" outcome=outcome, \n",
" dot_graph=data['dot_graph'],\n",
" proceed_when_unidentifiable=True)\n",
"\n",
"cdf_0 = df.causal.do(x={treatment: 0}, \n",
" variable_types={treatment: 'b', outcome: 'c', common_cause: 'c'}, \n",
" outcome=outcome, \n",
" dot_graph=data['dot_graph'],\n",
" proceed_when_unidentifiable=True)\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" W0 | \n",
" v0 | \n",
" y | \n",
" propensity_score | \n",
" weight | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1.117996 | \n",
" False | \n",
" 2.497059 | \n",
" 0.333225 | \n",
" 3.000976 | \n",
"
\n",
" \n",
" 1 | \n",
" 0.238462 | \n",
" False | \n",
" 0.509070 | \n",
" 0.455258 | \n",
" 2.196556 | \n",
"
\n",
" \n",
" 2 | \n",
" 0.213945 | \n",
" False | \n",
" 2.279505 | \n",
" 0.458815 | \n",
" 2.179528 | \n",
"
\n",
" \n",
" 3 | \n",
" 0.425245 | \n",
" False | \n",
" -0.297296 | \n",
" 0.428336 | \n",
" 2.334615 | \n",
"
\n",
" \n",
" 4 | \n",
" 2.301323 | \n",
" False | \n",
" 3.431520 | \n",
" 0.200139 | \n",
" 4.996525 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 995 | \n",
" 0.621286 | \n",
" False | \n",
" 1.458936 | \n",
" 0.400531 | \n",
" 2.496683 | \n",
"
\n",
" \n",
" 996 | \n",
" 1.642750 | \n",
" False | \n",
" 3.409962 | \n",
" 0.268860 | \n",
" 3.719407 | \n",
"
\n",
" \n",
" 997 | \n",
" 0.409933 | \n",
" False | \n",
" -0.635569 | \n",
" 0.430529 | \n",
" 2.322722 | \n",
"
\n",
" \n",
" 998 | \n",
" -0.063154 | \n",
" False | \n",
" 0.953209 | \n",
" 0.499221 | \n",
" 2.003123 | \n",
"
\n",
" \n",
" 999 | \n",
" 1.532964 | \n",
" False | \n",
" 2.817101 | \n",
" 0.281662 | \n",
" 3.550353 | \n",
"
\n",
" \n",
"
\n",
"
1000 rows × 5 columns
\n",
"
"
],
"text/plain": [
" W0 v0 y propensity_score weight\n",
"0 1.117996 False 2.497059 0.333225 3.000976\n",
"1 0.238462 False 0.509070 0.455258 2.196556\n",
"2 0.213945 False 2.279505 0.458815 2.179528\n",
"3 0.425245 False -0.297296 0.428336 2.334615\n",
"4 2.301323 False 3.431520 0.200139 4.996525\n",
".. ... ... ... ... ...\n",
"995 0.621286 False 1.458936 0.400531 2.496683\n",
"996 1.642750 False 3.409962 0.268860 3.719407\n",
"997 0.409933 False -0.635569 0.430529 2.322722\n",
"998 -0.063154 False 0.953209 0.499221 2.003123\n",
"999 1.532964 False 2.817101 0.281662 3.550353\n",
"\n",
"[1000 rows x 5 columns]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cdf_0"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" W0 | \n",
" v0 | \n",
" y | \n",
" propensity_score | \n",
" weight | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1.055191 | \n",
" True | \n",
" 5.738184 | \n",
" 0.658568 | \n",
" 1.518446 | \n",
"
\n",
" \n",
" 1 | \n",
" 1.676538 | \n",
" True | \n",
" 7.187013 | \n",
" 0.735005 | \n",
" 1.360535 | \n",
"
\n",
" \n",
" 2 | \n",
" 0.111945 | \n",
" True | \n",
" 4.353155 | \n",
" 0.526346 | \n",
" 1.899889 | \n",
"
\n",
" \n",
" 3 | \n",
" -0.840229 | \n",
" True | \n",
" 3.503758 | \n",
" 0.389082 | \n",
" 2.570151 | \n",
"
\n",
" \n",
" 4 | \n",
" 0.556640 | \n",
" True | \n",
" 5.125285 | \n",
" 0.590361 | \n",
" 1.693878 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 995 | \n",
" 0.018338 | \n",
" True | \n",
" 6.145009 | \n",
" 0.512687 | \n",
" 1.950507 | \n",
"
\n",
" \n",
" 996 | \n",
" 0.094625 | \n",
" True | \n",
" 5.329991 | \n",
" 0.523821 | \n",
" 1.909048 | \n",
"
\n",
" \n",
" 997 | \n",
" 0.711712 | \n",
" True | \n",
" 4.394407 | \n",
" 0.612092 | \n",
" 1.633741 | \n",
"
\n",
" \n",
" 998 | \n",
" 1.928415 | \n",
" True | \n",
" 8.157832 | \n",
" 0.762678 | \n",
" 1.311169 | \n",
"
\n",
" \n",
" 999 | \n",
" -0.280647 | \n",
" True | \n",
" 5.377214 | \n",
" 0.469032 | \n",
" 2.132052 | \n",
"
\n",
" \n",
"
\n",
"
1000 rows × 5 columns
\n",
"
"
],
"text/plain": [
" W0 v0 y propensity_score weight\n",
"0 1.055191 True 5.738184 0.658568 1.518446\n",
"1 1.676538 True 7.187013 0.735005 1.360535\n",
"2 0.111945 True 4.353155 0.526346 1.899889\n",
"3 -0.840229 True 3.503758 0.389082 2.570151\n",
"4 0.556640 True 5.125285 0.590361 1.693878\n",
".. ... ... ... ... ...\n",
"995 0.018338 True 6.145009 0.512687 1.950507\n",
"996 0.094625 True 5.329991 0.523821 1.909048\n",
"997 0.711712 True 4.394407 0.612092 1.633741\n",
"998 1.928415 True 8.157832 0.762678 1.311169\n",
"999 -0.280647 True 5.377214 0.469032 2.132052\n",
"\n",
"[1000 rows x 5 columns]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cdf_1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Comparing the estimate to Linear Regression\n",
"First, estimating the effect using the causal data frame, and the 95% confidence interval."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle 5.092590494260132$"
],
"text/plain": [
"5.092590494260132"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(cdf_1['y'] - cdf_0['y']).mean()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle 0.17478007931409847$"
],
"text/plain": [
"0.17478007931409847"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"1.96*(cdf_1['y'] - cdf_0['y']).std() / np.sqrt(len(df))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Comparing to the estimate from OLS."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"OLS Regression Results\n",
"\n",
" Dep. Variable: | y | R-squared (uncentered): | 0.970 | \n",
"
\n",
"\n",
" Model: | OLS | Adj. R-squared (uncentered): | 0.970 | \n",
"
\n",
"\n",
" Method: | Least Squares | F-statistic: | 1.620e+04 | \n",
"
\n",
"\n",
" Date: | Tue, 02 Mar 2021 | Prob (F-statistic): | 0.00 | \n",
"
\n",
"\n",
" Time: | 20:29:26 | Log-Likelihood: | -1414.1 | \n",
"
\n",
"\n",
" No. Observations: | 1000 | AIC: | 2832. | \n",
"
\n",
"\n",
" Df Residuals: | 998 | BIC: | 2842. | \n",
"
\n",
"\n",
" Df Model: | 2 | | | \n",
"
\n",
"\n",
" Covariance Type: | nonrobust | | | \n",
"
\n",
"
\n",
"\n",
"\n",
" | coef | std err | t | P>|t| | [0.025 | 0.975] | \n",
"
\n",
"\n",
" x1 | 1.7444 | 0.031 | 55.843 | 0.000 | 1.683 | 1.806 | \n",
"
\n",
"\n",
" x2 | 5.0338 | 0.052 | 97.742 | 0.000 | 4.933 | 5.135 | \n",
"
\n",
"
\n",
"\n",
"\n",
" Omnibus: | 4.501 | Durbin-Watson: | 1.900 | \n",
"
\n",
"\n",
" Prob(Omnibus): | 0.105 | Jarque-Bera (JB): | 4.538 | \n",
"
\n",
"\n",
" Skew: | 0.147 | Prob(JB): | 0.103 | \n",
"
\n",
"\n",
" Kurtosis: | 2.851 | Cond. No. | 2.50 | \n",
"
\n",
"
Notes:
[1] R² is computed without centering (uncentered) since the model does not contain a constant.
[2] Standard Errors assume that the covariance matrix of the errors is correctly specified."
],
"text/plain": [
"\n",
"\"\"\"\n",
" OLS Regression Results \n",
"=======================================================================================\n",
"Dep. Variable: y R-squared (uncentered): 0.970\n",
"Model: OLS Adj. R-squared (uncentered): 0.970\n",
"Method: Least Squares F-statistic: 1.620e+04\n",
"Date: Tue, 02 Mar 2021 Prob (F-statistic): 0.00\n",
"Time: 20:29:26 Log-Likelihood: -1414.1\n",
"No. Observations: 1000 AIC: 2832.\n",
"Df Residuals: 998 BIC: 2842.\n",
"Df Model: 2 \n",
"Covariance Type: nonrobust \n",
"==============================================================================\n",
" coef std err t P>|t| [0.025 0.975]\n",
"------------------------------------------------------------------------------\n",
"x1 1.7444 0.031 55.843 0.000 1.683 1.806\n",
"x2 5.0338 0.052 97.742 0.000 4.933 5.135\n",
"==============================================================================\n",
"Omnibus: 4.501 Durbin-Watson: 1.900\n",
"Prob(Omnibus): 0.105 Jarque-Bera (JB): 4.538\n",
"Skew: 0.147 Prob(JB): 0.103\n",
"Kurtosis: 2.851 Cond. No. 2.50\n",
"==============================================================================\n",
"\n",
"Notes:\n",
"[1] R² is computed without centering (uncentered) since the model does not contain a constant.\n",
"[2] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
"\"\"\""
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = OLS(np.asarray(df[outcome]), np.asarray(df[[common_cause, treatment]], dtype=np.float64))\n",
"result = model.fit()\n",
"result.summary()"
]
}
],
"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
}