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 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 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()
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()