Phân tích chuỗi thời gian và dự báo: xu hướng, mùa vụ, trung bình trượt, làm trơn mũ, ARIMA
Nội dung bài viết 9 mục
Tóm tắt nhanh
- Chuỗi thời gian = dữ liệu đo theo thứ tự thời gian đều nhau (ngày, tuần, tháng).
- Gồm 3 thành phần: xu hướng, mùa vụ/chu kỳ, nhiễu ngẫu nhiên.
- Bắt đầu từ phương pháp đơn giản (dự báo ngây thơ, trung bình trượt) làm mốc so sánh; mô hình phức tạp phải tốt hơn mốc đó mới đáng dùng.
- Đánh giá dự báo trên giai đoạn sau cùng (không chia ngẫu nhiên).
Ứng dụng trong doanh nghiệp sản xuất
| Dự báo | Phục vụ |
|---|---|
| Nhu cầu, đơn hàng theo tháng | Kế hoạch sản xuất, mua vật tư, cân bằng sản xuất Heijunka |
| Tiêu thụ điện, khí nén | Quản lý năng lượng, EnB/EnPI theo ISO 50001 |
| Số giờ dừng máy, tiêu hao phụ tùng | Kế hoạch bảo trì, tồn kho phụ tùng |
| Nhân lực theo mùa | Kế hoạch tuyển dụng thời vụ |
Phân rã chuỗi thời gian
- Xu hướng (Trend): tăng/giảm dài hạn — doanh số tăng đều 5%/năm.
- Mùa vụ (Seasonality): lặp lại theo chu kỳ cố định — cao điểm trước Tết, thấp tháng 2.
- Chu kỳ (Cycle): dao động dài, không cố định — theo chu kỳ kinh tế.
- Nhiễu (Residual): phần còn lại không giải thích được.
Vẽ biểu đồ đường theo thời gian là bước đầu tiên bắt buộc: nhìn thấy xu hướng, mùa vụ, điểm gãy (đổi khách hàng lớn, dịch bệnh) trước khi chọn mô hình.
Các phương pháp dự báo
| Phương pháp | Ý tưởng | Phù hợp |
|---|---|---|
| Ngây thơ (Naive) | Kỳ tới = kỳ này | Mốc so sánh |
| Ngây thơ mùa vụ | Tháng 12 năm nay = tháng 12 năm trước | Mốc khi có mùa vụ rõ |
| Trung bình trượt | Trung bình N kỳ gần nhất | Dữ liệu ổn định, không xu hướng |
| Làm trơn mũ đơn | Trung bình có trọng số giảm dần về quá khứ | Không xu hướng, không mùa vụ |
| Holt | Làm trơn mũ + xu hướng | Có xu hướng |
| Holt-Winters (ETS) | + mùa vụ | Có xu hướng và mùa vụ |
| ARIMA/SARIMA | Mô hình hoá tự tương quan của chuỗi | Chuỗi dài, cần dừng (stationary) |
| Hồi quy có biến ngoài | Thêm biến giải thích (khuyến mãi, ngày lễ) | Biết rõ yếu tố tác động |
Làm trong Excel
FORECAST.ETS(ngày_dự_báo, giá_trị, dòng_thời_gian)— Holt-Winters tự động phát hiện mùa vụ.FORECAST.ETS.CONFINT— khoảng tin cậy của dự báo.- Data → Forecast Sheet — tạo nhanh biểu đồ dự báo có khoảng tin cậy.
Dòng thời gian phải đều nhau (đủ các tháng, không thiếu kỳ).
Làm trong Python
import pandas as pd
from statsmodels.tsa.holtwinters import ExponentialSmoothing
s = (df.set_index("thang")["don_hang"].asfreq("MS")) # chuỗi theo tháng
train, test = s[:-6], s[-6:] # 6 tháng cuối để kiểm tra
model = ExponentialSmoothing(train, trend="add", seasonal="mul",
seasonal_periods=12).fit()
fc = model.forecast(6)
naive = s.shift(12)[-6:] # mốc: cùng tháng năm trước
mape = lambda a, f: ((a - f).abs() / a).mean() * 100
print("MAPE Holt-Winters:", round(mape(test, fc), 1), "%")
print("MAPE mốc mùa vụ :", round(mape(test, naive), 1), "%")
Đánh giá sai số dự báo
| Chỉ số | Ý nghĩa |
|---|---|
| MAE | Sai số tuyệt đối trung bình (đơn vị gốc) |
| RMSE | Phạt nặng sai số lớn |
| MAPE | Sai số % — dễ trao đổi, không dùng khi giá trị gần 0 |
| Bias | Dự báo có thiên lệch cao/thấp có hệ thống không |
Theo dõi sai số dự báo hằng tháng như một KPI của bộ phận kế hoạch; dự báo luôn thiên cao là dấu hiệu tồn kho sẽ tăng.
Liên hệ với SPC
Control chart giả định các điểm độc lập. Dữ liệu chuỗi thời gian có tự tương quan (hôm nay giống hôm qua) có thể tạo ra quá nhiều tín hiệu giả trên biểu đồ kiểm soát. Khi đó cần mô hình hoá chuỗi trước rồi theo dõi phần dư.
Lỗi hay gặp
- Chia ngẫu nhiên dữ liệu chuỗi thời gian → mô hình “nhìn thấy tương lai”.
- Dự báo từ dữ liệu quá ngắn (cần ít nhất 2 chu kỳ mùa vụ, tức 24 tháng cho mùa vụ năm).
- Bỏ qua sự kiện bất thường (dịch bệnh, mất khách lớn) trong dữ liệu huấn luyện.
- Chỉ đưa một con số dự báo, không có khoảng tin cậy.
Cần người làm giúp?
Industrial Knowledge hỗ trợ dựng dashboard dự báo nhu cầu, năng lượng, phụ tùng trên Excel hoặc Power BI. Xem dịch vụ.