เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ปัญหาการเปรียบเทียบหลายครั้ง (Multiple Comparisons Problem)

ปัญหาการเปรียบเทียบหลายครั้ง (multiple comparisons problem) เกิดขึ้นเมื่อนักวิจัยตรวจสอบตัวแปรหรือกลุ่มตัวอย่างต่าง ๆ ซ้ำแล้วซ้ำเล่าเพื่อหานัยสำคัญทางสถิติ เพียงเพราะความบังเอิญทางสถิติ บางครั้งเราก็อาจพบผลลัพธ์ที่ดูมีนัยสำคัญได้เป็นครั้งคราว

ในแบบฝึกหัดนี้ จะได้ทำงานกับข้อมูลเงินเดือนของพนักงานในเมืองออสติน รัฐเทกซัส โดยจะนำเงินเดือนเหล่านั้นมาเปรียบเทียบกับข้อมูลที่สร้างขึ้นแบบสุ่ม เพื่อดูว่าข้อมูลสุ่มดังกล่าว "มีนัยสำคัญ" ในการอธิบายเงินเดือนของพนักงานบ่อยแค่ไหน ซึ่งแน่นอนว่านัยสำคัญใด ๆ ที่พบจะเป็นเพียงผลลวง เนื่องจากตัวเลขสุ่มไม่มีความหมายในการอธิบายสิ่งใดทั้งนั้น

ได้โหลด DataFrame ของเงินเดือนเจ้าหน้าที่ตำรวจ (police_salaries_df) ไว้ให้แล้ว พร้อมกับแพ็กเกจ pandas (pd), NumPy (np), Matplotlib (plt) และ stats จาก SciPy

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

พื้นฐานการอนุมานทางสถิติด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เก็บจำนวนคนในชุดข้อมูลไว้ในตัวแปร n_rows (แต่ละแถวคือหนึ่งคน) และกำหนดค่าเริ่มต้นของจำนวนผลลัพธ์ที่มีนัยสำคัญ n_significant เป็นศูนย์
  • เขียนลูป for ที่ทำงาน 1000 รอบ และสร้างตัวเลขสุ่มจำนวน n_rows ตัวในแต่ละรอบ
  • คำนวณค่า Pearson's R และ p-value ที่เกี่ยวข้องระหว่างตัวเลขสุ่มที่สร้างขึ้นกับเงินเดือนของเจ้าหน้าที่ตำรวจ
  • หาก p-value มีนัยสำคัญที่ระดับ 5% ให้เพิ่มค่า n_significant ขึ้นหนึ่งโดยใช้ตัวดำเนินการ +=

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Compute number of rows and initialize n_significant
n_rows = ____
n_significant = ____

# For loop which generates n_rows random numbers 1000 times
for i in ____:
  random_nums = np.random.uniform(size=____)
  # Compute correlation between random_nums and police salaries
  r, p_value = stats.____(____, random_nums)
  # If the p-value is significant at 5%, increment n_significant
  if ____ < ____:
    ____ += 1
    
print(n_significant)
แก้ไขและรันโค้ด