Porównanie auto.arima() i ets() na danych bez sezonowości
Statystyka AICc przydaje się do wyboru między modelami tej samej klasy – na przykład do porównania modeli ETS lub modeli ARIMA. Nie można jej jednak używać do porównywania modeli ETS z modelami ARIMA, ponieważ należą one do różnych klas.
Zamiast tego możesz zastosować kroswalidację szeregów czasowych, aby porównać model ARIMA i model ETS na danych austa. Ponieważ tsCV() wymaga funkcji zwracających obiekty prognoz, przygotujesz kilka prostych funkcji, które dopasowują modele i zwracają prognozy. Argumentami tsCV() są: szereg czasowy, funkcja prognozowania oraz horyzont prognozy h. Przeanalizuj poniższy fragment kodu z drugiego rozdziału:
e <- matrix(NA_real_, nrow = 1000, ncol = 8)
for (h in 1:8)
e[, h] <- tsCV(goog, naive, h = h)
...
Przypomnij sobie również, że operator potoku w R przekazuje wartość z lewej strony jako argument do tego, co znajduje się po prawej – krok po kroku, od lewej do prawej. Oto przykład oparty na kodzie z wcześniejszego rozdziału:
# Plot 20-year forecasts of the lynx series modeled by ets()
lynx %>% ets() %>% forecast(h = 20) %>% autoplot()
W tym ćwiczeniu porównasz MSE dwóch funkcji prognozowania zastosowanych do austa, a następnie wykreślisz prognozy tej funkcji, która daje lepsze wyniki. Zbiór danych austa jest już wczytany do środowiska.
To ćwiczenie jest częścią kursu
Prognozowanie w R
Instrukcje do ćwiczenia
- Uzupełnij funkcję
farima(), aby prognozowała wynikiauto.arima(). Wzoruj się na gotowym kodzie funkcjifets(), która robi to samo dlaets(). - Oblicz błędy kroswalidacji dla modeli ETS na danych
austaza pomocątsCV()z błędami jednokrokowymi i zapisz wynik jakoe1. - Oblicz błędy kroswalidacji dla modeli ARIMA na danych
austaza pomocątsCV()z błędami jednokrokowymi i zapisz wynik jakoe2. - Oblicz kroswalidowane MSE dla każdej klasy modeli, usuwając brakujące wartości. Jeśli nie pamiętasz, jak obliczać MSE, zajrzyj do poprzedniego rozdziału.
- Wygeneruj i wykreśl 10-letnie prognozy przyszłych wartości
austa, korzystając z lepszej klasy modeli.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Set up forecast functions for ETS and ARIMA models
fets <- function(x, h) {
forecast(ets(x), h = h)
}
farima <- function(x, h) {
forecast(___, ___)
}
# Compute CV errors for ETS on austa as e1
e1 <- tsCV(austa, ___, ___)
# Compute CV errors for ARIMA on austa as e2
e2 <- tsCV(___, ___, ___)
# Find MSE of each model class
mean(___, ___)
mean(___, ___)
# Plot 10-year forecasts using the best model class
austa %>% ___ %>% ____