Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Uzupełnij funkcję farima(), aby prognozowała wyniki auto.arima(). Wzoruj się na gotowym kodzie funkcji fets(), która robi to samo dla ets().
  • Oblicz błędy kroswalidacji dla modeli ETS na danych austa za pomocą tsCV() z błędami jednokrokowymi i zapisz wynik jako e1.
  • Oblicz błędy kroswalidacji dla modeli ARIMA na danych austa za pomocą tsCV() z błędami jednokrokowymi i zapisz wynik jako e2.
  • 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 %>% ___ %>% ____
Edytuj i uruchom kod