```python
# initial setup
try:
    # settings colab:
    import google.colab
except ModuleNotFoundError:    
    # settings local:
    %run "../../../common/0_notebooks_base_setup.py"    
```

---




#### Distribución Binomial

La distribución Binomial es una **distribución de probabilidad discreta**.

Mide el número de éxitos en una secuencia de n ensayos independientes entre sí, con una probabilidad fija p de ocurrencia del éxito entre los ensayos.

Sea n los intentos, x la cantidad de éxitos que buscamos y p la probabilidad de éxito en cada prueba (independientes entre sí).

\begin{equation}
  P(X = x) = {n \choose x} p^x (1-p)^{n-x}
\end{equation}

**Ejemplos**:

* X: cantidad de pacientes en un grupo de 10 para los que fue efectivo un tratamiento médico

* X: cantidad de caras al lanzar una moneda 5 veces

* X: cantidad de 3 al lanzar un dado 10 veces


<div id="caja6" style="float:left;width: 100%;">
  <div style="float:left;width: 15%;"> </div>
  <div style="float:left;width: 85%;"><label>Una variable aleatoria con distribución Bernoulli es una Binomial con n= 1</label></div>
</div>


---


Vamos a ver ahora cómo generar datos con esta distibución de probabilidad.

Necesitamos un generador de números aleatorios, que expone métodos para generar números aleatorios con alguna distribución de probabilidad especificada. Construimos este generador de este modo `np.random.default_rng()`

https://docs.scipy.org/doc/numpy/reference/random/generator.html

Estas son las distribuciones de probabilidad disponibles:
https://docs.scipy.org/doc/numpy/reference/random/generator.html#distributions

Vamos a generar datos con distribución empleando el método `binomial` con `n` la cantidad de veces que hacemos el test, `p` la probabilidad de éxito
https://docs.scipy.org/doc/numpy/reference/random/generated/numpy.random.Generator.binomial.html#numpy.random.Generator.binomial


```python
import seaborn as sns
def distribution_plotter(data, label, bins=None):    
    sns.set(rc={"figure.figsize": (10, 7)})
    sns.set_style("white")    
    dist = sns.distplot(data, bins= bins, hist_kws={'alpha':0.2}, kde_kws={'linewidth':5})
    dist.set_title('Distribucion de ' + label + '\n', fontsize=16)
```

Simulemos el resultado de tirar una moneda 10 veces, repitiendo el experimento 10000 veces, y grafiquemos el resultado.


```python
import numpy as np
random_generator = np.random.default_rng()
n=10
p=0.5
sample_size = 100
random_binomial_data = random_generator.binomial(n=n, p=p, size = sample_size)

distribution_plotter(random_binomial_data, "Binomial")
```

<div id="caja2" style="float:left;width: 100%;">
  <div style="float:left;width: 15%;"> </div>
  <div style="float:left;width: 85%;"><label>Prueben ahora generando 1000, 10000 y 100000 datos y comparen los gráficos. ¿Qué pueden concluir?</label></div>
</div>

e5c58491709bf807dd1f26f750f314030ef25bb4
ipynb
Jupyter Notebook
Code/3-numpy/probabilidad/4.3_binomial.ipynb
Flor91/Data-Science
f67ec537341e8b2d8213a56ef8ee63028e46e1b2
MIT
2020-10-06T12:59:39.000Z
2021-11-08T10:58:14.000Z
Code/3-numpy/probabilidad/4.3_binomial.ipynb
Flor91/Data-Science
f67ec537341e8b2d8213a56ef8ee63028e46e1b2
MIT
Code/3-numpy/probabilidad/4.3_binomial.ipynb
Flor91/Data-Science
f67ec537341e8b2d8213a56ef8ee63028e46e1b2
MIT
Qwen/Qwen-72B
1. YES
2. YES