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

Permutation Test สำหรับสหสัมพันธ์

ความผันผวนของ Bitcoin เทียบกับ S&P 500 แตกต่างกันอย่างไร?

ก่อนหน้านี้ได้คำนวณความผันผวนในรูปของเปอร์เซ็นต์การเปลี่ยนแปลงรายวัน ซึ่งถูกเก็บไว้ในคอลัมน์ Pct_Daily_Change_BTC และ Pct_Daily_Change_SP500 ในชุดข้อมูลแล้ว คำถามที่ต้องการตอบคือค่าทั้งสองนี้มีสหสัมพันธ์กันมากเพียงใด วิธีหนึ่งที่ใช้ตอบคำถามนี้คือ permutation test โดยการสุ่มสลับค่าระหว่าง S&P 500 กับ BTC เพื่อดูว่าผลลัพธ์แบบสุ่มจะเป็นอย่างไร แล้วจึงนำมาเปรียบเทียบกับค่าที่สังเกตได้จริง

ได้โหลด DataFrame ของราคา S&P 500 และ Bitcoin (btc_sp_df) ไว้ให้แล้ว พร้อมกับแพ็กเกจ pandas (pd), NumPy (np) และ stats จาก SciPy

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

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

ดูคอร์ส

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

  • กำหนดฟังก์ชัน statistic() ที่คืนค่าเฉพาะค่า Pearson R ระหว่างเวกเตอร์สองตัว
  • กำหนด data ให้เป็น tuple ที่ประกอบด้วยค่าความผันผวนของ BTC และ SP500
  • ทำ permutation test โดยใช้ข้อมูล, statistic, จำนวน resample 1,000 ครั้ง และสมมติฐานทางเลือกว่า Bitcoin มีความผันผวนมากกว่า
  • แสดงผลว่า p-value มีนัยสำคัญที่ระดับ 5% หรือไม่

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

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

# Define a function which returns the Pearson R value
def statistic(x, y):
	____

# Define the data as the percent daily change from each asset
data = ____

# Compute a permutation test for the percent daily change of each asset
res = ____(____, ____, 
           n_resamples=____,
           vectorized=____, 
           alternative='____')

# Print if the p-value is significant at 5%
print(res.pvalue < 0.05)
แก้ไขและรันโค้ด