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

จำลอง AR(1) Time Series

ในแบบฝึกหัดนี้ จะได้จำลองและพล็อต AR(1) time series หลายรูปแบบ โดยแต่ละรูปแบบมีค่าพารามิเตอร์ \(\small \phi\) ที่แตกต่างกัน โดยใช้โมดูล arima_process จาก statsmodels จะได้ทดลองกับโมเดล AR(1) ที่มีค่า \(\small \phi\) บวกมาก และค่า \(\small \phi\) ลบมาก แต่สามารถทดลองใช้พารามิเตอร์ค่าอื่น ๆ ได้ตามต้องการ

มีข้อตกลงบางประการในการใช้โมดูล arima_process ที่ควรทำความเข้าใจก่อน ประการแรก ฟังก์ชันเหล่านี้ถูกออกแบบมาให้รองรับทั้งโมเดล AR และ MA ดังนั้น ในตอนนี้ให้ละเว้นส่วนของ MA ไปก่อน ประการที่สอง เมื่อระบุค่าสัมประสิทธิ์ ต้องรวมค่าสัมประสิทธิ์ที่ lag-zero ซึ่งมีค่าเป็น 1 เสมอ และเครื่องหมายของสัมประสิทธิ์อื่น ๆ จะตรงข้ามกับที่ใช้ในหนังสือเรียน (เพื่อให้สอดคล้องกับแนวปฏิบัติในวรรณกรรมด้าน signal processing) ตัวอย่างเช่น สำหรับ AR(1) process ที่มี \(\small \phi=0.9\) อาร์เรย์ของพารามิเตอร์ AR จะเขียนเป็น ar = np.array([1, -0.9])

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

การวิเคราะห์อนุกรมเวลาด้วย Python

ดูคอร์ส

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

  • นำเข้าคลาส ArmaProcess จากโมดูล arima_process
  • พล็อต AR process ที่จำลองขึ้น:
    • ให้ ar1 แทนอาร์เรย์ของพารามิเตอร์ AR รูปแบบ [1, \(\small -\phi\)] ตามที่อธิบายไว้ข้างต้น สำหรับพารามิเตอร์ MA ให้ ma1 มีเพียงค่าสัมประสิทธิ์ที่ lag-zero ซึ่งมีค่าเป็น 1
    • สร้าง instance ของคลาส ArmaProcess(ar,ma) โดยใช้พารามิเตอร์ ar1 และ ma1 แล้วตั้งชื่อว่า AR_object1
    • จำลองข้อมูล 1000 จุดจากออบเจกต์ AR_object1 ที่สร้างขึ้น โดยใช้เมธอด .generate_sample() จากนั้นพล็อตข้อมูลที่ได้ในแบบ subplot
  • ทำซ้ำขั้นตอนเดิมสำหรับพารามิเตอร์ AR ตัวที่สอง

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

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

# import the module for simulating data
from statsmodels.tsa.arima_process import ArmaProcess

# Plot 1: AR parameter = +0.9
plt.subplot(2,1,1)
ar1 = np.array([1, ____])
ma1 = np.array([1])
AR_object1 = ArmaProcess(____, ____)
simulated_data_1 = AR_object1.generate_sample(nsample=1000)
plt.plot(simulated_data_1)

# Plot 2: AR parameter = -0.9
plt.subplot(2,1,2)
ar2 = np.array([1, ____])
ma2 = np.array([1])
AR_object2 = ArmaProcess(____, ____)
simulated_data_2 = AR_object2.generate_sample(nsample=1000)
plt.plot(simulated_data_2)
plt.show()
แก้ไขและรันโค้ด