Vztah mezi binomickým a Poissonovým rozdělením
Právě sis poslechl/a, že Poissonovo rozdělení je limitou binomického rozdělení pro vzácné události. Dává to smysl, když se zamyslíš nad příběhy. Představ si, že každou minutu po dobu hodiny provádíme Bernoulliho pokus s pravděpodobností úspěchu 0,1. Provedeme tak 60 pokusů a počet úspěchů se řídí binomickým rozdělením — očekáváme přibližně 6 úspěchů. To je přesně jako příběh s Poissonovým rozdělením z videa, kde dostaneme průměrně 6 návštěv webové stránky za hodinu. Poissonovo rozdělení s hodnotou \(np\) jako průměrnou četností tedy aproximuje binomické rozdělení pro \(n\) Bernoulliho pokusů s pravděpodobností úspěchu \(p\) (přičemž \(n\) je velké a \(p\) malé). Důležité je, že s Poissonovým rozdělením se často pracuje jednodušeji, protože má pouze jeden parametr místo dvou u binomického rozdělení.
Pojďme tato dvě rozdělení prozkoumat výpočetně. Vypočítáš průměr a směrodatnou odchylku vzorků z Poissonova rozdělení s průměrnou četností 10. Pak vypočítáš průměr a směrodatnou odchylku vzorků z binomického rozdělení s parametry \(n\) a \(p\) tak, aby platilo \(np = 10\).
Toto cvičení je součástí kurzu
Statistical Thinking in Python (Part 1)
Pokyny k cvičení
- Pomocí funkce
rng.poisson()vygeneruj10000vzorků z Poissonova rozdělení s průměrem10. - Vytvoř seznam hodnot
nappro binomické rozdělení. Zvoln = [20, 100, 1000]ap = [0.5, 0.1, 0.01]tak, aby součin \(np\) byl vždy roven 10. - Pomocí
rng.binomial()uvnitř připraveného cykluforvygeneruj10000vzorků z binomického rozdělení pro každou dvojicin, pa vypiš průměr a směrodatnou odchylku vzorků. Jsou tu 3 dvojicen, p:20, 0.5,100, 0.1a1000, 0.01. Uvnitř cyklu k nim přistupuješ jakon[i], p[i].
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Draw 10,000 samples out of Poisson distribution: samples_poisson
# Print the mean and standard deviation
print('Poisson: ', np.mean(samples_poisson),
np.std(samples_poisson))
# Specify values of n and p to consider for Binomial: n, p
# Draw 10,000 samples for each n,p pair: samples_binomial
for i in range(3):
samples_binomial = ____
# Print results
print('n =', n[i], 'Binom:', np.mean(samples_binomial),
np.std(samples_binomial))