Wprowadzenie do bootstrappingu

Próbkowanie w Pythonie

James Chapman

Curriculum Manager, DataCamp

Ze zwracaniem lub bez

Próbkowanie bez zwracania:

Karty do gry na stole w kasynie.

Próbkowanie ze zwracaniem ("resampling"):

Cztery rzucane kości.

Próbkowanie w Pythonie

Proste losowanie bez zwracania

Populacja:

Ziarna kawy ułożone w rzędach i kolumnach.

Próba:

Ziarna kawy ułożone w rzędach i kolumnach, z których większość jest wyszarzona.

Próbkowanie w Pythonie

Proste losowanie ze zwracaniem

Populacja:

Ziarna kawy ułożone w rzędach i kolumnach.

Resample:

Losowa próba ziaren kawy, z których niektóre są duplikatami.

Próbkowanie w Pythonie

Dlaczego próbkować ze zwracaniem?

  • coffee_ratings: próba z większej populacji wszystkich kaw
  • Każda kawa w próbie reprezentuje wiele hipotetycznych kaw populacyjnych
  • Próbkowanie ze zwracaniem jest przybliżeniem
Próbkowanie w Pythonie

Przygotowanie danych o kawie

coffee_focus = coffee_ratings[["variety", "country_of_origin", "flavor"]]
coffee_focus = coffee_focus.reset_index()
      index  variety country_of_origin  flavor
0         0     None          Ethiopia    8.83
1         1    Other          Ethiopia    8.67
2         2  Bourbon         Guatemala    8.50
3         3     None          Ethiopia    8.58
4         4    Other          Ethiopia    8.50
...     ...      ...               ...     ...
1333   1333     None           Ecuador    7.58
1334   1334     None           Ecuador    7.67
1335   1335     None     United States    7.33
1336   1336     None             India    6.83
1337   1337     None           Vietnam    6.67

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

Ponowne próbkowanie za pomocą .sample()

coffee_resamp = coffee_focus.sample(frac=1, replace=True)
      index  variety country_of_origin  flavor
1140   1140  Bourbon         Guatemala    7.25
57       57  Bourbon         Guatemala    8.00
1152   1152  Bourbon            Mexico    7.08
621     621  Caturra          Thailand    7.50
44       44     SL28             Kenya    8.08
...     ...      ...               ...     ...
996     996   Typica            Mexico    7.33
1090   1090  Bourbon         Guatemala    7.33
918     918    Other         Guatemala    7.42
249     249  Caturra          Colombia    7.67
467     467  Caturra          Colombia    7.50

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

Powtarzające się kawy

coffee_resamp["index"].value_counts()
658     5
167     4
363     4
357     4
1047    4
       ..
771     1
770     1
766     1
764     1
0       1
Name: index, Length: 868, dtype: int64
Próbkowanie w Pythonie

Brakujące kawy

num_unique_coffees = len(coffee_resamp.drop_duplicates(subset="index"))
868
len(coffee_ratings) - num_unique_coffees
470
Próbkowanie w Pythonie

Bootstrapping

Przeciwieństwo próbkowania z populacji

Próbkowanie: przejście od populacji do mniejszej próby

Bootstrapping: budowanie teoretycznej populacji na podstawie próby

Zastosowanie bootstrappingu:

  • Badanie zmienności próbkowania przy użyciu pojedynczej próby

But kowbojski.

Próbkowanie w Pythonie

Proces bootstrappingu

  1. Utwórz resample o takim samym rozmiarze jak oryginalna próba
  2. Oblicz interesującą statystykę dla tej próby bootstrapowej
  3. Powtórz kroki 1 i 2 wielokrotnie

Otrzymane statystyki to statystyki bootstrapowe tworzące rozkład bootstrapowy

Próbkowanie w Pythonie

Bootstrapping średniego smaku kawy

import numpy as np

mean_flavors_1000 = []
for i in range(1000):
mean_flavors_1000.append(
np.mean(coffee_sample.sample(frac=1, replace=True)['flavor'])
)
Próbkowanie w Pythonie

Histogram rozkładu bootstrapowego

import matplotlib.pyplot as plt
plt.hist(mean_flavors_1000)
plt.show()

Rozkład bootstrapowy średniego smaku

Próbkowanie w Pythonie

Czas na ćwiczenia!

Próbkowanie w Pythonie

Preparing Video For Download...