Mô phỏng chuỗi thời gian MA(1)
Bạn sẽ mô phỏng và vẽ một vài chuỗi thời gian MA(1), mỗi chuỗi với một tham số \(\small \theta\) khác nhau, dùng mô-đun arima_process trong statsmodels, giống như bạn đã làm ở chương trước cho mô hình AR(1). Bạn sẽ xem xét một mô hình MA(1) với \(\small \theta\) dương lớn và \(\small \theta\) âm lớn.
Giống như ở chương trước, khi nhập các hệ số, bạn phải bao gồm hệ số độ trễ 0 bằng 1; nhưng khác với chương về mô hình AR, dấu của các hệ số MA đúng như kỳ vọng. Ví dụ, với một quá trình MA(1) có \(\small \theta=-0.9\), mảng biểu diễn các tham số MA sẽ là ma = np.array([1, -0.9])
Bài tập này là một phần của khóa học
Phân tích chuỗi thời gian với Python
Hướng dẫn bài tập
- Import lớp
ArmaProcesstrong mô-đunarima_process. - Vẽ các quá trình MA(1) được mô phỏng
- Đặt
ma1là mảng các tham số MA [1, \(\small \theta\)] như giải thích ở trên. Mảng tham số AR chỉ gồm hệ số độ trễ 0 bằng 1. - Với các tham số
ar1vàma1, tạo một thể hiện của lớpArmaProcess(ar,ma)đặt tên làMA_object1. - Mô phỏng 1000 điểm dữ liệu từ đối tượng bạn vừa tạo,
MA_object1, bằng phương thức.generate_sample(). Vẽ dữ liệu mô phỏng trong một subplot.
- Đặt
- Lặp lại cho tham số MA còn lại.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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()