Cálculo de índices de sazonalidade para sazonalidade complexa

10

Quero prever itens de varejo (por semana) usando suavização exponencial. No momento, estou preso em como calcular, armazenar e aplicar os índices de sesonalidade.

O problema é que todos os exemplos que encontrei lidam com uma espécie de sazonalidade simples. No meu caso, tenho os seguintes problemas: 1. As estações do ano não ocorrem na mesma semana todos os anos: são móveis. Mardi-gras, emprestado, páscoa, e alguns outros. 2. Há estações que mudam dependendo do ano. Por exemplo, há uma temporada de festas nacionais. Dependendo se o feriado está próximo do fim de semana, os clientes deixarão ou não a cidade. Então é como ter duas temporadas: uma onde os clientes saem da cidade e outra onde eles não saem da cidade. 3. Às vezes, duas (ou 3) estações ocorrem ao mesmo tempo. Por exemplo, tivemos a temporada "Mardi-Gras" ocorrendo ao mesmo tempo que a temporada dos Namorados.
4. Às vezes, as estações mudam de duração. Por exemplo, a "temporada de Halloween" começou no início deste ano. O Natal também é outro exemplo, onde parece que todos os anos começamos a carregar os produtos mais cedo.

Parece-me que preciso encontrar uma maneira de definir algum tipo de "perfis sazonais" que, dependendo do cenário específico, sejam de alguma forma adicionados para obter o índice sazonal correto. Isso faz sentido?

Alguém sabe onde posso encontrar informações práticas sobre como fazer isso?

Obrigado, Edgard

elriba
fonte

Respostas:

7

Para os tipos de sazonalidade que você descreve, a abordagem de variável dummy é provavelmente a melhor. No entanto, isso é mais fácil de manusear em uma estrutura ARIMA do que em uma estrutura de suavização exponencial. onde cada variável corresponde a um dos eventos de feriado ou festival. É assim que a função em R ajustará as variáveis ​​de regressão (como uma regressão com erros ARIMA, não como um modelo ARIMAX).

yt=a+b1Dt,1++bmDt,m+NtNtARIMA
Dt,karima

Se você realmente deseja manter a estrutura de suavização exponencial, há uma discussão sobre como incluir covariáveis ​​no meu livro de 2008 sobre suavização exponencial . Você também pode examinar meu artigo recente sobre suavização exponencial com sazonalidade complexa, embora os tipos de complicações sazonais que discutimos sejam mais difíceis do que o tipo de festival que você descreve.

Rob Hyndman
fonte
Olá Kwak e Rob. Obrigado por olhar para isso. Eu queria usar suavização exponencial, porque é com isso que estou mais familiarizado. Estou pensando que preciso aprender sobre como usar a estrutura ARIMA. Você poderia recomendar um bom livro que me ajudasse a aprender o suficiente sobre a estrutura ARIMA para aplicar uma abordagem tão variável variável? Eu tenho "Forecasting, Time Series and Regression" de Bowerman e Levenbach "Forecasting: Practice and Process for Demand Management", que eu aprendi sobre suavização exponencial. Não sei se esses detalhes são suficientes para o que eu precisaria. Obrigado!
elriba
Bowerman O'Connell e Koehler são muito bons para a introdução de modelos ARIMA, mas não acho que inclua ARIMA com covariáveis. Você pode tentar o meu livro de 1998, que aborda a modelagem e a regressão ARIMA com erros ARIMA em um nível introdutório. Consulte robjhyndman.com/forecasting para obter detalhes.
Rob Hyndman
1

Uma correção simples seria incluir manequins de eventos em sua especificação:

(1)yt^=λ1yt1+...+λkytk+ϕ1Dt,1+ϕmDt,m

onde é um indicador que assume o valor se a semana tiver o evento (por exemplo, carnaval) e 0 caso contrário, para todos os eventos que você julgue importantes. 1 t m mDt,m1tmm

A primeira parte da especificação é essencialmente um exponencial, mas com o peso variando em função de defasagens (e estimado pelo OLS).λ1yt1+...+λkytk

Isso pressupõe que você tenha pelo menos 20 observações para cada evento (ou seja, 20 'mardi gras'). Se não for esse o caso, você pode tentar agrupar alguns eventos (por exemplo, carnaval e dia do trabalho).

OR para ajustar (1) é bastante direto, assumindo que dlsales é estacionário e D é sua matriz de variáveis ​​dummy:

fit<-arima(dlsales,order=c(4,0,0),seasonal = list(order = c(1, 0, 0),period=52),xreg = D)

A partir daqui, você pode fazer perguntas mais específicas sobre a parte da minha resposta que não lhe são familiares (não sei qual é o seu nível nas estatísticas).

user603
fonte
2
Na verdade, a função arima em R não se encaixa no seu modelo (1). arima () faz regressão com erros ARIMA e sua equação (1) é um modelo ARMAX.
Rob Hyndman
Rob:> eu editei a equação um. Você pode apontar para uma fonte na qual as diferenças entre armax e regressão com erros de arima são explicadas (ou, em alternativa, fornecem uma explicação intuitiva). Além disso, você conheceria um pacote R que implementa modelos ARMAX? Desde já, obrigado.
user603
Um modelo ARMAX de primeira ordem com uma covariável é y_t = a + bx_t + cy_ {t-1} + e_t em que e_t é a sua média zero. A regressão correspondente com erro ARIMA é y_t = a + bx_t + n_t em que n_t = phi * n_ {t-1} + z_t e z_t é a sua média zero.
Rob Hyndman
11
@kwak. Primeiro, n_t = phi n_ {t-1} + z_t é AR (1). Um processo de média móvel da ordem 1 seria n_t = theta z_ {t-1} + z_t. Segundo, uma regressão com erros MA é equivalente a um modelo MAX. Mas depois que você adiciona termos de RA no processo de erro, não há equivalência entre as duas classes. Terceiro, a função arimax () no TSA se encaixa nos modelos de função de transferência, um caso especial do qual é uma regressão com erros ARIMA. Não é compatível com os modelos ARIMAX. Eu poderia escrever um post sobre isso, pois é difícil encontrar as várias classes de modelo comparadas e discutidas em qualquer lugar.
Rob Hyndman
2
Eu tentei resumir os vários modelos em robjhyndman.com/researchtips/arimax
Rob Hyndman