Einführung ins Bootstrapping

Stichprobenziehung in Python

James Chapman

Curriculum Manager, DataCamp

Mit oder ohne

Ziehen ohne Zurücklegen:

Spielkarten auf einem Casinotisch.

Ziehen mit Zurücklegen („Resampling“):

Vier rollende Würfel.

Stichprobenziehung in Python

Einfache Zufallsstichprobe ohne Zurücklegen

Population:

Kaffeebohnen in Reihen und Spalten angeordnet.

Stichprobe:

Kaffeebohnen in Reihen und Spalten, die meisten ausgegraut.

Stichprobenziehung in Python

Einfache Zufallsstichprobe mit Zurücklegen

Population:

Kaffeebohnen in Reihen und Spalten angeordnet.

Resample:

Eine Zufallsstichprobe von Kaffeebohnen, einige doppelt.

Stichprobenziehung in Python

Warum mit Zurücklegen ziehen?

  • coffee_ratings: Stichprobe aus der Gesamtpopulation aller Kaffees
  • Jede Bohne in der Stichprobe steht für viele hypothetische Populationseinträge
  • Ziehen mit Zurücklegen ist ein Proxy
Stichprobenziehung in Python

Kaffeedaten vorbereiten

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 Zeilen x 4 Spalten]
Stichprobenziehung in Python

Resampling mit .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 Zeilen x 4 Spalten]
Stichprobenziehung in Python

Wiederholte Kaffees

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
Stichprobenziehung in Python

Fehlende Kaffees

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

Bootstrapping

Das Gegenteil vom Ziehen aus einer Population

Sampling: von der Population zur kleineren Stichprobe

Bootstrapping: aus der Stichprobe eine theoretische Population aufbauen

Anwendung von Bootstrapping:

  • Stichprobenstreuung mit nur einer Stichprobe verstehen

Ein Cowboy-Stiefel.

Stichprobenziehung in Python

Ablauf beim Bootstrapping

  1. Erzeuge eine Resample-Stichprobe in Originalgröße
  2. Berechne die gewünschte Kennzahl für dieses Bootstrap-Sample
  3. Schritte 1 und 2 oft wiederholen

Die resultierenden Kennzahlen sind Bootstrap-Statistiken und bilden eine Bootstrap-Verteilung

Stichprobenziehung in Python

Bootstrapping des mittleren Geschmacks

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'])
)
Stichprobenziehung in Python

Histogramm der Bootstrap-Verteilung

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

Bootstrap-Verteilung des mittleren Geschmacks

Stichprobenziehung in Python

Lass uns üben!

Stichprobenziehung in Python

Preparing Video For Download...