Introduktion till bootstrapping

Sampling i Python

James Chapman

Curriculum Manager, DataCamp

Med eller utan

Sampling utan återläggning:

Spelkort på ett casinobord.

Sampling med återläggning ("resampling"):

Fyra tärningar som rullar.

Sampling i Python

Enkelt slumpmässigt urval utan återläggning

Population:

Kaffebönor arrangerade i rader och kolumner.

Urval:

Kaffebönor arrangerade i rader och kolumner, de flesta nedtonade.

Sampling i Python

Enkelt slumpmässigt urval med återläggning

Population:

Kaffebönor arrangerade i rader och kolumner.

Resample:

Ett slumpmässigt urval kaffebönor, varav några är dubbletter.

Sampling i Python

Varför sampla med återläggning?

  • coffee_ratings: ett urval ur en större population av alla kaffeer
  • Varje kaffe i urvalet representerar många hypotetiska populationskaffeer
  • Sampling med återläggning är en proxy
Sampling i Python

Förberedelse av kaffedata

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]
Sampling i Python

Resampling med .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]
Sampling i Python

Upprepade kaffeer

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
Sampling i Python

Saknade kaffeer

num_unique_coffees = len(coffee_resamp.drop_duplicates(subset="index"))
868
len(coffee_ratings) - num_unique_coffees
470
Sampling i Python

Bootstrapping

Motsatsen till att ta ett urval från en population

Sampling: går från en population till ett mindre urval

Bootstrapping: bygger upp en teoretisk population från urvalet

Användningsområde för bootstrapping:

  • Förstå samplingsvariabilitet utifrån ett enda urval

En cowboystövel.

Sampling i Python

Bootstrapping-processen

  1. Ta ett resample med samma storlek som det ursprungliga urvalet
  2. Beräkna det intressanta måttet för detta bootstrap-urval
  3. Upprepa steg 1 och 2 många gånger

De resulterande måtten kallas bootstrap-statistik och bildar en bootstrap-fördelning

Sampling i Python

Bootstrapping av medelsmak för kaffe

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'])
)
Sampling i Python

Histogram över bootstrap-fördelning

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

Bootstrap-fördelning av medelsmaken

Sampling i Python

Nu kör vi en övning!

Sampling i Python

Preparing Video For Download...