From LaPET electronics
Contents |
examples of distributions
def toss(): if random()<0.5: return 0 return 1 def toss10(): return sum([toss() for i in range(10)]) tosses = [toss10() for i in range(10000)] clf(); hist(tosses,bins=11,range=(-0.5,10.5)); axis([-1,11,0,2600]) title("results of tossing 10 coins 10000 times") xlabel("number of tails")
misc python definitions
from scipy.misc import factorial choose = lambda N,m: factorial(N)/factorial(m)/factorial(N-m)
more on coin toss
NNN=100000 clf(); hist([toss10() for i in range(NNN)],bins=11,range=(-0.5,10.5)) N=10; m=arange(N+1); P=choose(N,m)*0.5**N; plot(m,NNN*P,'ro');
NNN=100 clf(); hist([toss10() for i in range(NNN)],bins=11,range=(-0.5,10.5)) N=10; m=arange(N+1); P=choose(N,m)*0.5**N; plot(m,NNN*P,'ro'); axis([-2,12,0,27])
NNN=10 clf(); hist([toss10() for i in range(NNN)],bins=11,range=(-0.5,10.5)) N=10; m=arange(N+1); P=choose(N,m)*0.5**N; plot(m,NNN*P,'ro-');
summing area in tails of a distribution
- Suppose you toss a (fair) coin 100 times. Mean number of tails is 50.
- How often does a deviation of 5 or more (in either direction) occur?
- Looks like about 37% of the time.
N=100; m=arange(N+1); P=choose(N,m)*0.5**N clf(); plot(m,P,'o-') plot(m[:46],P[:46],'ro') plot(m[55:],P[55:],'ro') sum(P[:46]) sum(P[55:]) sum(P[:46])+sum(P[55:])
In [253]: sum(P[:46]) Out[253]: 0.18410080866334808 In [254]: sum(P[55:]) Out[254]: 0.1841008086633481 In [255]: sum(P[:46])+sum(P[55:]) Out[255]: 0.36820161732669621
- How often does a deviation of 40 or more occur?
- Looks like about 3×10-17
In [258]: sum(P[:11]) Out[258]: 1.5316450877189926e-17 In [259]: sum(P[90:]) Out[259]: 1.5316450877189926e-17 In [260]: sum(P[:11])+sum(P[90:]) Out[260]: 3.0632901754379851e-17
roll dice
- roll 10 dice
N=10; p=1.0/6; m=arange(N+1); P=choose(N,m)*p**m*(1-p)**(N-m) clf(); plot(m,P,'o-'); axis([-1,11,-0.005,.36])
- roll 100 dice
N=100; p=1.0/6; m=arange(N+1); P=choose(N,m)*p**m*(1-p)**(N-m) clf(); plot(m,P,'o-'); axis([-1,40,-0.001,.13])
poisson distribution
clf() mu=1.0; m = arange(15); P = mu**m*exp(-mu)/factorial(m) plot(m,P,'o-') mu=2.0; m = arange(15); P = mu**m*exp(-mu)/factorial(m) plot(m,P,'o-') mu=2.5; m = arange(15); P = mu**m*exp(-mu)/factorial(m) plot(m,P,'o-') mu=3.0; m = arange(15); P = mu**m*exp(-mu)/factorial(m) plot(m,P,'o-') mu=4.0; m = arange(15); P = mu**m*exp(-mu)/factorial(m) plot(m,P,'o-') mu=5.0; m = arange(15); P = mu**m*exp(-mu)/factorial(m) plot(m,P,'o-') title("poisson, mean=1, 2, 2.5, 3, 4, 5")
Note Poisson fluctuations in bin contents, e.g. for this (nominally flat) distribution from the homework example:
binomial vs. gaussian
N = 10; m = arange(N+1); P = 0.5**N*choose(N,m) mu=0.5*N; sig=0.5*sqrt(N); x=linspace(0,N,100); G = exp(-0.5*(x-mu)**2/sig**2)/sig/sqrt(2*pi) clf(); plot(m,P,'o'); plot(x,G,'-') title(r"N=10, mu=0.5*N, sigma=0.5*sqrt(N)")
N = 20; m = arange(N+1); P = 0.5**N*choose(N,m) mu=0.5*N; sig=0.5*sqrt(N); x=linspace(0,N,100); G = exp(-0.5*(x-mu)**2/sig**2)/sig/sqrt(2*pi) clf(); plot(m,P,'o'); plot(x,G,'-'); title(r"N=20, mu=0.5*N, sigma=0.5*sqrt(N)")
N = 50; m = arange(N+1); P = 0.5**N*choose(N,m) mu=0.5*N; sig=0.5*sqrt(N); x=linspace(0,N,100); G = exp(-0.5*(x-mu)**2/sig**2)/sig/sqrt(2*pi) clf(); plot(m,P,'o'); plot(x,G,'-') title(r"N=50, mu=0.5*N, sigma=0.5*sqrt(N)")
poisson vs. gaussian
mu=50; m=arange(2*mu+1.0); poisson=mu**m*exp(-mu)/factorial(m); gauss=exp(-0.5*(m-mu)**2/mu)/sqrt(2*pi*mu) clf(); plot(m,poisson,'o'); plot(m,gauss,'-') title("poisson vs. gaussian: mu=50")
mu=25; m=arange(2*mu+1.0); poisson=mu**m*exp(-mu)/factorial(m); gauss=exp(-0.5*(m-mu)**2/mu)/sqrt(2*pi*mu) clf(); plot(m,poisson,'o'); plot(m,gauss,'-') title("poisson vs. gaussian: mu=25") axis([0,50,0,0.09])
mu=10; m=arange(2*mu+1.0); poisson=mu**m*exp(-mu)/factorial(m); gauss=exp(-0.5*(m-mu)**2/mu)/sqrt(2*pi*mu) clf(); plot(m,poisson,'o'); plot(m,gauss,'-') title("poisson vs. gaussian: mu=10")
mu=5; m=arange(2*mu+1.0); poisson=mu**m*exp(-mu)/factorial(m); gauss=exp(-0.5*(m-mu)**2/mu)/sqrt(2*pi*mu) clf(); plot(m,poisson,'o'); plot(m,gauss,'-') title("poisson vs. gaussian: mu=5")
mu=2; m=arange(8); poisson=mu**m*exp(-mu)/factorial(m) mm=linspace(-4,8,100); gauss=exp(-0.5*(mm-mu)**2/mu)/sqrt(2*pi*mu) clf(); plot(m,poisson,'o'); plot(mm,gauss,'-') title("poisson vs. gaussian: mu=2")