auto.arima() en ets() vergelijken op seizoensdata
Wat gebeurt er als je trainings- en testsets wilt maken voor data met een hogere frequentie dan jaarlijks? Als het nodig is, kun je een vector in de vorm c(jaar, periode) gebruiken voor de keywords start en/of end in de functie window(). Zorg er ook voor dat je de juiste waarde voor h gebruikt in forecastingfuncties. Denk eraan dat h gelijk moet zijn aan de lengte van de data in je testset.
Stel dat je data 15 jaar beslaat, je trainingsset uit de eerste 10 jaar bestaat en je de laatste 5 jaar wilt voorspellen. Dan gebruik je h = 12 * 5 in plaats van h = 5, omdat je testset 60 maandelijkse observaties bevat. Bestaat je trainingsset in plaats daarvan uit de eerste 9,5 jaar en wil je de laatste 5,5 jaar voorspellen, dan gebruik je h = 66 om rekening te houden met de extra 6 maanden.
In de laatste oefening van dit hoofdstuk vergelijk je seizoensgebonden ARIMA- en ETS-modellen toegepast op de kwartaaldata van cementproductie qcement. Omdat de reeks erg lang is, kun je een trainings- en testset gebruiken in plaats van tijdreeks-crossvalidatie. Dat is veel sneller.
De qcement-data is beschikbaar in je werkruimte.
Deze oefening maakt deel uit van de cursus
Voorspellen in R
Oefeninstructies
- Maak een trainingsset
trainaan die bestaat uit 20 jaar aanqcement-data, beginnend in 1988 en eindigend in het laatste kwartaal van 2007; je moet een vector gebruiken voorend. De resterende data vormt je testset. - Pas ARIMA- en ETS-modellen toe op de trainingsdata en sla deze op als respectievelijk
fit1enfit2. - Controleer, net als in eerdere oefeningen, of beide modellen residuen met witte ruis hebben.
- Maak forecasts voor de resterende data met beide modellen als respectievelijk
fc1enfc2. Zethgelijk aan het totaal aantal kwartalen in je testset. Let op: de laatste observatie inqcementis niet het laatste kwartaal van het jaar! - Gebruik de functie
accuracy()om het betere model te vinden op basis van de RMSE-waarde, en sla dit op alsbettermodel.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Use 20 years of the qcement data beginning in 1988
train <- window(___, start = ___, end = ___)
# Fit an ARIMA and an ETS model to the training data
fit1 <- ___
fit2 <- ___
# Check that both models have white noise residuals
___
___
# Produce forecasts for each model
fc1 <- forecast(___, h = ___)
fc2 <- forecast(___, h = ___)
# Use accuracy() to find better model based on RMSE
accuracy(___, ___)
accuracy(___, ___)
bettermodel <- ___