Cookie Problem¶
Imports¶
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
import seaborn as sns
import empiricaldist
from empiricaldist import Pmf, Distribution
Basics Pmf¶
d6 = Pmf(); d6
probs |
---|
for i in range(6):
# print(i+1)
d6[i+1] = 1
d6
probs | |
---|---|
1 | 1 |
2 | 1 |
3 | 1 |
4 | 1 |
5 | 1 |
6 | 1 |
# Pmf??
# Distribution??
d6.normalize(); d6
probs | |
---|---|
1 | 0.166667 |
2 | 0.166667 |
3 | 0.166667 |
4 | 0.166667 |
5 | 0.166667 |
6 | 0.166667 |
# d6
d6.mean()
3.5
d6.choice(size=10)
array([5, 5, 5, 1, 6, 2, 6, 1, 6, 2])
def decorate_dice(title):
"""Labels the axes
title: string
"""
plt.xlabel('Outcome')
plt.ylabel('PMF')
plt.title(title)
# d6.bar(xlabel='Outcome')
d6.bar()
decorate_dice('One die')
twice = d6.add_dist(d6)
twice
probs | |
---|---|
2 | 0.027778 |
3 | 0.055556 |
4 | 0.083333 |
5 | 0.111111 |
6 | 0.138889 |
7 | 0.166667 |
8 | 0.138889 |
9 | 0.111111 |
10 | 0.083333 |
11 | 0.055556 |
12 | 0.027778 |
twice.bar()
decorate_dice('Two Dice')
d6.add_dist??
d6.ps, d6.qs
(array([0.16666667, 0.16666667, 0.16666667, 0.16666667, 0.16666667,
0.16666667]),
array([1, 2, 3, 4, 5, 6]))
d6
probs | |
---|---|
1 | 0.166667 |
2 | 0.166667 |
3 | 0.166667 |
4 | 0.166667 |
5 | 0.166667 |
6 | 0.166667 |
twice.mean()
7.000000000000002
twice[twice.qs >3].mean()
0.10185185185185187
twice[twice.qs >3].plot.bar()
<AxesSubplot:>
twice[twice.qs >3].mean()
0.10185185185185187
twice[1] = 0
twice[2] = 0
twice.normalize()
twice.mean()
7.142857142857141
twice.bar()
decorate_dice('Two dice, greater than 3')
Pmf => Prior probability
Likelihood => Multiply each prior probability by the likelihood of data
Normalize => Add all up and divide by total
Cookie Problem¶
cookie = Pmf.from_seq(['B1', 'B2']); priors
probs | |
---|---|
B1 | 0.5 |
B2 | 0.5 |
cookie['B1']*=0.75
cookie['B2']*=0.5
cookie
probs | |
---|---|
B1 | 0.375 |
B2 | 0.250 |
cookie.normalize()
0.625
cookie
probs | |
---|---|
B1 | 0.6 |
B2 | 0.4 |
cookie['B1']*=0.25
cookie['B2']*=0.5
cookie.normalize()
0.35
cookie
probs | |
---|---|
B1 | 0.428571 |
B2 | 0.571429 |
cookie2 = Pmf.from_seq(["B1", "B2"])
cookie2['B1']*= (0.75*0.25)
cookie2['B2']*=(0.5*0.5)
cookie2.normalize()
0.21875
cookie2
probs | |
---|---|
B1 | 0.428571 |
B2 | 0.571429 |
# cookie['B1B1']*=0.75
# cookie['B1B2']*=0.
d6.normalize??