ความสัมพันธ์ระหว่างตัวแปร
การตรวจสอบความสัมพันธ์ระหว่างตัวแปรก่อนสร้างโมเดล 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()