2
0
Fork 0
mirror of https://github.com/MartinThoma/LaTeX-examples.git synced 2025-04-26 06:48:04 +02:00
LaTeX-examples/presentations/causality-presentation/pynb/Interventions.ipynb

144 lines
15 KiB
Text
Raw Normal View History

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from scipy.stats import bernoulli\n",
"import matplotlib.pyplot as plt; plt.rcdefaults()\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from sympy import latex"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def generate_data(n):\n",
" \"\"\"\n",
" Generate n datapoints for 3 variables A, H, B\n",
" with the model\n",
" A -> H -> B\n",
" \"\"\"\n",
"\n",
" data = []\n",
" for i in range(n):\n",
" N_A = bernoulli.rvs(1./20)\n",
" N_H = bernoulli.rvs(1./3)\n",
" N_B = bernoulli.rvs(1./2)\n",
" A = N_A\n",
" H = (A + N_H) % 2\n",
" B = (H + N_B) % 2\n",
" data.append((A, H, B))\n",
" return data"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\ndcpMj4jNABHxPHB+jTK
"text/plain": [
"<matplotlib.figure.Figure at 0x7fc41c826cd0>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"p(H=0|A=0) = 0.67\n",
"p(H=0|A=1) = 0.32\n",
"p(H=0|B=0) = 0.65\n",
"p(H=0|B=1) = 0.65\n"
]
}
],
"source": [
"%matplotlib inline\n",
"\n",
"\n",
"data = generate_data(100000)\n",
"\n",
"# Example data\n",
"people = ('(0,0,0)', '(0,0,1)', '(0,1,0)', '(0,1,1)', '(1,0,0)', '(1,0,1)', '(1,1,0)', '(1,1,1)')\n",
"get_bin = lambda x, n: x >= 0 and str(bin(x))[2:].zfill(n) or \"-\" + str(bin(x))[3:].zfill(n)\n",
"y_pos = np.arange(len(people))\n",
"# ('(0,0,0)', '(0,0,1)', '(0,1,0)', '(0,1,1)', '(1,0,0)', '(1,0,1)', '(1,1,0)', '(1,1,1)')\n",
"count = [sum([1 for d in data if map(int, list(get_bin(i, 3))) == list(d)]) for i in range(8)]\n",
"\n",
"error = np.random.rand(len(people))\n",
"\n",
"plt.barh(y_pos, count, xerr=error, align='center', alpha=0.4)\n",
"plt.yticks(y_pos, people)\n",
"plt.xlabel('Anzahl fur (A, H, B)')\n",
"plt.title('Ergebnisse')\n",
"\n",
"plt.show()\n",
"\n",
"from sympy.interactive import printing\n",
"printing.init_printing(use_latex=True)\n",
"p_1 = (count[0] + count[1]) # h=0 and A=0\n",
"p_2 = (count[4] + count[5]) # h=0 and A=1\n",
"p_3 = (count[2] + count[3]) # h=1 and A=0\n",
"p_4 = (count[6] + count[7]) # h=1 and A=1\n",
"print(latex(\"p(H=0|A=0) = %0.2f\" % (p_1/float(p_1+p_3))))\n",
"print(latex(\"p(H=0|A=1) = %0.2f\" % (p_2/float(p_2+p_4))))\n",
"\n",
"p_1 = (count[0] + count[4]) # h=0 and B=0\n",
"p_2 = (count[1] + count[5]) # h=0 and B=1\n",
"p_3 = (count[2] + count[6]) # h=1 and B=0\n",
"p_4 = (count[3] + count[7]) # h=1 and B=1\n",
"print(latex(\"p(H=0|B=0) = %0.2f\" % (p_1/float(p_1+p_3))))\n",
"print(latex(\"p(H=0|B=1) = %0.2f\" % (p_2/float(p_2+p_4))))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"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.8"
}
},
"nbformat": 4,
"nbformat_minor": 0
}