การเปรียบเทียบการแจกแจงจากการสุ่มตัวอย่างและ bootstrap

การสุ่มตัวอย่างใน Python

James Chapman

Curriculum Manager, DataCamp

ชุดข้อมูลย่อยของกาแฟ

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]
การสุ่มตัวอย่างใน Python

Bootstrap ของค่าเฉลี่ยรสชาติกาแฟ

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
การสุ่มตัวอย่างใน Python

การแจกแจง bootstrap ของค่าเฉลี่ยรสชาติ

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

ฮิสโทแกรมของการแจกแจง bootstrap

การสุ่มตัวอย่างใน Python

ค่าเฉลี่ยของกลุ่มตัวอย่าง การแจกแจง bootstrap และประชากร

ค่าเฉลี่ยของกลุ่มตัวอย่าง:

coffee_sample['flavor'].mean()
7.5132200000000005

ค่าเฉลี่ยประชากรที่ประมาณได้:

np.mean(bootstrap_distn)
7.513357731999999

ค่าเฉลี่ยประชากรที่แท้จริง:

coffee_ratings['flavor'].mean()
7.526046337817639
การสุ่มตัวอย่างใน Python

การตีความค่าเฉลี่ย

ค่าเฉลี่ยของการแจกแจง bootstrap:

  • มักใกล้เคียงกับค่าเฉลี่ยของกลุ่มตัวอย่าง
  • อาจไม่ใช่การประมาณค่าเฉลี่ยประชากรที่ดีนัก

  Bootstrapping ไม่สามารถแก้ไขความเอนเอียงจากการสุ่มตัวอย่างได้

การสุ่มตัวอย่างใน Python

ส่วนเบี่ยงเบนมาตรฐานของกลุ่มตัวอย่าง vs. การแจกแจง bootstrap

ส่วนเบี่ยงเบนมาตรฐานของกลุ่มตัวอย่าง:

coffee_sample['flavor'].std()
0.3540883911928703

ส่วนเบี่ยงเบนมาตรฐานประชากรที่ประมาณได้?

np.std(bootstrap_distn, ddof=1)
0.015768474367958217
การสุ่มตัวอย่างใน Python

ส่วนเบี่ยงเบนมาตรฐานของกลุ่มตัวอย่าง การแจกแจง bootstrap และประชากร

ส่วนเบี่ยงเบนมาตรฐานของกลุ่มตัวอย่าง:

coffee_sample['flavor'].std()
0.3540883911928703

ส่วนเบี่ยงเบนมาตรฐานประชากรที่ประมาณได้:

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

Standard error คือส่วนเบี่ยงเบนมาตรฐานของสถิติที่สนใจ

ส่วนเบี่ยงเบนมาตรฐานประชากรที่แท้จริง:

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

Standard error คูณรากที่สองของขนาดตัวอย่างจะประมาณส่วนเบี่ยงเบนมาตรฐานของประชากร

การสุ่มตัวอย่างใน Python

การตีความ standard error

  • Estimated standard error → ส่วนเบี่ยงเบนมาตรฐานของการแจกแจง bootstrap สำหรับสถิติของกลุ่มตัวอย่าง
  • $\text{Population std. dev} \approx \text{Std. Error} \times \sqrt{\text{Sample size}}$
การสุ่มตัวอย่างใน Python

มาฝึกกันเถอะ!

การสุ่มตัวอย่างใน Python

Preparing Video For Download...