Previsão de séries temporais com dados diários: ARIMA com regressor

15

Estou usando uma série temporal diária de dados de vendas que contém cerca de 2 anos de pontos de dados diários. Com base em alguns dos tutoriais / exemplos on-line, tentei identificar a sazonalidade nos dados. Parece haver periodicidade / sazonalidade semanal, mensal e provavelmente anual.

Por exemplo, existem dias de pagamento, particularmente no primeiro efeito do dia de pagamento do mês, que dura alguns dias durante a semana. Existem também alguns efeitos específicos de férias, claramente identificáveis, observando as observações.

Equipado com algumas dessas observações, tentei o seguinte:

  1. ARIMA (com Arimae auto.arimado pacote de previsão R), usando regressor (e outros valores padrão necessários na função). O regressor que criei é basicamente uma matriz de valores 0/1:

    • Variáveis ​​de 11 meses (n-1)
    • 12 variáveis ​​de férias
    • Não foi possível descobrir a parte do dia do pagamento ... já que é um efeito pouco mais complicado do que eu pensava. O efeito do dia de pagamento funciona de maneira diferente, dependendo do dia da semana do 1º do mês.

    Eu usei 7 (ou seja, frequência semanal) para modelar as séries temporais. Eu tentei o teste - prevendo 7 dias por vez. Os resultados são razoáveis: a precisão média para uma previsão de 11 semanas chega ao RMSE médio semanal de 5%.

  2. Modelo TBATS (do pacote R-forecast) - usando sazonalidade múltipla (7, 30.4375, 365.25) e obviamente nenhum regressor. A precisão é surpreendentemente melhor que o modelo ARIMA na RMSE média semanal de 3,5%.

    Nesse caso, o modelo sem erros ARMA apresenta um desempenho um pouco melhor. Agora, se eu aplicar os coeficientes apenas aos efeitos de férias do modelo ARIMA descrito em # 1, aos resultados do modelo TBATS, o RMSE médio semanal aumenta para 2,95%

Agora, sem ter muita experiência ou conhecimento sobre as teorias subjacentes desses modelos, estou em um dilema se essa abordagem TBATS é válida. Embora esteja melhorando significativamente o RMSE no teste de 11 semanas, estou me perguntando se ele pode sustentar essa precisão no futuro. Ou mesmo se a aplicação de efeitos Holiday do ARIMA ao resultado TBATS for justificável. Qualquer opinião de qualquer / todos os colaboradores será muito apreciada.

Link para dados de teste

Nota: Faça "Salvar link como" para baixar o arquivo.

CKI
fonte
11
Bem-vindo ao site, @CKI. Se você puder enviar seus dados para algum lugar da Web, poderá postar um link aqui.
gung - Restabelece Monica
Estou interessado em saber mais sobre como os regressores foram configurados.
orbital
Os manequins de 6 dias da semana, 11 manequins mensais e feriados são simples regressores 0/1. O dia fixo do mês, o lead e o atraso nos feriados, a tendência temporal, o pulso sazonal e o pulso são baseados em uma pesquisa heurística.
Tom Reilly
Então CKI, como você resolveu isso?
Tom Reilly
Olá CKI, você pode compartilhar um pouco do seu script R usado para criar a matriz de sazonalidade
Ahmed

Respostas:

9

Você deve avaliar modelos e previsões de diferentes origens em diferentes horizontes, e não um número único, a fim de avaliar uma abordagem.

Presumo que seus dados sejam dos EUA. Prefiro mais de três anos de dados diários, pois você pode passar dois feriados em um fim de semana e não ler os dias da semana. Parece que seu impacto no Dia de Ação de Graças é um dia de folga em 2012 ou houve algum erro de gravação e causou a perda do modelo do efeito do dia de Ação de Graças.

Janeiro é geralmente baixo no conjunto de dados se você olhar como uma porcentagem do ano. Fins de semana são altos. Os manequins refletem esse comportamento .... MONTH_EFF01, FIXED_EFF_N10507, FIXED_EFF_N10607

Descobri que o uso de um componente AR com dados diários pressupõe que, nas últimas duas semanas do dia da semana, o padrão é como o padrão é, em geral, o que é uma grande suposição. Começamos com 11 manequins mensais e 6 manequins diários. Alguns abandonaram o modelo. B ** 1 significa que há um impacto de atraso no dia seguinte ao feriado. Houve 6 dias especiais do mês (os dias 2,3,5,21,29,30 ---- 21 podem ser espúrios?) E 3 tendências de tempo, 2 pulsos sazonais (onde um dia da semana começou a se desviar do típico, um 0 antes desses dados e um 1 a cada 7 dias depois) e 2 outliers (observe o dia de ação de graças!) Isso levou pouco menos de 7 minutos para ser executado. Faça o download de todos os resultados aqui www.autobox.com/se/dd/daily.zip

Inclui uma folha XLS rápida e suja para verificar se o modelo faz sentido. Obviamente, os% XLS são de fato ruins, pois são benchmarks brutos.

Tente estimar este modelo:

Y(T) =  .53169E+06                                                                                        
       +[X1(T)][(+  .13482E+06B** 1)]                                       M_HALLOWEEN
       +[X2(T)][(+  .17378E+06B**-3)]                                       M_JULY4TH
       +[X3(T)][(-  .11556E+06)]                                            M_MEMORIALDAY
       +[X4(T)][(-  .16706E+06B**-4+  .13960E+06B**-3-  .15636E+06B**-2                                                 
       -  .19886E+06B**-1)]                                                 M_NEWYEARS
       +[X5(T)][(+  .17023E+06B**-2-  .26854E+06B**-1-  .14257E+06B** 1)]   M_THANKSGIVI
       +[X6(T)][(-  71726.    )]                                            MONTH_EFF01
       +[X7(T)][(+  55617.    )]                                            MONTH_EFF02
       +[X8(T)][(+  27827.    )]                                            MONTH_EFF03
       +[X9(T)][(-  37945.    )]                                            MONTH_EFF09
       +[X10(T)[(-  23652.    )]                                            MONTH_EFF10
       +[X11(T)[(-  33488.    )]                                            MONTH_EFF11
       +[X12(T)[(+  39389.    )]                                            FIXED_EFF_N10107
       +[X13(T)[(+  63399.    )]                                            FIXED_EFF_N10207
       +[X14(T)[(+  .13727E+06)]                                            FIXED_EFF_N10307
       +[X15(T)[(+  .25144E+06)]                                            FIXED_EFF_N10407
       +[X16(T)[(+  .32004E+06)]                                            FIXED_EFF_N10507
       +[X17(T)[(+  .29156E+06)]                                            FIXED_EFF_N10607
       +[X18(T)[(+  74960.    )]                                            FIXED_DAY02
       +[X19(T)[(+  39299.    )]                                            FIXED_DAY03
       +[X20(T)[(+  27660.    )]                                            FIXED_DAY05
       +[X21(T)[(-  33451.    )]                                            FIXED_DAY21
       +[X22(T)[(+  43602.    )]                                            FIXED_DAY29
       +[X23(T)[(+  68016.    )]                                            FIXED_DAY30
       +[X24(T)[(+  226.98    )]                                            :TIME TREND        1                   1/  1   1/ 3/2011   I~T00001__010311stack
       +[X25(T)[(-  133.25    )]                                            :TIME TREND      423                  61/  3   2/29/2012   I~T00423__010311stack
       +[X26(T)[(+  164.56    )]                                            :TIME TREND      631                  91/  1   9/24/2012   I~T00631__010311stack
       +[X27(T)[(-  .42528E+06)]                                            :SEASONAL PULSE  733                 105/  5   1/ 4/2013   I~S00733__010311stack
       +[X28(T)[(-  .33108E+06)]                                            :SEASONAL PULSE  370                  53/  6   1/ 7/2012   I~S00370__010311stack
       +[X29(T)[(-  .82083E+06)]                                            :PULSE           326                  47/  4  11/24/2011   I~P00326__010311stack
       +[X30(T)[(+  .17502E+06)]                                            :PULSE           394                  57/  2   1/31/2012   I~P00394__010311stack
      +                    +   [A(T)]
Tom Reilly
fonte