import pandas as pd #Manejo de datos
import seaborn as sns #Gráficos estadísticos
import matplotlib.pyplot as plt #Gráficos en general
import numpy as np #Manejo de datos matriciales
#Funciones
def bootstrap_replicate_1d(data, func):
"""Generate bootstrap replicate of 1D data."""
bs_sample = np.random.choice(data, len(data))
return func(bs_sample)
def draw_bs_reps(data, func, size=1):
"""Draw bootstrap replicates."""
# Initialize array of replicates: bs_replicates
bs_replicates = np.empty(size)
# Generate replicates
for i in range(size):
bs_replicates[i] = bootstrap_replicate_1d(data, func)
return bs_replicates
Un resumen estadístico
plt.style.use('ggplot')
iris = sns.load_dataset('iris')
print(iris.sample(5))
print(iris.describe())
En busca de los intervalos de confianza
sns.boxplot(x='species', y='sepal_length', data=iris)
versicolor_sepal_length = iris.query('species == "versicolor"')['sepal_length']
versicolor_sepal_length.values
sns.boxplot(data=versicolor_sepal_length, x=versicolor_sepal_length.values)
plt.xlabel('Longitud de sépalo, mm')
plt.title('Longitud de sépalo de Iris Versicolor')
plt.show()
versicolor_sepal_length.describe()
vers_replicates = draw_bs_reps(versicolor_sepal_length.values, np.mean, size=10000)
ci = np.percentile(vers_replicates, [2.5, 97.5])
print(ci)
¿Cómo interpretamos los intervalos de confianza?
plt.hist(vers_replicates, bins=20)
plt.xlabel('Longitud de sépalo, mm')
plt.ylabel('Frecuencias')
plt.title('Réplicas bootstrap de las medias')
plt.axvline(x=ci[0], color='#395d90')
plt.axvline(x=ci[1], color='#395d90')
plt.fill_between([ci[0], ci[1]], 1700, color='#395d90', alpha=0.6)
plt.show()