Bắt đầu ngayBắt đầu miễn phí

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

Xem khóa học

Hướng dẫn bài tập

  • Import lớp ArmaProcess trong mô-đun arima_process.
  • Vẽ các quá trình MA(1) được mô phỏng
    • Đặt ma1 là 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ố ar1ma1, tạo một thể hiện của lớp ArmaProcess(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.
  • 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()
Chỉnh sửa và Chạy Mã