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

ความสัมพันธ์ระหว่างตัวแปร

การตรวจสอบความสัมพันธ์ระหว่างตัวแปรก่อนสร้างโมเดล machine learning เป็นสิ่งที่มีประโยชน์มาก เพราะช่วยให้เห็นว่า feature ใดมีความสัมพันธ์กับ target มากที่สุด โดยทั่วไปมักใช้ค่าสัมประสิทธิ์สหสัมพันธ์แบบ Pearson ซึ่งตรวจจับได้เฉพาะความสัมพันธ์เชิงเส้นตรง และมักสมมติว่าข้อมูลมีการกระจายแบบปกติ ซึ่งสามารถสังเกตได้คร่าว ๆ จากฮิสโตแกรม ตัวแปรที่มีความสัมพันธ์สูงจะมีค่าสัมประสิทธิ์ Pearson ใกล้ 1 (สัมพันธ์เชิงบวก) หรือ -1 (สัมพันธ์เชิงลบ) ส่วนค่าที่ใกล้ 0 หมายความว่าตัวแปรทั้งสองไม่มีความสัมพันธ์เชิงเส้นตรงกัน

หากใช้ช่วงเวลาเดียวกันสำหรับการเปลี่ยนแปลงราคาในอดีตและในอนาคต จะช่วยให้เห็นได้ว่าราคาหุ้นมีพฤติกรรมแบบ mean-reverting (แกว่งตัวรอบค่าเฉลี่ย) หรือแบบ trend-following (ขึ้นต่อเนื่องเมื่อมีแนวโน้มขาขึ้น)

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

Machine Learning สำหรับการเงินด้วย Python

ดูคอร์ส

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

ใช้ DataFrame lng_df และคอลัมน์ Adj_Close ทำตามขั้นตอนต่อไปนี้:

  • สร้างราคาในอนาคต 5 วัน (เป็น 5d_future_close) ด้วย .shift(-5) ของ pandas
  • ใช้ pct_change(5) กับ 5d_future_close และ Adj_Close เพื่อสร้างการเปลี่ยนแปลงราคา % ในอนาคต 5 วัน (5d_close_future_pct) และการเปลี่ยนแปลงราคา % ปัจจุบัน 5 วัน (5d_close_pct)
  • ตรวจสอบความสัมพันธ์ระหว่างคอลัมน์การเปลี่ยนแปลงราคา % ทั้งสองด้วย .corr() บน lng_df
  • ใช้ plt.scatter() สร้างกราฟกระจาย (scatterplot) ของ 5d_close_pct เทียบกับ 5d_close_future_pct

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

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

# Create 5-day % changes of Adj_Close for the current day, and 5 days in the future
lng_df['5d_future_close'] = lng_df['Adj_Close'].shift(____)
lng_df['5d_close_future_pct'] = lng_df['5d_future_close'].pct_change(5)
lng_df['5d_close_pct'] = lng_df['Adj_Close'].pct_change(____)

# Calculate the correlation matrix between the 5d close pecentage changes (current and future)
corr = lng_df[['5d_close_pct', '5d_close_future_pct']].____
print(corr)

# Scatter the current 5-day percent change vs the future 5-day percent change
plt.scatter(lng_df['5d_close_pct'], lng_df[____])
plt.show()
แก้ไขและรันโค้ด