Compararea distribuțiilor de eșantionare și bootstrap

Eșantionare în Python

James Chapman

Curriculum Manager, DataCamp

Subset focalizat pe cafea

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]
Eșantionare în Python

Bootstrap-ul mediei aromelor de cafea

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
Eșantionare în Python

Distribuția bootstrap a mediei aromei

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

Histogramă a distribuției bootstrap.

Eșantionare în Python

Mediile eșantionului, distribuției bootstrap și populației

Media eșantionului:

coffee_sample['flavor'].mean()
7.5132200000000005

Media estimată a populației:

np.mean(bootstrap_distn)
7.513357731999999

Media reală a populației:

coffee_ratings['flavor'].mean()
7.526046337817639
Eșantionare în Python

Interpretarea mediilor

Media distribuției bootstrap:

  • De obicei apropiată de media eșantionului
  • Poate să nu estimeze bine media populației

  Bootstrapping-ul nu poate corecta erorile de eșantionare

Eșantionare în Python

Ab. std. a eșantionului vs. ab. std. a distribuției bootstrap

Abaterea standard a eșantionului:

coffee_sample['flavor'].std()
0.3540883911928703

Abaterea standard estimată a populației?

np.std(bootstrap_distn, ddof=1)
0.015768474367958217
Eșantionare în Python

Ab. std. a eșantionului, distribuției bootstrap și populației

Abaterea standard a eșantionului:

coffee_sample['flavor'].std()
0.3540883911928703

Abaterea standard estimată a populației:

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

Eroarea standard este abaterea standard a statisticii de interes

Abaterea standard reală:

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

Eroarea standard înmulțită cu rădăcina pătrată a mărimii eșantionului estimează abaterea standard a populației

Eșantionare în Python

Interpretarea erorilor standard

  • Eroarea standard estimată → abaterea standard a distribuției bootstrap pentru o statistică de eșantion
  • $\text{Ab. std. populație} \approx \text{Eroare std.} \times \sqrt{\text{Mărime eșantion}}$
Eșantionare în Python

Să exersăm!

Eșantionare în Python

Preparing Video For Download...