from datascience import *
import numpy as np
import matplotlib
%matplotlib inline
import matplotlib.pyplot as plots
plots.style.use('fivethirtyeight')
def bayes_rule(pr_a, pr_b_given_a, pr_b_given_not_a):
"""
Bayes' Rule
P(A | B) = P(A)P(B|A) / P(B)
To Compute P(B)
P(B) = P(B, A) + P(B, Not A)
= P(A)P(B|A) + P(Not A)P(B | Not A)
"""
prb_b = pr_a * pr_b_given_a + (1-pr_a) * pr_b_given_not_a
return pr_a * pr_b_given_a / prb_b
pr_disease = 1/1000
pr_pos_given_disease = 0.99
pr_pos_given_no_disease = 0.05
bayes_rule(pr_disease, pr_pos_given_disease, pr_pos_given_no_disease)
0.019434628975265017
pr_disease = 0.1
pr_pos_given_disease = 0.99
pr_pos_given_no_disease = 0.05
bayes_rule(pr_disease, pr_pos_given_disease, pr_pos_given_no_disease)
0.6875
pr_disease = np.arange(1,999)/1000
pr_pos_given_disease = 0.99
pr_pos_given_no_disease = 0.05
post = bayes_rule(pr_disease, pr_pos_given_disease, pr_pos_given_no_disease)
Table().with_columns(
"Prior Pr(Disease)", pr_disease,
"Posterior Pr(Disease | Pos. Test)", post).iplot("Prior Pr(Disease)")