In [10]:
import numpy as np
import math
import matplotlib.mlab as mlab
#plotting
from matplotlib import pyplot as plt
import seaborn as sns
from IPython.core.debugger import Tracer
import warnings
from jupyterthemes import jtplot
%matplotlib inline
jtplot.style()
sns.set_context("poster")
# plt.style.use('fivethirtyeight')
warnings.filterwarnings("ignore")
In [37]:
def gaussian(X, mu, sigma):
def f(x):
return 1/math.sqrt(2*math.pi * sigma**2) * math.exp(-.5*(x - mu)**2/sigma**2)
return [f(x) for x in X]
In [11]:
def mu_prime(sigma2, r2, mu, v):
return 1/(sigma2 + r2) * (r2*mu + sigma2*v)
def sigma_prime(sigma2, r2):
return 1/(1/sigma2 + 1/r2)
def update(mean1, var1, mean2, var2):
new_mean = mu_prime(var1, var2, mean1, mean2)
new_var = sigma_prime(var1, var2)
return [new_mean, new_var]
In [38]:
def plot_gaussian(mu, variance, std_dev=3, steps=1000):
sigma = math.sqrt(variance)
X = np.linspace(mu-std_dev*variance,mu+std_dev*variance, steps)
plt.plot(X, gaussian(X, mu, sigma))
In [39]:
plot_gaussian(10,1)
In [ ]: