Visualiser le bootstrap

Améliorer vos visualisations de données en Python

Nick Strayer

Instructor

bande de confiance simple avec bornes inférieure et supérieure mises en évidence par des flèches

Améliorer vos visualisations de données en Python

Une courbe en cloche

Améliorer vos visualisations de données en Python

Grande population de points noirs et blancs avec un échantillon plus petit prélevé

Améliorer vos visualisations de données en Python

Petit échantillon de points noirs et blancs re-échantillonné plusieurs fois pour créer de nouveaux jeux de données de même taille

Améliorer vos visualisations de données en Python

Des collections de points noirs et blancs renvoient à un ensemble d'estimations correspondant à leur proportion de points noirs/blancs

Améliorer vos visualisations de données en Python
denver_may = pollution.query("city == 'Denver' & month == 8")

# Perform bootstrapped mean on a vector
def bootstrap(data, n_boots): 
    return [np.mean(np.random.choice(data,len(data))) 
            for _ in range(n_boots) ]

# Generate 1,000 bootstrap samples
boot_means = bootstrap(denver_may.NO2, 1000)


# Get lower and upper 95% interval bounds lower, upper = np.percentile(boot_means, [2.5, 97.5]) # Shaded background of interval plt.axvspan(lower, upper, color='grey', alpha=0.2)
# Plot histogram of samples sns.histplot(boot_means, bins = 100)
Améliorer vos visualisations de données en Python

Histogramme finement détaillé avec une zone gris clair sur l'axe des x

Améliorer vos visualisations de données en Python
# Make dataframe of bootstraped data
denver_may_boot = pd.concat([
    denver_may.sample(n=len(denver_may), replace=True).assign(sample=i) 
    for i in range(100)])

# Plot regressions for each sample
sns.lmplot('CO', 'O3', data=denver_may_boot, scatter=False,

# Tell seaborn to draw a regression # line for each resample's data hue='sample',
# Make lines orange and transparent line_kws = {'color': 'coral', 'alpha': 0.2},
# No confidence intervals ci=None, legend = False)
Améliorer vos visualisations de données en Python

Une série de lignes décroissantes similaires

Améliorer vos visualisations de données en Python
aug_pol = pollution.query("month == 8")

# Holder DataFrame for bootstrap samples
city_boots = pd.DataFrame()

for city in ['Denver', 'Long Beach', 'Houston', 'Indianapolis']:
    # Filter to city's NO2
    city_NO2 = aug_pol[aug_pol.city == city].NO2
    # Perform 100 bootstrap samples of city's NO2 & put in DataFrame
    cur_boot = pd.DataFrame({ 'NO2_avg': bootstrap(city_NO2, 100), 
                              'city': city })
    # Append to other city's bootstraps
    city_boots = pd.concat([city_boots,cur_boot])

# Use beeswarm plot to visualize bootstrap samples
sns.swarmplot(y="city", x="NO2_avg", data=city_boots, 

# Set all the colors to be the same color='coral')
Améliorer vos visualisations de données en Python

Quatre graphiques beeswarm avec un groupe nettement plus à droite sur l'axe des x que les autres

Améliorer vos visualisations de données en Python

Passons à l'(ré)échantillonnage

Améliorer vos visualisations de données en Python

Preparing Video For Download...