Prognostisering av veckodata
Med veckodata är det svårt att hantera säsongsvariationer med ETS- eller ARIMA-modeller eftersom säsongslängden är för stor (ungefär 52). I stället kan du använda harmonisk regression, som modellerar säsongsvariationerna med hjälp av sinus- och cosinuskurvor.
Funktionen fourier() gör det enkelt att generera de harmoniker som behövs. Ju högre ordning (\(K\)), desto mer svängigt tillåts säsongsmönstret vara. Med \(K=1\) är det en enkel sinuskurva. Du kan välja värdet på \(K\) genom att minimera AICc-värdet. Som du såg i videon tar fourier() emot en tidsserie, antalet Fourier-termer som ska genereras, och valfritt antalet rader som ska prognostiseras:
> # fourier(x, K, h = NULL)
> fit <- auto.arima(cafe, xreg = fourier(cafe, K = 6),
seasonal = FALSE, lambda = 0)
> fit %>%
forecast(xreg = fourier(cafe, K = 6, h = 24)) %>%
autoplot() + ylim(1.6, 5.1)
Den inladdade datamängden gasoline innehåller veckovisa data om färdiga motorbensinprodukter i USA. I den här övningen ska du anpassa en harmonisk regressionsmodell till dessa data och prognostisera de kommande tre åren.
Den här övningen är en del av kursen
Prognoser i R
Övningsinstruktioner
- Skapa en
xreg-matris med namnetharmonicsmed hjälp av metodenfourier()pågasolinemed ordningen \(K=13\), vilket har valts för att minimera AICc. - Anpassa en dynamisk regressionsmodell till
fit. SättxregtillharmonicsochseasonaltillFALSEeftersom säsongsvariationerna hanteras av regressorerna. - Skapa en ny
xreg-matris med namnetnewharmonicspå samma sätt, och beräkna sedan prognoser för de kommande tre åren somfc. - Plotta slutligen prognoserna
fc.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Set up harmonic regressors of order 13
harmonics <- fourier(___, K = ___)
# Fit regression model with ARIMA errors
fit <- auto.arima(___, xreg = ___, seasonal = ___)
# Forecasts next 3 years
newharmonics <- fourier(___, K = ___, h = ___)
fc <- forecast(___, xreg = ___)
# Plot forecasts fc
___