def show_sigmas_for_2_kappas(): # generate the Gaussian data xs = np.arange(-4, 4, 0.1) mean = 0 sigma = 1.5 ys = [stats.gaussian(x, mean, sigma * sigma) for x in xs] #generate our samples kappa = 2 x0, x1, x2 = _sigma_points(mean, sigma, kappa) samples = [x0, x1, x2] for x in samples: p1 = plt.scatter([x], [stats.gaussian(x, mean, sigma * sigma)], s=80, color='k') kappa = -.5 x0, x1, x2 = _sigma_points(mean, sigma, kappa) samples = [x0, x1, x2] for x in samples: p2 = plt.scatter([x], [stats.gaussian(x, mean, sigma * sigma)], s=80, color='b') plt.legend([p1, p2], ['$kappa$=2', '$kappa$=-0.5']) plt.plot(xs, ys) plt.show()
def show_sigmas_for_2_kappas(): # generate the Gaussian data xs = np.arange(-4, 4, 0.1) mean = 0 sigma = 1.5 ys = [stats.gaussian(x, mean, sigma*sigma) for x in xs] #generate our samples kappa = 2 x0,x1,x2 = _sigma_points(mean, sigma, kappa) samples = [x0,x1,x2] for x in samples: p1 = plt.scatter([x], [stats.gaussian(x, mean, sigma*sigma)], s=80, color='k') kappa = -.5 x0,x1,x2 = _sigma_points(mean, sigma, kappa) samples = [x0,x1,x2] for x in samples: p2 = plt.scatter([x], [stats.gaussian(x, mean, sigma*sigma)], s=80, color='b') plt.legend([p1,p2], ['$kappa$=2', '$kappa$=-0.5']) plt.plot(xs, ys) plt.show()
def show_3_sigma_points(): xs = np.arange(-4, 4, 0.1) var = 1.5 ys = [stats.gaussian(x, 0, var) for x in xs] samples = [0, 1.2, -1.2] for x in samples: plt.scatter ([x], [stats.gaussian(x, 0, var)], s=80) plt.plot(xs, ys) plt.show()
def show_3_sigma_points(): xs = np.arange(-4, 4, 0.1) var = 1.5 ys = [stats.gaussian(x, 0, var) for x in xs] samples = [0, 1.2, -1.2] for x in samples: plt.scatter([x], [stats.gaussian(x, 0, var)], s=80) plt.plot(xs, ys) plt.show()
def plot_gaussian_multiply(): xs = np.arange(-5, 10, 0.1) mean1, var1 = 0, 5 mean2, var2 = 5, 1 mean, var = stats.mul(mean1, var1, mean2, var2) ys = [stats.gaussian(x, mean1, var1) for x in xs] plt.plot(xs, ys, label='M1') ys = [stats.gaussian(x, mean2, var2) for x in xs] plt.plot(xs, ys, label='M2') ys = [stats.gaussian(x, mean, var) for x in xs] plt.plot(xs, ys, label='M1 x M2') plt.legend() plt.show()
def display_stddev_plot(): xs = np.arange(10, 30, 0.1) var = 8 stddev = math.sqrt(var) p2, = plt.plot(xs, [stats.gaussian(x, 20, var) for x in xs]) x = 20 + stddev y = stats.gaussian(x, 20, var) plt.plot([x, x], [0, y], "g") plt.plot([20 - stddev, 20 - stddev], [0, y], "g") y = stats.gaussian(20, 20, var) plt.plot([20, 20], [0, y], "b") ax = plt.axes() ax.annotate("68%", xy=(20.3, 0.045)) ax.annotate( "", xy=(20 - stddev, 0.04), xytext=(x, 0.04), arrowprops=dict(arrowstyle="<->", ec="r", shrinkA=2, shrinkB=2) ) ax.xaxis.set_ticks([20 - stddev, 20, 20 + stddev]) ax.xaxis.set_ticklabels(["$-\sigma$", "$\mu$", "$\sigma$"]) ax.yaxis.set_ticks([]) plt.show()
def test_gaussian(): import scipy.stats mean = 3. var = 1.5 std = var**0.5 for i in np.arange(-5,5,0.1): p0 = scipy.stats.norm(mean, std).pdf(i) p1 = gaussian(i, mean, var) assert near_equal(p0, p1)
def display_stddev_plot(): xs = np.arange(10, 30, 0.1) var = 8 stddev = math.sqrt(var) p2, = plt.plot(xs, [stats.gaussian(x, 20, var) for x in xs]) x = 20 + stddev y = stats.gaussian(x, 20, var) plt.plot([x, x], [0, y], 'g') plt.plot([20 - stddev, 20 - stddev], [0, y], 'g') y = stats.gaussian(20, 20, var) plt.plot([20, 20], [0, y], 'b') ax = plt.axes() ax.annotate('68%', xy=(20.3, 0.045)) ax.annotate('', xy=(20 - stddev, 0.04), xytext=(x, 0.04), arrowprops=dict(arrowstyle="<->", ec="r", shrinkA=2, shrinkB=2)) ax.xaxis.set_ticks([20 - stddev, 20, 20 + stddev]) ax.xaxis.set_ticklabels(['$-\sigma$', '$\mu$', '$\sigma$']) ax.yaxis.set_ticks([]) plt.show()
def display_stddev_plot(): figsize = pylab.rcParams['figure.figsize'] pylab.rcParams['figure.figsize'] = 12,6 xs = np.arange(10,30,0.1) var = 8; stddev = math.sqrt(var) p2, = plt.plot (xs,[stats.gaussian(x, 20, var) for x in xs]) x = 20+stddev y = stats.gaussian(x, 20, var) plt.plot ([x,x], [0,y],'g') plt.plot ([20-stddev, 20-stddev], [0,y], 'g') y = stats.gaussian(20,20,var) plt.plot ([20,20],[0,y],'b') ax = plt.axes() ax.annotate('68%', xy=(20.3, 0.045)) ax.annotate('', xy=(20-stddev,0.04), xytext=(x,0.04), arrowprops=dict(arrowstyle="<->", ec="r", shrinkA=2, shrinkB=2)) ax.xaxis.set_ticks ([20-stddev, 20, 20+stddev]) ax.xaxis.set_ticklabels(['$-\sigma$','$\mu$','$\sigma$']) ax.yaxis.set_ticks([]) plt.show()
def plot_gaussian(mu, variance, mu_line=False, xlim=None, xlabel=None, ylabel=None): xs = np.arange(mu - variance * 2, mu + variance * 2, 0.1) ys = [stats.gaussian(x, mu, variance) * 100 for x in xs] plt.plot(xs, ys) if mu_line: plt.axvline(mu) if xlim: plt.xlim(xlim) if xlabel: plt.xlabel(xlabel) if ylabel: plt.ylabel(ylabel) plt.show()