Estou ajustando um modelo ARIMA em uma série temporal diária. Os dados são coletados diariamente de 02-01-2010 a 30-07-2011 e são sobre vendas de jornais. Como um padrão semanal de vendas pode ser encontrado (a quantidade média diária de cópias vendidas é geralmente a mesma de segunda a sexta-feira e depois aumenta no sábado e domingo), estou tentando capturar essa "sazonalidade". Dados os dados de vendas "dados", crio a série temporal da seguinte maneira:
salests<-ts(data,start=c(2010,1),frequency=365)
e então uso a função auto.arima (.) para selecionar o melhor modelo ARIMA via critério AIC. O resultado é sempre um modelo ARIMA não sazonal, mas se eu tentar algum modelo SARIMAs com a seguinte sintaxe como exemplo:
sarima1<-arima(salests, order = c(2,1,2), seasonal = list(order = c(1, 0, 1), period = 7))
Eu posso obter melhores resultados. Existe algo errado na especificação ts command / arima? O padrão semanal é muito forte, então eu não esperaria tantas dificuldades em capturá-lo. Qualquer ajuda seria muito útil. Obrigado, Giulia Deppieri
Atualizar:
Eu já mudei alguns argumentos. Mais precisamente, o procedimento seleciona o ARIMA (4,1,3) como o melhor modelo quando eu defino D=7
, mas a AIC e os outros bons índices de ajuste e previsões também não melhoram. Eu acho que há alguns erros devido à confusão entre sazonalidade e periodicidade ..?!
Chamada Auto.arima usada e saída obtida:
modArima<-auto.arima(salests,D=7,max.P = 5, max.Q = 5)
ARIMA(2,1,2) with drift : 1e+20
ARIMA(0,1,0) with drift : 5265.543
ARIMA(1,1,0) with drift : 5182.772
ARIMA(0,1,1) with drift : 1e+20
ARIMA(2,1,0) with drift : 5137.279
ARIMA(2,1,1) with drift : 1e+20
ARIMA(3,1,1) with drift : 1e+20
ARIMA(2,1,0) : 5135.382
ARIMA(1,1,0) : 5180.817
ARIMA(3,1,0) : 5117.714
ARIMA(3,1,1) : 1e+20
ARIMA(4,1,1) : 5045.236
ARIMA(4,1,1) with drift : 5040.53
ARIMA(5,1,1) with drift : 1e+20
ARIMA(4,1,0) with drift : 5112.614
ARIMA(4,1,2) with drift : 4953.417
ARIMA(5,1,3) with drift : 1e+20
ARIMA(4,1,2) : 4960.516
ARIMA(3,1,2) with drift : 1e+20
ARIMA(5,1,2) with drift : 1e+20
ARIMA(4,1,3) with drift : 4868.669
ARIMA(5,1,4) with drift : 1e+20
ARIMA(4,1,3) : 4870.92
ARIMA(3,1,3) with drift : 1e+20
ARIMA(4,1,4) with drift : 4874.095
Best model: ARIMA(4,1,3) with drift
Então, eu assumo que a função arima deve ser usada como:
bestOrder <- cbind(modArima$arma[1],modArima$arma[5],modArima$arma[2])
sarima1<-arima(salests, order = c(4,1,3))
sem parâmetros de componentes sazonais e especificações de período. Os dados e a análise exploratória mostram que o mesmo padrão semanal pode ser considerado aproximadamente para cada semana, com a única exceção de agosto de 2010 (quando é registrado um aumento consistente nas vendas). Infelizmente, não tenho nenhum conhecimento em modelagem de séries temporais; na verdade, estou tentando esta abordagem para encontrar uma solução alternativa para outros modelos paramétricos e não paramétricos que tentei ajustar para esses dados problemáticos. Eu também tenho muitas variáveis numéricas dependentes, mas elas mostraram baixo poder ao explicar a variável de resposta: sem dúvida, a parte mais difícil de modelar é o componente de tempo. Além disso, a construção de variáveis fictícias para representar meses e dias da semana acabou por não ser uma solução robusta.