R, série de tempos, modelo de Arima, previsão, dados diários [closed]
Eu estou tentando fazer alguma previsão de demanda com dados diários, de 16 de janeiro de 2012 a 10 de outubro de 2013. Mas a previsão apenas retorna resultados terríveis. Alguma pista porque?
É assim que os dados se parecem em um gráfico: Existem sazonalidades semanais e mensais. Ou seja: Mais demanda durante a semana e menos demanda durante o final de semana.
Aqui está a aparência do gráfico de previsão: onde a linha preta é os dados reais e a linha azul são os dados previstos.
x = ts(data, freq=7, start=c(3,2))
fit <- auto.arima(x)
pred <- forecast(fit, h=300)
Eu fiz muita pesquisa sobre como ajustar dados diários com o modelo arima. E como há sazonalidade semanal, escolhi freq = 7.
No entanto, desde que os prognósticos são ruins. E alguém foi bom o suficiente para apontar um dos métodos que o professor Hyndman compartilhou sobre a montagem de modelos com múltiplas sazonalidades.
https://stats.stackexchange.com/questions/74418/frequency-of-time-series-in-r/74426#74426
Então eu peguei o conselho dos mocinhos e encaixei os modelos com os 2 métodos fornecidos no link acima.
Método 1: usando a função tbats ().
x_new <- msts(x, seasonal.periods=c(7,7*52))
fit <- tbats(x_new)
fc <- forecast(fit, h=7*52)
Eu usei a sazonalidade semanal 7 e a sazonalidade anual 7 * 52. Desde que eu não descobri uma maneira fácil de obter a sazonalidade mensal. Com base no resultado, a previsão também não é boa. Nota: se eu usar 7 * 4 como o segundo período sazonal mensal, isso dará uma pior previsão.
Método 2: Usando fouriers como um xreg.
seas1 <- fourier(x, K=1)
seas2 <- fourier(ts(x,freq=7*52), K=1)
fit <- auto.arima(x, xreg=cbind(seas1,seas2))
seas1.f <- fourierf(x, K=1, h=7*52)
seas2.f <- fourierf(ts(x,freq=7*52), K=1, h=7*52)
fc1 <- forecast(fit, xreg=cbind(seas1.f, seas2.f))
Eu tentei com K diferente, e isso não melhora a previsão.
Portanto, estou preso! Desde que a previsão está longe. Alguém poderia apontar onde estão meus erros? Ou como devo melhorar meu modelo?
Muito Obrigado!