Jämföra auto.arima() och ets() på icke-säsongsmässig data
AICc-statistiken är användbar för att välja mellan modeller inom samma modellklass. Du kan till exempel använda den för att välja en ETS-modell eller en ARIMA-modell. Däremot kan du inte använda den för att jämföra ETS- och ARIMA-modeller, eftersom de tillhör olika modellklasser.
I stället kan du använda tidsseriekorsvalidering för att jämföra en ARIMA-modell och en ETS-modell på datamängden austa. Eftersom tsCV() kräver funktioner som returnerar prognos-objekt kommer du att skapa enkla funktioner som anpassar modellerna och returnerar prognoserna. Argumenten till tsCV() är en tidsserie, en prognosfunktion och en prognonshorisont h. Studera det här kodexemplet från det andra kapitlet:
e <- matrix(NA_real_, nrow = 1000, ncol = 8)
for (h in 1:8)
e[, h] <- tsCV(goog, naive, h = h)
...
Kom också ihåg att pipe-operatorer i R tar värdet till vänster och skickar det som argument till det som står till höger, steg för steg från vänster till höger. Här är ett exempel baserat på kod från ett tidigare kapitel:
# Plot 20-year forecasts of the lynx series modeled by ets()
lynx %>% ets() %>% forecast(h = 20) %>% autoplot()
I den här övningen jämför du MSE för två prognosfunktioner applicerade på austa och ritar sedan upp prognoserna från den funktion som ger bäst resultat. Datamängden austa är redan inläst i din arbetsmiljö.
Den här övningen är en del av kursen
Prognoser i R
Övningsinstruktioner
- Fyll i funktionen
farima()så att den prognostiserar resultaten avauto.arima(). Följ strukturen i den färdigskrivna koden ifets()som gör samma sak förets(). - Beräkna korsvaliderade fel för ETS-modeller på
austamedtsCV()och ettstegsprognoser, och spara resultatet ie1. - Beräkna korsvaliderade fel för ARIMA-modeller på
austamedtsCV()och ettstegsprognoser, och spara resultatet ie2. - Beräkna det korsvaliderade MSE för varje modellklass och ta bort saknade värden. Se det föregående kapitlet om du inte kommer ihåg hur MSE beräknas.
- Generera och rita upp 10-årsprognoser för framtida värden i
austamed den bästa modellklassen.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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 %>% ___ %>% ____