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

จำลองอนุกรมเวลา MA(1)

จะได้จำลองและพล็อตอนุกรมเวลา MA(1) หลายชุด โดยแต่ละชุดใช้พารามิเตอร์ \(\small \theta\) ที่ต่างกัน ผ่านโมดูล arima_process ใน statsmodels เช่นเดียวกับที่ทำในบทก่อนหน้าสำหรับโมเดล AR(1) โดยจะดูโมเดล MA(1) ที่มี \(\small \theta\) เป็นบวกมากและลบมาก

เช่นเดียวกับบทก่อนหน้า เมื่อระบุค่าสัมประสิทธิ์ ต้องรวม lag-zero coefficient ที่มีค่าเป็น 1 ด้วย แต่ต่างจาก AR ตรงที่เครื่องหมายของสัมประสิทธิ์ MA ใช้ตามที่คาดไว้ได้เลย ตัวอย่างเช่น สำหรับกระบวนการ MA(1) ที่มี \(\small \theta=-0.9\) อาร์เรย์ของพารามิเตอร์ MA จะเป็น ma = np.array([1, -0.9])

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

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

ดูคอร์ส

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

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

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

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

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

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

# Plot 2: MA parameter = +0.9
plt.subplot(2,1,2)
ar2 = np.array([1])
ma2 = np.array([1, ____])
MA_object2 = ArmaProcess(____, ____)
simulated_data_2 = MA_object2.generate_sample(nsample=1000)
plt.plot(simulated_data_2)

plt.show()
แก้ไขและรันโค้ด