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

Đừng Vội C cất Áo Khoác Mùa Đông

Cuối cùng, bạn sẽ dự báo nhiệt độ trong 30 năm tới bằng mô hình ARMA(1,1), kèm theo các dải tin cậy quanh ước lượng đó. Hãy nhớ rằng ước lượng của xu hướng trôi (drift) sẽ ảnh hưởng lớn hơn nhiều đến các dự báo dài hạn so với các tham số ARMA.

Trước đó, bạn đã xác định dữ liệu nhiệt độ đi theo quy luật random walk và đã xét việc sai phân bậc một. Trong bài này, bạn sẽ dùng module ARIMA trên dữ liệu nhiệt độ (trước khi sai phân), điều này tương đương với việc dùng module ARMA trên các thay đổi của nhiệt độ, rồi lấy tổng tích lũy của các thay đổi này để thu được dự báo nhiệt độ.

Vì nhiệt độ có xu hướng tăng theo thời gian, bạn cũng cần thêm thành phần xu hướng khi định nghĩa mô hình ARIMA. Trong bài tập, bạn sẽ dùng xu hướng tuyến tính theo thời gian bằng cách đặt đối số trend='t'. Bạn cũng có thể thử các mô hình xu hướng khác để xem dự báo thay đổi ra sao. Ví dụ, với xu hướng bậc hai \(\small a+ bt + ct^2\), đặt trend=[0,1,1] để bao gồm cả hạng tuyến tính, \(\small bt\), và hạng bậc hai, \(\small ct^2\), trong mô hình.

Dữ liệu đã được nạp sẵn trong DataFrame tên là temp_NY.

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

  • Tạo một instance của lớp ARIMA tên mod cho mô hình ARMA tích phân (integrated) (1,1), tức mô hình ARIMA(1,1,1)
    • Tham số d trong order(p,d,q) là một, vì ta đã sai phân bậc một
    • Fit mod bằng phương thức .fit() và gọi kết quả là res
  • Dự báo chuỗi bằng phương thức plot_predict() trên res
    • Chọn ngày bắt đầu là 1872 và ngày kết thúc là 2046

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 ARIMA module from statsmodels
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.graphics.tsaplots import plot_predict

# Forecast temperatures using an ARIMA(1,1,1) model
mod = ARIMA(temp_NY, trend='t', order=(1,1,1))
___ = ___.fit()

# Plot the original series and the forecasted series
fig, ax = plt.subplots()
temp_NY.plot(ax=ax)
plot_predict(___, start='1872', end='2046', ax=ax)
plt.show()
Chỉnh sửa và Chạy Mã