Porównanie auto.arima() i ets() na danych sezonowych
Co zrobić, gdy chcesz podzielić dane na zbiór treningowy i testowy, a dane mają częstotliwość wyższą niż roczna? W takim przypadku możesz podać wektor w postaci c(rok, okres) jako wartość parametrów start i/lub end w funkcji window(). Pamiętaj też, aby dopasować wartość h w funkcjach prognozowania. Parametr h powinien odpowiadać liczbie obserwacji w zbiorze testowym.
Na przykład: jeśli dane obejmują 15 lat, zbiór treningowy zawiera pierwsze 10 lat, a chcesz prognozować ostatnie 5 lat, użyj h = 12 * 5, a nie h = 5 – zbiór testowy zawiera bowiem 60 miesięcznych obserwacji. Jeśli natomiast zbiór treningowy obejmuje pierwsze 9,5 roku, a chcesz prognozować ostatnie 5,5 roku, użyj h = 66, aby uwzględnić dodatkowe 6 miesięcy.
W ostatnim ćwiczeniu tego rozdziału porównasz sezonowy model ARIMA z modelem ETS zastosowanymi do kwartalnych danych o produkcji cementu qcement. Ponieważ szereg jest bardzo długi, możesz pozwolić sobie na podział na zbiór treningowy i testowy zamiast stosować kroswalidację szeregów czasowych – to znacznie szybsze podejście.
Dane qcement są dostępne w twoim środowisku roboczym.
To ćwiczenie jest częścią kursu
Prognozowanie w R
Instrukcje do ćwiczenia
- Utwórz zbiór treningowy o nazwie
trainobejmujący 20 lat danychqcement, zaczynający się w roku 1988 i kończący się na ostatnim kwartale 2007 roku; jako wartośćendmusisz użyć wektora. Pozostałe dane stanowią twój zbiór testowy. - Dopasuj modele ARIMA i ETS do danych treningowych i zapisz je odpowiednio jako
fit1ifit2. - Tak jak w poprzednich ćwiczeniach, sprawdź, czy reszty obu modeli mają charakter białego szumu.
- Wygeneruj prognozy dla pozostałych danych z obu modeli i zapisz je odpowiednio jako
fc1ifc2. Ustawhna łączną liczbę kwartałów w zbiorze testowym. Uwaga – ostatnia obserwacja wqcementnie przypada na ostatni kwartał roku! - Korzystając z funkcji
accuracy(), wskaż lepszy model na podstawie wartości RMSE i zapisz go jakobettermodel.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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 <- ___