Porovnání auto.arima() a ets() na nesezónních datech
Statistika AICc se hodí pro výběr mezi modely stejné třídy – například pro porovnání modelů ETS navzájem nebo modelů ARIMA navzájem. Nelze ji však použít pro srovnání modelů ETS a ARIMA, protože patří do různých tříd modelů.
Místo toho můžeš použít křížovou validaci časových řad a porovnat model ARIMA s modelem ETS na datech austa. Protože tsCV() vyžaduje funkce vracející objekty s předpovědí, připravíš si jednoduché funkce, které modely natrénují a vrátí předpovědi. Argumenty funkce tsCV() jsou časová řada, předpovědní funkce a horizont předpovědi h. Prohlédni si tento úryvek kódu z druhé kapitoly:
e <- matrix(NA_real_, nrow = 1000, ncol = 8)
for (h in 1:8)
e[, h] <- tsCV(goog, naive, h = h)
...
Měj také na paměti, že operátor pipe v R vezme hodnotu z levé strany a předá ji jako argument tomu, co je napravo – krok za krokem, zleva doprava. Tady je příklad z předchozí kapitoly:
# Plot 20-year forecasts of the lynx series modeled by ets()
lynx %>% ets() %>% forecast(h = 20) %>% autoplot()
V tomto cvičení porovnáš MSE dvou předpovědních funkcí aplikovaných na austa a vykreslíš předpovědi té funkce, která vychází lépe. Datová sada austa je opět načtena ve tvém pracovním prostředí.
Toto cvičení je součástí kurzu
Forecasting v R
Pokyny k cvičení
- Doplň funkci
farima()tak, aby vracela předpovědi modeluauto.arima(). Řiď se strukturou předpřipravené funkcefets(), která dělá totéž proets(). - Pomocí
tsCV()vypočítej křížově validované chyby pro modely ETS na datechaustas jednokrokovými chybami a výsledek ulož doe1. - Pomocí
tsCV()vypočítej křížově validované chyby pro modely ARIMA na datechaustas jednokrokovými chybami a výsledek ulož doe2. - Vypočítej křížově validované MSE pro každou třídu modelů a odstraň chybějící hodnoty. Pokud si nepamatuješ, jak MSE spočítat, nahlédni do předchozí kapitoly.
- Vytvoř a vykresli 10letou předpověď budoucích hodnot
austapomocí nejlepší třídy modelů.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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 %>% ___ %>% ____