Skip to content

Commit be89340

Browse files
authored
Add files via upload
1 parent 8527ef5 commit be89340

9 files changed

+1873
-0
lines changed

BML.pdf

1.84 MB
Binary file not shown.

Example1.ipynb

+191
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {},
6+
"source": [
7+
"1. Compute the marginal distributions P(X) and P(Y)."
8+
]
9+
},
10+
{
11+
"cell_type": "code",
12+
"execution_count": 1,
13+
"metadata": {},
14+
"outputs": [],
15+
"source": [
16+
"import numpy as np\n",
17+
"import matplotlib.pyplot as plt"
18+
]
19+
},
20+
{
21+
"cell_type": "code",
22+
"execution_count": 2,
23+
"metadata": {},
24+
"outputs": [
25+
{
26+
"name": "stdout",
27+
"output_type": "stream",
28+
"text": [
29+
"[[0.1 0.2 0.05 0.05 0.1 ]\n",
30+
" [0.15 0.05 0. 0.1 0.2 ]]\n"
31+
]
32+
}
33+
],
34+
"source": [
35+
"# Build the matrix M which will hold our joint probability distribution, and print M\n",
36+
"M = np.asarray([[0.1,0.2,0.05,0.05,0.1],[0.15,0.05,0,0.1,0.2]])\n",
37+
"print(M)"
38+
]
39+
},
40+
{
41+
"cell_type": "code",
42+
"execution_count": 3,
43+
"metadata": {},
44+
"outputs": [
45+
{
46+
"name": "stdout",
47+
"output_type": "stream",
48+
"text": [
49+
"The distribution P(X) is [0.5 0.5].\n",
50+
"The distribution P(Y) is [0.25 0.25 0.05 0.15 0.3 ].\n"
51+
]
52+
}
53+
],
54+
"source": [
55+
"# Compute the marginal probabilities\n",
56+
"P_Y = np.sum(M,axis=0)\n",
57+
"P_X = np.sum(M,axis=1)\n",
58+
"print('The distribution P(X) is '+str(P_X)+'.')\n",
59+
"print('The distribution P(Y) is '+str(P_Y)+'.')"
60+
]
61+
},
62+
{
63+
"cell_type": "code",
64+
"execution_count": 4,
65+
"metadata": {},
66+
"outputs": [
67+
{
68+
"data": {
69+
"image/png": "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\n",
70+
"text/plain": [
71+
"<Figure size 432x288 with 2 Axes>"
72+
]
73+
},
74+
"metadata": {
75+
"needs_background": "light"
76+
},
77+
"output_type": "display_data"
78+
}
79+
],
80+
"source": [
81+
"# Create a bar plot to show the distribution P(Y).\n",
82+
"# We use a bar plot here instead of a line plot because the distribution is discrete.\n",
83+
"\n",
84+
"# Plot of the marginal distribution P(Y)\n",
85+
"plt.subplot(1, 2, 1) # layout to make 1 row, 2 columns of plots, and create to the 1st location.\n",
86+
"dom_Y = [1,2,3,4,5]\n",
87+
"plt.bar(dom_Y,P_Y)\n",
88+
"plt.title('Marginal Distribution P(Y)');\n",
89+
"plt.xlabel('Y');\n",
90+
"plt.ylabel('Probablity');\n",
91+
"\n",
92+
"# Plot of the marginal distribution P(X)\n",
93+
"plt.subplot(1, 2, 2) # layout to make 1 row, 2 columns of plots, and create to the 2nd location.\n",
94+
"dom_X = ['A','B']\n",
95+
"plt.bar(dom_X,P_X)\n",
96+
"plt.title('Marginal Distribution P(X)');\n",
97+
"plt.xlabel('X');\n",
98+
"plt.ylabel('Probablity');\n",
99+
"plt.tight_layout() # this cleans up the spacing for plots and labels."
100+
]
101+
},
102+
{
103+
"cell_type": "markdown",
104+
"metadata": {},
105+
"source": [
106+
"2. What is the value of the conditional probability P(X = A|Y = 2)? Compute the distribution P(X|Y=2)."
107+
]
108+
},
109+
{
110+
"cell_type": "code",
111+
"execution_count": 5,
112+
"metadata": {},
113+
"outputs": [
114+
{
115+
"name": "stdout",
116+
"output_type": "stream",
117+
"text": [
118+
"P(X = A|Y = 2) = 0.8\n"
119+
]
120+
}
121+
],
122+
"source": [
123+
"cond_prob = M[0,1]/P_Y[1]\n",
124+
"print('P(X = A|Y = 2) = '+str(cond_prob))"
125+
]
126+
},
127+
{
128+
"cell_type": "code",
129+
"execution_count": 6,
130+
"metadata": {},
131+
"outputs": [
132+
{
133+
"name": "stdout",
134+
"output_type": "stream",
135+
"text": [
136+
"P(X|Y = 2) = [0.8 0.2]\n"
137+
]
138+
}
139+
],
140+
"source": [
141+
"cond_prob_dist = M[:,1]/P_Y[1]\n",
142+
"print('P(X|Y = 2) = '+str(cond_prob_dist))"
143+
]
144+
},
145+
{
146+
"cell_type": "markdown",
147+
"metadata": {},
148+
"source": [
149+
"3. Are the variables X and Y independent? Why or why not?"
150+
]
151+
},
152+
{
153+
"cell_type": "code",
154+
"execution_count": 7,
155+
"metadata": {},
156+
"outputs": [
157+
{
158+
"name": "stdout",
159+
"output_type": "stream",
160+
"text": [
161+
"The are not independent because P(X=A|Y=2) = 0.8 while P(X=A) = 0.5.\n"
162+
]
163+
}
164+
],
165+
"source": [
166+
"print('The are not independent because P(X=A|Y=2) = 0.8 while P(X=A) = 0.5.')"
167+
]
168+
}
169+
],
170+
"metadata": {
171+
"kernelspec": {
172+
"display_name": "Python 3",
173+
"language": "python",
174+
"name": "python3"
175+
},
176+
"language_info": {
177+
"codemirror_mode": {
178+
"name": "ipython",
179+
"version": 3
180+
},
181+
"file_extension": ".py",
182+
"mimetype": "text/x-python",
183+
"name": "python",
184+
"nbconvert_exporter": "python",
185+
"pygments_lexer": "ipython3",
186+
"version": "3.7.0"
187+
}
188+
},
189+
"nbformat": 4,
190+
"nbformat_minor": 4
191+
}

Example5.ipynb

+178
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "code",
5+
"execution_count": 8,
6+
"metadata": {},
7+
"outputs": [],
8+
"source": [
9+
"import numpy as np\n",
10+
"from scipy.stats import binom"
11+
]
12+
},
13+
{
14+
"cell_type": "code",
15+
"execution_count": 17,
16+
"metadata": {},
17+
"outputs": [
18+
{
19+
"name": "stdout",
20+
"output_type": "stream",
21+
"text": [
22+
"0.00011281697127222492\n"
23+
]
24+
}
25+
],
26+
"source": [
27+
"# Comoute the likelihood for a type A coin\n",
28+
"k = 68\n",
29+
"N = 100\n",
30+
"p = 0.5\n",
31+
"likelihood_A = binom.pmf(k, N, p)\n",
32+
"print(likelihood_A)"
33+
]
34+
},
35+
{
36+
"cell_type": "code",
37+
"execution_count": 18,
38+
"metadata": {},
39+
"outputs": [
40+
{
41+
"name": "stdout",
42+
"output_type": "stream",
43+
"text": [
44+
"0.02475256392905903\n"
45+
]
46+
}
47+
],
48+
"source": [
49+
"# Comoute the likelihood for a type B coin\n",
50+
"k = 68\n",
51+
"N = 100\n",
52+
"p = 0.75\n",
53+
"likelihood_B = binom.pmf(k, N, p)\n",
54+
"print(likelihood_B)"
55+
]
56+
},
57+
{
58+
"cell_type": "code",
59+
"execution_count": 11,
60+
"metadata": {},
61+
"outputs": [
62+
{
63+
"name": "stdout",
64+
"output_type": "stream",
65+
"text": [
66+
"0.06976854622494563\n"
67+
]
68+
}
69+
],
70+
"source": [
71+
"# Comoute the likelihood for a type C coin\n",
72+
"k = 68\n",
73+
"N = 100\n",
74+
"p = 0.6\n",
75+
"likelihood_C = binom.pmf(k, N, p)\n",
76+
"print(likelihood_C)"
77+
]
78+
},
79+
{
80+
"cell_type": "code",
81+
"execution_count": 14,
82+
"metadata": {},
83+
"outputs": [],
84+
"source": [
85+
"# Create variables for the priors\n",
86+
"prior_A = 0.998\n",
87+
"prior_B = 0.001\n",
88+
"prior_C = 0.001"
89+
]
90+
},
91+
{
92+
"cell_type": "code",
93+
"execution_count": 15,
94+
"metadata": {},
95+
"outputs": [
96+
{
97+
"name": "stdout",
98+
"output_type": "stream",
99+
"text": [
100+
"0.00020711244748368516\n"
101+
]
102+
}
103+
],
104+
"source": [
105+
"# Compute the total probability\n",
106+
"total_probabilty = likelihood_A*prior_A + likelihood_B*prior_B + likelihood_C*prior_C\n",
107+
"print(total_probabilty)"
108+
]
109+
},
110+
{
111+
"cell_type": "code",
112+
"execution_count": 16,
113+
"metadata": {},
114+
"outputs": [
115+
{
116+
"name": "stdout",
117+
"output_type": "stream",
118+
"text": [
119+
"0.5436241939951466\n",
120+
"0.11951268129844712\n",
121+
"0.33686312470640617\n"
122+
]
123+
}
124+
],
125+
"source": [
126+
"# Compute the posterior probabilities\n",
127+
"probability_type_A = likelihood_A*prior_A/total_probabilty\n",
128+
"print(probability_type_A)\n",
129+
"probability_type_B = likelihood_B*prior_B/total_probabilty\n",
130+
"print(probability_type_B)\n",
131+
"probability_type_C = likelihood_C*prior_C/total_probabilty\n",
132+
"print(probability_type_C)"
133+
]
134+
},
135+
{
136+
"cell_type": "code",
137+
"execution_count": 7,
138+
"metadata": {},
139+
"outputs": [
140+
{
141+
"name": "stdout",
142+
"output_type": "stream",
143+
"text": [
144+
"[0.8388211 0.1611789]\n"
145+
]
146+
}
147+
],
148+
"source": [
149+
"# Same computation, but using vectors\n",
150+
"likelihoods = np.asarray([likelihood_A,likelihood_B])\n",
151+
"priors = np.asarray([prior_A,prior_B])\n",
152+
"posterior_probabilities = likelihoods*priors/total_probabilty\n",
153+
"print(posterior_probabilities)"
154+
]
155+
}
156+
],
157+
"metadata": {
158+
"kernelspec": {
159+
"display_name": "Python 3",
160+
"language": "python",
161+
"name": "python3"
162+
},
163+
"language_info": {
164+
"codemirror_mode": {
165+
"name": "ipython",
166+
"version": 3
167+
},
168+
"file_extension": ".py",
169+
"mimetype": "text/x-python",
170+
"name": "python",
171+
"nbconvert_exporter": "python",
172+
"pygments_lexer": "ipython3",
173+
"version": "3.7.0"
174+
}
175+
},
176+
"nbformat": 4,
177+
"nbformat_minor": 4
178+
}

0 commit comments

Comments
 (0)