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

Mô phỏng chuỗi thời gian AR(1)

Bạn sẽ mô phỏng và vẽ một vài chuỗi thời gian AR(1), mỗi chuỗi với một tham số \(\small \phi\) khác nhau, bằng mô-đun arima_process trong statsmodels. Trong bài này, bạn sẽ xem xét mô hình AR(1) với \(\small \phi\) dương lớn và \(\small \phi\) âm lớn; bạn cũng có thể thử các tham số khác theo ý muốn.

Có một vài quy ước khi dùng mô-đun arima_process cần được giải thích. Thứ nhất, các hàm này được thiết kế khá tổng quát để xử lý cả mô hình AR và MA. Chúng ta sẽ học mô hình MA ở phần tiếp theo, nên hiện tại hãy bỏ qua phần MA. Thứ hai, khi nhập các hệ số, bạn phải bao gồm hệ số ở độ trễ 0 bằng 1, và dấu của các hệ số còn lại sẽ ngược với cách chúng ta đã dùng (để nhất quán với tài liệu chuỗi thời gian trong xử lý tín hiệu). Ví dụ, với quá trình AR(1) có \(\small \phi=0.9\), mảng biểu diễn các tham số AR sẽ là ar = 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 AR được mô phỏng:
    • Đặt ar1 là mảng tham số AR [1, \(\small -\phi\)] như đã giải thích ở trên. Tạm thời, mảng tham số MA, ma1, chỉ chứa 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à AR_object1.
    • Mô phỏng 1000 điểm dữ liệu từ đối tượng bạn vừa tạo, AR_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ố AR 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: 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()
Chỉnh sửa và Chạy Mã