Skip to content

Instantly share code, notes, and snippets.

@akelleh
Last active November 7, 2017 12:55
Show Gist options
  • Save akelleh/0bf4a8be1dac9ff40d07a5416418ad0d to your computer and use it in GitHub Desktop.
Save akelleh/0bf4a8be1dac9ff40d07a5416418ad0d 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": "markdown",
"metadata": {},
"source": [
"#### Let's generate some data, where X causes Y, but they're confounded by Z"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as pp\n",
"from causality.analysis.dataframe import CausalDataFrame\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nAdZMAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f7293f065d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"N = 1000\n",
"\n",
"z = np.random.normal(1., size=N)\n",
"x = np.random.binomial(1, p=1./(1. + np.exp(z/.1)))\n",
"y = x + z + np.random.normal(size=N)\n",
"\n",
"# It's easy to create a data frame\n",
"df = CausalDataFrame({'x': x, 'y': y, 'z': z})\n",
"\n",
"# and the interface to zplot is basically the same as the pandas.DataFrame.plot method!\n",
"df.zplot(x='x', y='y', z={'z': 'c'}, kind='mean', bootstrap_samples=1000); pp.ylabel(\"$E[Y|do(X=x)]$\"); pp.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### So we can control for Z just by passing Z and its type ('c' = \"continuous\") to the plotting method! Compare this result with the naive estimates of the conditional expectation of Y ..."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f724dab1110>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df.groupby('x').mean().plot(y='y', \n",
" kind='bar', \n",
" yerr=1.96*df.groupby('x').std() / np.sqrt(df.groupby('x').count())); \n",
"pp.ylabel(\"$E[Y|X=x]$\"); pp.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"so we have an example of Simpson's paradox! Controlling for Z made the treatment, X = 1, switch from being higher outcome than control, X=0, to lower!"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.12"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment