I am trying to forecast weekly ABV (Average Basket Value) for a retail company using past data, in R. I have been advised to use seasonal ARIMA modelling with exogenous variables.
The data is highly seasonal, particularly around holidays. The exogenous variables would be used to account for Easter and Mother's Day, which do not fall on a consistent day or week, each year.
There are two main issues I'm facing. Firstly, if using my company's financial calendar, the number of weeks in a year varies between 52 and 53. This means that I don't have consistent seasonal element.
On top of this, Christmas causes an issue. ABV changes massively in the days leading up to, and after, Christmas. Therefore week 51 of a given year might have a very different ABV to another year, purely because Christmas Day might fall earlier or later within that week.
Ignoring the issue of Christmas, I took my weekly ABV and seasonally adjusted it, by taking
yt' = yt - yt-k where k is either 51, 52, or 53, depending on the year, and what caused the data to be closest aligned.
The data wasn't yet stationary, so I took a first order difference:
yt'' = yt' - yt-1'
I then tried running the following code in R, based on some estimates from the ACF and PACF charts
fit <- SAABV %>%
model(
arima013011 = ARIMA(ABV ~ pdq(0,1,3) + PDQ(0,1,1)),
arima310210 = ARIMA(ABV ~ pdq(3,1,0) + PDQ(2,1,0)),
auto = ARIMA(ABV, stepwise = FALSE, approx = FALSE)
)
fit %>% pivot_longer(everything(), names_to = "Model name",
values_to = "Orders")
I got this result:
# A mable: 3 x 2
# Key: Model name [3]
`Model name` Orders
<chr> <model>
1 arima013011 <ARIMA(0,1,3)>
2 arima310210 <ARIMA(3,1,0)>
3 auto <ARIMA(5,0,0)>
This seems to have been returning a normal ARIMA model, and not a seasonal one, as I wanted. Is this because of the 52/53 week issue?
To avoid this issue, and the issues of Christmas causing outliers and incorrect predictions, I am considering running it on daily data instead, though I'm not sure this will fix the issue, especially as even the number of days in a year are not consistent. Does anyone have any recommendations?