Mô hình SARIMA là một phiên bản mở rộng của ARIMA, được thiết kế để xử lý dữ liệu chuỗi thời gian có tính mùa vụ rõ rệt. SARIMA kết hợp các thành phần:
- Autoregressive (AR): Thành phần hồi quy tự động.
- Differencing (I): Thành phần sai phân để làm cho chuỗi dữ liệu trở nên tĩnh.
- Moving-average (MA): Thành phần trung bình trượt.
- Cùng với các thành phần mùa vụ tương ứng.
Mô hình được biểu diễn theo công thức: SARIMA(p, d, q)(P, D, Q)[s], trong đó:
p
: Bậc của thành phần autoregressive (AR).d
: Bậc của sai phân (I) để làm chuỗi thời gian tĩnh.q
: Bậc của thành phần moving-average (MA).P
: Bậc autoregressive theo mùa.D
: Bậc sai phân theo mùa.Q
: Bậc moving-average theo mùa.s
: Chu kỳ mùa vụ (ví dụ: 12 tháng với dữ liệu hàng tháng).
Ứng dụng: SARIMA hữu ích trong việc dự báo chuỗi thời gian có tính mùa vụ mạnh, như dữ liệu bán hàng hàng tháng, nhiệt độ trung bình hàng năm, hoặc lượng khách du lịch theo mùa.
Triển khai SARIMA với Python và sktime
Chúng ta sử dụng mô hình ARIMA từ sktime để dự báo chuỗi thời gian về số lượng hành khách hàng không trong 20 tháng tiếp theo và hiển thị kết quả bằng biểu đồ.
1. Import các thư viện
import matplotlib.pyplot as plt
from sktime.datasets import load_airline
from sktime.forecasting.arima import ARIMA
import numpy as np
2. Tải dữ liệu
y = load_airline()
Dữ liệu y
chứa số lượng hành khách hàng không quốc tế hàng tháng từ năm 1949 đến 1960.
3. Khởi tạo mô hình ARIMA
forecaster = ARIMA(
order=(1, 1, 0),
seasonal_order=(0, 1, 0, 12),
suppress_warnings=True
)
order=(1, 1, 0)
: Thành phần phi mùa vụ:p=1
: Sử dụng 1 giá trị hồi quy tự động (AR).d=1
: Sai phân bậc 1 để làm chuỗi tĩnh.q=0
: Không sử dụng thành phần trung bình trượt (MA).
seasonal_order=(0, 1, 0, 12)
: Thành phần mùa vụ:P=0
: Không có autoregressive theo mùa.D=1
: Sai phân bậc 1 theo mùa.Q=0
: Không có moving-average theo mùa.s=12
: Chu kỳ mùa vụ (12 tháng).
4. Huấn luyện mô hình
forecaster.fit(y)
Dữ liệu y
được dùng để huấn luyện mô hình ARIMA.
5. Dự báo
y_pred = forecaster.predict(fh=np.arange(20))
fh=np.arange(20)
: Xác định các bước dự báo (20 tháng tiếp theo).
6. Vẽ biểu đồ
plt.figure(figsize=(10, 5))
plt.plot(y.to_timestamp(), label='Thực tế')
plt.plot(y_pred, label='Dự báo', color='red')
plt.title('Dự báo mô hình ARIMA - dữ liệu hãng hàng không')
plt.legend()
plt.savefig('airline.jpg')
plt.show()
Biểu đồ hiển thị:
- Dữ liệu thực tế: Số lượng hành khách hàng không từ 1949 đến 1960.
- Dữ liệu dự báo: Số lượng hành khách trong 20 tháng tiếp theo (màu đỏ).
Discover more from Science Comics
Subscribe to get the latest posts sent to your email.