mv'ed gaussian.py to stats.py

The name was horrible, we were using gaussian.gaussian() to compute
gaussians. stats.gaussian() is much better. Updated all notebooks
and scripts to reflect the change.
This commit is contained in:
Roger Labbe 2014-05-10 11:25:52 -07:00
parent a7d8371b36
commit 09fa08f73e
5 changed files with 39 additions and 36 deletions

View File

@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:9184f3be6129a4cf39b259921633ec76099fb8ca364fd39a633da1920257669b"
"signature": "sha256:20b4feb883a71cab956a175006257f6c548b074ace2a845bd9dc5c1c1f9b7a91"
},
"nbformat": 3,
"nbformat_minor": 0,
@ -83,7 +83,7 @@
"cell_type": "code",
"collapsed": false,
"input": [
"from gaussian import gaussian\n",
"from stats import gaussian\n",
"plot_gaussian(22,4,True,xlabel='$^{\\circ}C$',ylabel=\"Percent\")\n",
"\n",
"print('Probability of 22 is %.2f' % (gaussian(22,22,4)*100))\n",
@ -103,7 +103,11 @@
"\n",
"> *Important*: I will repeat what I wrote at the top of this section: \"A Gaussian...is completely described with two parameters\"\n",
"\n",
"The standard notation for a normal distribution for a random variable $X$ is $X \\sim\\ \\mathcal{N}(\\mu,\\sigma^2)$. This means I can express the temperature reading of our thermometer as $$temp = \\mathcal{N}(22,4)$$This is an **extremely important** result. Gaussians allow me to capture an infinite number of possible values with only two numbers! With the values $\\mu=22$ and $\\sigma^2=4$ I can compute the probability of the temperature being $22\\,^{\\circ}C$, of $20\\,^{\\circ}C$, of $87.3429\\,^{\\circ}C$, or any other arbitrary value.\n",
"The standard notation for a normal distribution for a random variable $X$ is $X \\sim\\ \\mathcal{N}(\\mu,\\sigma^2)$. This means I can express the temperature reading of our thermometer as\n",
"\n",
"$$temp = \\mathcal{N}(22,4)$$\n",
"\n",
"This is an **extremely important** result. Gaussians allow me to capture an infinite number of possible values with only two numbers! With the values $\\mu=22$ and $\\sigma^2=4$ I can compute the probability of the temperature being $22\\,^{\\circ}C$, of $20\\,^{\\circ}C$, of $87.3429\\,^{\\circ}C$, or any other arbitrary value.\n",
"\n",
"###### The Variance\n",
"\n",

View File

@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:91af593ec32629bec5fa5a58b7f5ae29e79fc039fe09b20d37c26dca0ac20430"
"signature": "sha256:f5b17ce3aa0755a19e9550b31e0a75c9c255bb570b57e1e26c533de072549821"
},
"nbformat": 3,
"nbformat_minor": 0,
@ -193,8 +193,8 @@
"cell_type": "code",
"collapsed": false,
"input": [
"import gaussian\n",
"gaussian.norm_plot(23, 5)"
"import stats\n",
"stats.norm_plot(23, 5)"
],
"language": "python",
"metadata": {},
@ -289,7 +289,6 @@
"cell_type": "code",
"collapsed": false,
"input": [
"import gaussian\n",
"import numpy as np\n",
"\n",
"def multiply(mu1, sig1, mu2, sig2):\n",
@ -303,10 +302,10 @@
"m1,s1 = 23, 5\n",
"m, s = multiply(m1,s1,m1,s1)\n",
"\n",
"ys = [gaussian.gaussian(x,m1,s1) for x in xs]\n",
"ys = [stats.gaussian(x,m1,s1) for x in xs]\n",
"p1, = plt.plot (xs,ys)\n",
"\n",
"ys = [gaussian.gaussian(x,m,s) for x in xs]\n",
"ys = [stats.gaussian(x,m,s) for x in xs]\n",
"p2, = plt.plot (xs,ys)\n",
"\n",
"plt.legend([p1,p2],['original', 'multiply'])\n",
@ -339,13 +338,13 @@
"m2,s2 = 25, 5\n",
"m, s = multiply(m1,s1,m2,s2)\n",
"\n",
"ys = [gaussian.gaussian(x,m1,s1) for x in xs]\n",
"ys = [stats.gaussian(x,m1,s1) for x in xs]\n",
"p1, = plt.plot (xs,ys)\n",
"\n",
"ys = [gaussian.gaussian(x,m2,s2) for x in xs]\n",
"ys = [stats.gaussian(x,m2,s2) for x in xs]\n",
"p2, = plt.plot (xs,ys)\n",
"\n",
"ys = [gaussian.gaussian(x,m,s) for x in xs]\n",
"ys = [stats.gaussian(x,m,s) for x in xs]\n",
"p3, = plt.plot(xs,ys)\n",
"plt.legend([p1,p2,p3],['measure 1', 'measure 2', 'multiply'])\n",
"plt.show()"
@ -379,13 +378,13 @@
"m2,s2 = 50, 5\n",
"m, s = multiply(m1,s1,m2,s2)\n",
"\n",
"ys = [gaussian.gaussian(x,m1,s1) for x in xs]\n",
"ys = [stats.gaussian(x,m1,s1) for x in xs]\n",
"p1, = plt.plot (xs,ys)\n",
"\n",
"ys = [gaussian.gaussian(x,m2,s2) for x in xs]\n",
"ys = [stats.gaussian(x,m2,s2) for x in xs]\n",
"p2, = plt.plot (xs,ys)\n",
"\n",
"ys = [gaussian.gaussian(x,m,s) for x in xs]\n",
"ys = [stats.gaussian(x,m,s) for x in xs]\n",
"p3, = plt.plot(xs,ys)\n",
"plt.legend([p1,p2,p3],['measure 1', 'measure 2', 'multiply'])\n",
"plt.show()"
@ -779,7 +778,7 @@
"\n",
" voltage = update(voltage[0], voltage[1], movement, movement_error)\n",
"\n",
"plt.scatter(range(N), zs,marker='+')\n",
"plt.scatter(range(N), zs, marker='+')\n",
"p1, = plt.plot(ps, c='g')\n",
"plt.legend([p1], ['filter'], 3)\n",
"plt.xlim((0,N));plt.ylim((0,30))\n",

View File

@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:c85d72f3d31f37b3edfae8ecdc7e79438bde16b84b6d6d119c4edfc1239913d8"
"signature": "sha256:fd542341131473089289548f12ba7f78ac88663ce51e586ff357c5fb48c3eb91"
},
"nbformat": 3,
"nbformat_minor": 0,
@ -81,7 +81,7 @@
"cell_type": "code",
"collapsed": false,
"input": [
"from gaussian import gaussian, multivariate_gaussian"
"from stats import gaussian, multivariate_gaussian"
],
"language": "python",
"metadata": {},
@ -241,23 +241,23 @@
"cell_type": "code",
"collapsed": false,
"input": [
"import gaussian as g\n",
"import stats\n",
"\n",
"cov = np.array([[2,0],[0,2]])\n",
"e = g.sigma_ellipse (cov, 2, 7)\n",
"e = stats.sigma_ellipse (cov, 2, 7)\n",
"plt.subplot(131)\n",
"g.plot_sigma_ellipse(e, '|2 0|\\n|0 2|')\n",
"stats.plot_sigma_ellipse(e, '|2 0|\\n|0 2|')\n",
"\n",
"\n",
"cov = np.array([[2,0],[0,9]])\n",
"e = g.sigma_ellipse (cov, 2, 7)\n",
"e = stats.sigma_ellipse (cov, 2, 7)\n",
"plt.subplot(132)\n",
"g.plot_sigma_ellipse(e, '|2 0|\\n|0 9|')\n",
"stats.plot_sigma_ellipse(e, '|2 0|\\n|0 9|')\n",
"\n",
"plt.subplot(133)\n",
"cov = np.array([[2,1.2],[1.2,3]])\n",
"e = g.sigma_ellipse (cov, 2, 7)\n",
"g.plot_sigma_ellipse(e,'|2 1.2|\\n|1.2 2|')\n",
"e = stats.sigma_ellipse (cov, 2, 7)\n",
"stats.plot_sigma_ellipse(e,'|2 1.2|\\n|1.2 2|')\n",
"plt.show()"
],
"language": "python",
@ -351,10 +351,10 @@
"input": [
"cov = np.array([[0.003,0], [0,12]])\n",
"sigma=[0.5,1.,1.5,2]\n",
"e1 = g.sigma_ellipses(cov, x=1, y=1, sigma=sigma)\n",
"e2 = g.sigma_ellipses(cov, x=2, y=2, sigma=sigma)\n",
"e3 = g.sigma_ellipses(cov, x=3, y=3, sigma=sigma)\n",
"g.plot_sigma_ellipses([e1, e2, e3], axis_equal=True,x_lim=[0,4],y_lim=[0,15])\n",
"e1 = stats.sigma_ellipses(cov, x=1, y=1, sigma=sigma)\n",
"e2 = stats.sigma_ellipses(cov, x=2, y=2, sigma=sigma)\n",
"e3 = stats.sigma_ellipses(cov, x=3, y=3, sigma=sigma)\n",
"stats.plot_sigma_ellipses([e1, e2, e3], axis_equal=True,x_lim=[0,4],y_lim=[0,15])\n",
"plt.ylim([0,11])\n",
"plt.show()"
],
@ -380,11 +380,11 @@
"from matplotlib.patches import Ellipse\n",
"\n",
"cov = np.array([[1,1],[1,1.1]])\n",
"ev = g.sigma_ellipses(cov, x=2, y=2, sigma=sigma)\n",
"ev = stats.sigma_ellipses(cov, x=2, y=2, sigma=sigma)\n",
"\n",
"isct = Ellipse(xy=(2,2), width=.2, height=1.2, edgecolor='r', fc='None', lw=4)\n",
"plt.figure().gca().add_artist(isct)\n",
"g.plot_sigma_ellipses([e1, e2, e3, ev], axis_equal=True,x_lim=[0,4],y_lim=[0,15])\n",
"stats.plot_sigma_ellipses([e1, e2, e3, ev], axis_equal=True,x_lim=[0,4],y_lim=[0,15])\n",
"plt.ylim([0,11])\n",
"plt.show()"
],

View File

@ -9,7 +9,7 @@ import math
import matplotlib.pylab as pylab
import matplotlib.pyplot as plt
import numpy as np
import gaussian as g
import stats
def plot_gaussian (mu, variance,
mu_line=False,
@ -17,7 +17,7 @@ def plot_gaussian (mu, variance,
xlabel=None,
ylabel=None):
xs = np.arange(mu-variance*2,mu+variance*2,0.1)
ys = [g.gaussian (x, mu, variance)*100 for x in xs]
ys = [stats.gaussian (x, mu, variance)*100 for x in xs]
plt.plot (xs, ys)
if mu_line:
plt.axvline(mu)
@ -34,12 +34,12 @@ def display_stddev_plot():
pylab.rcParams['figure.figsize'] = 12,6
xs = np.arange(10,30,0.1)
var = 8; stddev = math.sqrt(var)
p2, = plt.plot (xs,[g.gaussian(x, 20, var) for x in xs])
p2, = plt.plot (xs,[stats.gaussian(x, 20, var) for x in xs])
x = 20+stddev
y = g.gaussian(x, 20, var)
y = stats.gaussian(x, 20, var)
plt.plot ([x,x], [0,y],'g')
plt.plot ([20-stddev, 20-stddev], [0,y], 'g')
y = g.gaussian(20,20,var)
y = stats.gaussian(20,20,var)
plt.plot ([20,20],[0,y],'b')
ax = plt.axes()
ax.annotate('68%', xy=(20.3, 0.045))