ปัญหาการเปรียบเทียบหลายครั้ง (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)