จำลองอนุกรมเวลา 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()