Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Fyll i funktionen farima() så att den prognostiserar resultaten av auto.arima(). Följ strukturen i den färdigskrivna koden i fets() som gör samma sak för ets().
  • Beräkna korsvaliderade fel för ETS-modeller på austa med tsCV() och ettstegsprognoser, och spara resultatet i e1.
  • Beräkna korsvaliderade fel för ARIMA-modeller på austa med tsCV() och ettstegsprognoser, och spara resultatet i e2.
  • 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 austa med 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 %>% ___ %>% ____
Redigera och kör kod