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

ฝึกใช้ Permutation

นักบาสเกตบอล NBA มีน้ำหนักมากกว่าผู้ชายวัยผู้ใหญ่ชาวอเมริกันทั่วไปหรือไม่? แบบฝึกหัดนี้จะให้คำนวณช่วงความเชื่อมั่น 95% ของค่าเฉลี่ยความแตกต่างของน้ำหนัก (หน่วยเป็นกิโลกรัม) ระหว่างนักบาสเกตบอล NBA กับผู้ชายวัยผู้ใหญ่ชาวอเมริกัน โดยใช้ลิสต์ทั้งสองที่เตรียมไว้ให้

การสุ่มสลับ (Permutation) เหมาะอย่างยิ่งสำหรับการทดสอบความแตกต่าง จึงเป็นวิธี resampling ที่จะใช้ในแบบฝึกหัดนี้

nba_weights = [96.7, 101.1, 97.9, 98.1, 98.1, 100.3, 101.0, 98.0, 97.4, 100.5, 100.3, 100.2, 100.6]
us_adult_weights = [75.1, 100.1, 95.2, 81.0, 72.0, 63.5, 80.0, 97.1, 94.3, 80.3, 93.5, 85.8, 95.1]

แต่ละลิสต์ข้างต้นมีค่าน้ำหนักทั้งหมด 13 ค่า

ไลบรารีต่อไปนี้ถูก import ไว้ให้แล้ว: random, numpy ในชื่อ np, seaborn ในชื่อ sns และ matplotlib.pyplot ในชื่อ plt

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

Monte Carlo Simulations ใน Python

ดูคอร์ส

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

  • กำหนด all_weights เป็นลิสต์ที่รวมค่าจากทั้ง nba_weights และ us_adult_weights
  • ทำการสุ่มสลับ (permutation) บน all_weights โดยใช้ np.random.permutation()
  • กำหนด 13 ตัวอย่างแรกจากผลที่สุ่มสลับให้กับ perm_nba และอีก 13 ตัวอย่างที่เหลือให้กับ perm_adult

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

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

# Define all_weights
all_weights = ____
simu_diff = []

for i in range(1000):
	# Perform the permutation on all_weights
    perm_sample = ____
    # Assign the permutated samples to perm_nba and perm_adult
    perm_nba, perm_adult = ____, ____
    perm_diff = np.mean(perm_nba) - np.mean(perm_adult)
    simu_diff.append(perm_diff)
mean_diff = np.mean(nba_weights) - np.mean(us_adult_weights) 
upper = np.quantile(simu_diff, 0.975)
lower = np.quantile(simu_diff, 0.025)
print(mean_diff, lower, upper)
แก้ไขและรันโค้ด