มั่นใจได้แค่ไหนว่าหุ้นตัวนี้มีการกลับสู่ค่าเฉลี่ย?
ในบทที่แล้ว เราพบว่าออโตคอร์รีเลชันของผลตอบแทนรายสัปดาห์ของหุ้น MSFT อยู่ที่ -0.16 ค่านี้ดูเหมือนจะมีนัยสำคัญ แต่จะมีนัยสำคัญทางสถิติจริงหรือไม่? กล่าวคือ เราสามารถบอกได้ไหมว่ามีโอกาสน้อยกว่า 5% ที่จะสังเกตเห็นออโตคอร์รีเลชันติดลบขนาดนี้ หากค่าออโตคอร์รีเลชันที่แท้จริงเป็นศูนย์? และมี lag อื่นใดที่มีออโตคอร์รีเลชันแตกต่างจากศูนย์อย่างมีนัยสำคัญหรือไม่?
แม้ว่าค่าออโตคอร์รีเลชันที่แท้จริงจะเป็นศูนย์ในทุก lag แต่ในกลุ่มตัวอย่างขนาดจำกัด ค่าประมาณของออโตคอร์รีเลชันก็จะไม่เป็นศูนย์พอดีอยู่ดี ความเบี่ยงเบนมาตรฐานของออโตคอร์รีเลชันจากกลุ่มตัวอย่างคือ \(\small 1/\sqrt{N}\) โดยที่ \(\small N\) คือจำนวนการสังเกต เช่น ถ้า \(\small N=100\) ความเบี่ยงเบนมาตรฐานของ ACF จะเท่ากับ 0.1 และเนื่องจาก 95% ของโค้งปกติอยู่ระหว่าง +1.96 ถึง -1.96 ความเบี่ยงเบนมาตรฐานจากค่าเฉลี่ย ช่วงความเชื่อมั่น 95% จึงเท่ากับ \(\small \pm 1.96/\sqrt{N}\) การประมาณนี้ใช้ได้เฉพาะเมื่อค่าออโตคอร์รีเลชันที่แท้จริงทั้งหมดเป็นศูนย์
ในแบบฝึกหัดนี้ จะคำนวณช่วงความเชื่อมั่นจริงและช่วงความเชื่อมั่นโดยประมาณสำหรับ ACF แล้วนำมาเปรียบเทียบกับออโตคอร์รีเลชันที่ lag 1 ซึ่งมีค่า -0.16 จากบทที่แล้ว ผลตอบแทนรายสัปดาห์ของ Microsoft ถูกโหลดไว้ล่วงหน้าใน DataFrame ชื่อ returns
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์อนุกรมเวลาด้วย Python
คำแนะนำการฝึกหัด
- คำนวณออโตคอร์รีเลชันของผลตอบแทนรายสัปดาห์ใน Series
'Adj Close'ของ DataFramereturnsอีกครั้ง - หาจำนวนการสังเกตใน DataFrame
returnsโดยใช้ฟังก์ชันlen() - ประมาณช่วงความเชื่อมั่น 95% ของออโตคอร์รีเลชันที่ประมาณได้ โดยสามารถใช้ฟังก์ชัน
sqrt()ที่ import ไว้แล้ว - พล็อตฟังก์ชันออโตคอร์รีเลชันของ
returnsโดยใช้plot_acfที่ import มาจาก statsmodels โดยกำหนดalpha=0.05สำหรับช่วงความเชื่อมั่น (ซึ่งเป็นค่าเริ่มต้น) และlags=20
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import the plot_acf module from statsmodels and sqrt from math
from statsmodels.graphics.tsaplots import plot_acf
from math import sqrt
# Compute and print the autocorrelation of MSFT weekly returns
autocorrelation = returns['Adj Close'].___
print("The autocorrelation of weekly MSFT returns is %4.2f" %(autocorrelation))
# Find the number of observations by taking the length of the returns DataFrame
nobs = ___
# Compute the approximate confidence interval
conf = 1.96/___
print("The approximate confidence interval is +/- %4.2f" %(conf))
# Plot the autocorrelation function with 95% confidence intervals and 20 lags using plot_acf
plot_acf(___, alpha=0.05, ___)
plt.show()