Porównanie rozkładów próbkowania i bootstrap

Próbkowanie w Pythonie

James Chapman

Curriculum Manager, DataCamp

Podzbiór danych o kawie

coffee_sample = coffee_ratings[["variety", "country_of_origin", "flavor"]]\
    .reset_index().sample(n=500)
     index         variety       country_of_origin  flavor
132    132           Other              Costa Rica    7.58
51      51            None  United States (Hawaii)    8.17
42      42  Yellow Bourbon                  Brazil    7.92
569    569         Bourbon               Guatemala    7.67
..     ...             ...                     ...     ...
643    643          Catuai              Costa Rica    7.42
356    356         Caturra                Colombia    7.58
494    494            None               Indonesia    7.58
169    169            None                  Brazil    7.81

[500 rows x 4 columns]
Próbkowanie w Pythonie

Bootstrap średniego smaku kawy

import numpy as np
mean_flavors_5000 = []
for i in range(5000):
    mean_flavors_5000.append(
        np.mean(coffee_sample.sample(frac=1, replace=True)['flavor'])
    )
bootstrap_distn = mean_flavors_5000
Próbkowanie w Pythonie

Rozkład bootstrap średniego smaku

import matplotlib.pyplot as plt
plt.hist(bootstrap_distn, bins=15)
plt.show()

Histogram rozkładu bootstrap.

Próbkowanie w Pythonie

Średnie próby, rozkładu bootstrap i populacji

Średnia próby:

coffee_sample['flavor'].mean()
7.5132200000000005

Estymowana średnia populacji:

np.mean(bootstrap_distn)
7.513357731999999

Prawdziwa średnia populacji:

coffee_ratings['flavor'].mean()
7.526046337817639
Próbkowanie w Pythonie

Interpretacja średnich

Średnia rozkładu bootstrap:

  • Zazwyczaj zbliżona do średniej próby
  • Może nie być dobrym estymatorem średniej populacji

  Bootstrapping nie koryguje błędów wynikających z próbkowania

Próbkowanie w Pythonie

Odch. std. próby a odch. std. rozkładu bootstrap

Odchylenie standardowe próby:

coffee_sample['flavor'].std()
0.3540883911928703

Estymowane odchylenie standardowe populacji?

np.std(bootstrap_distn, ddof=1)
0.015768474367958217
Próbkowanie w Pythonie

Odch. std. próby, rozkładu bootstrap i populacji

Odchylenie standardowe próby:

coffee_sample['flavor'].std()
0.3540883911928703

Estymowane odchylenie standardowe populacji:

standard_error = np.std(bootstrap_distn, ddof=1)

Błąd standardowy to odchylenie standardowe badanej statystyki

Prawdziwe odchylenie standardowe:

coffee_ratings['flavor'].std(ddof=0)
0.34125481224622645
standard_error * np.sqrt(500)
0.3525938058821761

Błąd standardowy pomnożony przez pierwiastek z liczebności próby estymuje odchylenie standardowe populacji

Próbkowanie w Pythonie

Interpretacja błędów standardowych

  • Estymowany błąd standardowy → odchylenie standardowe rozkładu bootstrap dla danej statystyki
  • $\text{Odch. std. populacji} \approx \text{Błąd std.} \times \sqrt{\text{Liczebność próby}}$
Próbkowanie w Pythonie

Czas na ćwiczenia!

Próbkowanie w Pythonie

Preparing Video For Download...