Jämföra samplings- och bootstrapfördelningar

Sampling i Python

James Chapman

Curriculum Manager, DataCamp

Fokuserad kaffeundermängd

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

Bootstrap av medelvärdet för kaffekaraktär

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

Bootstrapfördelning för medelkaraktär

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

Ett histogram över bootstrapfördelningen.

Sampling i Python

Medelvärden för sampel, bootstrapfördelning och population

Samplingmedelvärde:

coffee_sample['flavor'].mean()
7.5132200000000005

Uppskattat populationsmedelvärde:

np.mean(bootstrap_distn)
7.513357731999999

Sant populationsmedelvärde:

coffee_ratings['flavor'].mean()
7.526046337817639
Sampling i Python

Tolka medelvärdena

Bootstrapfördelningens medelvärde:

  • Ligger vanligtvis nära sampelmedelvärdet
  • Är inte alltid en bra skattning av populationsmedelvärdet

  Bootstrapping kan inte korrigera bias från samplingen

Sampling i Python

Samplets standardavvikelse vs. bootstrapfördelningens standardavvikelse

Samplets standardavvikelse:

coffee_sample['flavor'].std()
0.3540883911928703

Skattad standardavvikelse för populationen?

np.std(bootstrap_distn, ddof=1)
0.015768474367958217
Sampling i Python

Standardavvikelser för sampel, bootstrapfördelning och population

Samplets standardavvikelse:

coffee_sample['flavor'].std()
0.3540883911928703

Skattad standardavvikelse för populationen:

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

Standardfel är standardavvikelsen för den aktuella statistiken

Sann standardavvikelse:

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

Standardfelet multiplicerat med roten ur sampelstorleken ger en skattning av populationens standardavvikelse

Sampling i Python

Tolka standardfelen

  • Skattat standardfel → standardavvikelsen för bootstrapfördelningen för en sampelstatistik
  • $\text{Population std. dev} \approx \text{Std. Error} \times \sqrt{\text{Sample size}}$
Sampling i Python

Nu kör vi en övning!

Sampling i Python

Preparing Video For Download...