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

มั่นใจได้แค่ไหนว่าหุ้นตัวนี้มีการกลับสู่ค่าเฉลี่ย?

ในบทที่แล้ว เราพบว่าออโตคอร์รีเลชันของผลตอบแทนรายสัปดาห์ของหุ้น 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' ของ DataFrame returns อีกครั้ง
  • หาจำนวนการสังเกตใน 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()
แก้ไขและรันโค้ด