%matplotlib inline
from scipy import stats
from matplotlib import pyplot as pl
import numpy as np
výsledky opakovaných pokusů s náhodným jevem, který má 2 možné výsledky
\begin{equation} \pi_n(r)= \frac{n!}{p! (n-p)!} p^r (1-p)^{n-r} \end{equation}střední hodnota : $np$
disperze : $np(1-p)$
asymetrie : $\frac{1-2p}{\sqrt{np(1-p)}}$
excess : $\frac{1-6p(1-p)}{np(1-p)}$
n=20
ix=np.r_[:n+1]
probs=[0.2,0.4,0.7,0.9]
cols=list('mrgb')
for p in probs:
pl.bar(ix-0.5,stats.binom(n,p).pmf(ix),fc=cols.pop(),alpha=0.3,label="p=%.1f"%p)
pl.xlim(-1,n+1)
pl.ylim(0,0.5)
pl.grid()
pl.legend(loc=2)
pl.title("binomicke rozdeleni")
střední hodnota : $\mu$
disperze : $\mu$
asymetrie : $1/\sqrt{\mu}$
excess : $1/\mu$
limitně pro $\mu \to \infty$ se blíží $N(\mu,\sqrt{\mu})$
n=20
ix=np.r_[:n+1]
probs=[1.,3.,6.,12.]
cols=list('mrgb')
for p in probs:
fc=cols.pop()
pl.bar(ix-0.5,stats.poisson(p).pmf(ix),fc=fc,alpha=0.2)
pl.plot(ix,stats.poisson(p).pmf(ix),fc,label="p=%.1f"%p)
pl.xlim(-1,n+1)
#pl.ylim(0,0.5)
pl.grid()
pl.legend(loc=1)
pl.title("Poissonovo rozdeleni")
střední hodnota : $(a+b)/2$
disperze : $(a-b)^2/12$
asymetrie : 0
excess : $-1.2$
střední hodnota : $\mu$
disperze : $\mu^2$
asymetrie : 2
excess : 6
charakter. funkce $1/(1-\i\mu t)$
střední hodnota : nedef. ($\infty$ - $\infty$), lze ji zavést na základě symetrie podle $\mu$
disperze : $\infty$ (parametr $g$ definuje pološířku - HWHM)
charakter. funkce $\exp^{-|t|}$
generování: $\tan \pi(r-1/2)$ pro r s rovnom. rozdělením v (0,1)
x=np.r_[-1:3.5:0.02]
cen=1.2
pl.plot(x,1/np.pi/(1+(x-cen)**2),label="g=1.0")
pl.plot([cen-1,cen+1],[1/np.pi/2.]*2,'b--')
pl.plot(x,0.5/np.pi/(0.25+(x-cen)**2),label="g=0.5")
pl.plot([cen-.5,cen+.5],[1/np.pi]*2,'g--')
pl.grid()
pl.title("Lorentzian")
pl.legend()
střední hodnota : $m/(m+n)$
disperze : $\frac{mn}{(m+n)^2 (m+n+1)}$
asymetrie : $\frac{2(n-m)\sqrt{m+n+1}}{\sqrt{mn} (m+n+2)}$
excess : $\frac{3(m+n+1)[2(m+n)^2+mn(m+n-6)]}{mn (m+n+2)(m+n+3)}-3$
x=np.r_[0:1.01:0.02]
m,n=2,5
for n in [2,5,10]:
pl.plot(x,stats.beta(m,n).pdf(x),label="n=%i"%n)
pl.grid()
pl.title("Beta (m=%i)"%m)
pl.legend()
střední hodnota : $\nu/\mu$
disperze : $\nu/\mu^2$
asymetrie : $2/\sqrt{\nu}$
excess : $6/\nu$
generování (pro $\mu=1$): vezmeme n+1 NP $r_i$ s rovnom. rozdělením v (0,1) a spočteme $x=- \ln \prod^{n+1}{r_i}$
x=np.r_[0:10.01:0.05]
mu,nu=1.,.5
for nu in [1,2,5]:
pl.plot(x,stats.gamma(nu,scale=1/mu).pdf(x),label="nu=%.1f"%nu)
pl.grid()
pl.title("Gamma (mu=%.1f)"%mu)
pl.legend()
rozdělení součtu čtverců $n$ NP s normálním rozdělením N(0,1)
$$ f_n(x) = \frac{x^{n/2-1} \exp{(-x/2)}}{2\Gamma(n/2)} $$střední hodnota : $n$
disperze : $2n$
asymetrie : $\sqrt{8/n}$
excess : $12/n$
charakter. funkce $(1-2 \i t)^{-n/2}$
limitně pro $n \to \infty$ se blíží $N(n,2n)$
x=np.r_[0:30:0.2]
mu,nu=1.,.5
for n in [2,5,15]:
pl.plot(x,stats.chi2(n).pdf(x),label="n=%i"%n)
pl.grid()
pl.title("Chi square")
pl.legend()
rozdělení podílu nezávislých NP s normálním a $\chi^2_n$ rozdělením
$$ f_n(x) = \frac{\Gamma((n+1)/2)}{\sqrt{n\pi}\Gamma(n/2)} \left(1+\frac{t^2}{n}\right)^{-(n+1)/2}$$střední hodnota : 0
disperze : $n/(n-2)$
asymetrie : 0
excess : $6/(n-4)$ pro n>4
generování: dvě NP $r_1, r_2$ s rovnom. rozdělením v (0,1) , pokud $r_1<0.5$, $t=1/(4r_1-1)$, $v=r_2/t^2$, jinak $t=4r_1-3$,$v=r_2$. Hodnotu $x=t$ akceptujeme, pokud $v<1-|t|/2$ nebo $v<(1+t^2/n)^{-(n+1)/2}$
má podíl dvou náhodných proměnných s rozděleními $\chi^2(n)/n$ a $\chi^2(m)/m$
$$ f_{(n,m)}(x) = \left(\frac{m}{n}\right)^{m/2} \frac{\Gamma((m+n)/2)}{\Gamma(m/2) \Gamma(n/2)}\quad x^{(n-2)/2} \left(1-\frac{m}{n} x\right)^{-(m+n)/2} $$střední hodnota : $m/(m-2)$
disperze : $\frac{2n^2(m+n-2)}{m(n-2)^2(n-4)}$
pro m=1 se redukuje na t-rozdělení
$1/2 \log F$ má pro velká $m,n$ přibližně rozdělení $N([1/f_2- 1/f_1]/2,\ [1/f_2+1/f_1]/2)$, kde $f_1=m-1, f_2=n-1$
x=np.r_[0.01:5:0.05]
n,m=10,10
pl.plot(x,stats.f(m,n).pdf(x),label="[10,10]")
pl.plot(x,stats.f(m,n).pdf(1/x),label="[10,10] 1/x")
pl.plot(x,stats.f(3,m).pdf(x*3/10),label="[3,10] 3x/10")
pl.grid()
pl.title("Fisher-Snedecor")
pl.legend()
q1,q2=stats.f(m,n).ppf([0.025,0.975])
pl.axvline(q1,ls="--")
pl.axvline(q2,ls="--")