So sánh auto.arima() và ets() trên dữ liệu theo mùa
Điều gì xảy ra khi bạn muốn tạo tập huấn luyện và kiểm tra cho dữ liệu có tần suất cao hơn theo năm? Khi cần, bạn có thể dùng một vector dạng c(year, period) cho các tham số start và/hoặc end trong hàm window(). Bạn cũng phải đảm bảo dùng giá trị h phù hợp trong các hàm dự báo. Nhớ rằng h phải bằng độ dài dữ liệu tạo thành tập kiểm tra của bạn.
Ví dụ, nếu dữ liệu của bạn kéo dài 15 năm, tập huấn luyện gồm 10 năm đầu, và bạn muốn dự báo 5 năm cuối, bạn sẽ dùng h = 12 * 5 chứ không phải h = 5 vì tập kiểm tra sẽ gồm 60 quan sát theo tháng. Nếu thay vào đó tập huấn luyện gồm 9,5 năm đầu và bạn muốn dự báo 5,5 năm cuối, bạn sẽ dùng h = 66 để tính cả 6 tháng bổ sung.
Trong bài tập cuối của chương này, bạn sẽ so sánh các mô hình ARIMA theo mùa và ETS áp dụng cho dữ liệu sản lượng xi măng theo quý qcement. Vì chuỗi rất dài, bạn có thể dùng tập huấn luyện và tập kiểm tra thay vì cross-validation chuỗi thời gian. Cách này nhanh hơn nhiều.
Dữ liệu qcement đã có sẵn trong không gian làm việc của bạn.
Bài tập này là một phần của khóa học
Dự báo bằng R
Hướng dẫn bài tập
- Tạo một tập huấn luyện tên
traingồm 20 năm dữ liệuqcementbắt đầu từ năm 1988 và kết thúc ở quý cuối của năm 2007; bạn phải dùng một vector choend. Phần dữ liệu còn lại là tập kiểm tra. - Khớp các mô hình ARIMA và ETS cho dữ liệu huấn luyện và lưu lần lượt vào
fit1vàfit2. - Giống như các bài trước, kiểm tra xem cả hai mô hình đều có phần dư là nhiễu trắng.
- Tạo dự báo cho phần dữ liệu còn lại từ cả hai mô hình và lưu lần lượt vào
fc1vàfc2. Đặthbằng tổng số quý trong tập kiểm tra của bạn. Hãy cẩn thận — quan sát cuối trongqcementkhông phải là quý cuối cùng của năm! - Dùng hàm
accuracy()để tìm mô hình tốt hơn dựa trên giá trị RMSE và lưu nó vàobettermodel.
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.
# Use 20 years of the qcement data beginning in 1988
train <- window(___, start = ___, end = ___)
# Fit an ARIMA and an ETS model to the training data
fit1 <- ___
fit2 <- ___
# Check that both models have white noise residuals
___
___
# Produce forecasts for each model
fc1 <- forecast(___, h = ___)
fc2 <- forecast(___, h = ___)
# Use accuracy() to find better model based on RMSE
accuracy(___, ___)
accuracy(___, ___)
bettermodel <- ___