Processing math: 42%

Wnioskowanie Statystyczne

Posiłkując się powyższym przykładem napisz funkcję MyGen(N) dla rozkładu, którego funkcja gęstości prawdopodobieństwa jest dana wzorem: f(x)=1π(1+x2). Następnie narysuj dla niego dystrybuantę i dystrybuantę empiryczną na przedziale [-10, 10].

Wyznaczmy najpierw dystrybuantę dla rozkładu f(x): F(x)=x1π(1+u2)du=1πx11+u2du=|11+u2=arctg(u)|=[1πarctg(u)]x= =1πarctg(x)1πarctg()=1πarctg(x)+1πarctg()= |lim Dystrybuanta: F(x)=\frac{arctg(x)}{\pi}+\frac{1}{2} Wyznaczmy funkcję odwrotną do dystrybuanty: y=\frac{1}{\pi}arctg(x)+\frac{1}{2} \Rightarrow \pi \left( y - \frac{1}{2} \right) = arctg(x) \Rightarrow x=tg \left[ \pi \left( y - \frac{1}{2} \right) \right] Funkcja odwrotna do dystrybuanty: F^{-1}(x)= tg \left[ \pi \left( y - \frac{1}{2} \right) \right]

import scipy.stats as st
import numpy as np
import pylab as py

def MyGen(size=1):
	x=np.random.random(size) # liczby z generatora jednostajnego na przedziale [0,1)
	y=np.tan(np.pi*(x-1/2))  # korzystamy z metody odwracania dystrybuanty
	return y

x=MyGen(int(1e6))
bins=np.linspace(-10, 10, 101)
py.subplot(211)
py.hist(x, bins, density=True, histtype='step')
py.plot(bins,1./(np.pi*(1+bins**2)), 'r')
py.subplot(212)
py.hist(x, bins, density=True, histtype='step', cumulative=True)
py.plot(bins, np.arctan(bins)/np.pi+0.5, 'r')
py.show()
Rozwiązanie: