Estou tentando fazer análise de séries temporais e sou novo nesse campo. Eu tenho contagem diária de um evento de 2006-2009 e quero ajustar um modelo de série temporal a ele. Aqui está o progresso que eu fiz:
timeSeriesObj = ts(x,start=c(2006,1,1),frequency=365.25)
plot.ts(timeSeriesObj)
O gráfico resultante que recebo é:
Para verificar se há sazonalidade e tendência nos dados ou não, sigo as etapas mencionadas neste post :
ets(x)
fit <- tbats(x)
seasonal <- !is.null(fit$seasonal)
seasonal
e no blog de Rob J Hyndman :
library(fma)
fit1 <- ets(x)
fit2 <- ets(x,model="ANN")
deviance <- 2*c(logLik(fit1) - logLik(fit2))
df <- attributes(logLik(fit1))$df - attributes(logLik(fit2))$df
#P value
1-pchisq(deviance,df)
Ambos os casos indicam que não há sazonalidade.
Quando plogo o ACF & PACF da série, eis o que recebo:
Minhas perguntas são:
Essa é a maneira de lidar com dados diários de séries temporais? Esta página sugere que eu deveria olhar para os padrões semanais e anuais, mas a abordagem não está clara para mim.
Não sei como proceder depois de ter os gráficos ACF e PACF.
Posso simplesmente usar a função auto.arima?
ajuste <- arima (myts, order = c (p, d, q)
***** Resultados atualizados do Auto.Arima ******
Quando altero a frequência dos dados para 7, de acordo com os comentários de Rob Hyndman aqui , o auto.arima seleciona um modelo ARIMA sazonal e produz:
Series: timeSeriesObj
ARIMA(1,1,2)(1,0,1)[7]
Coefficients:
ar1 ma1 ma2 sar1 sma1
0.89 -1.7877 0.7892 0.9870 -0.9278
s.e. NaN NaN NaN 0.0061 0.0162
sigma^2 estimated as 21.72: log likelihood=-4319.23
AIC=8650.46 AICc=8650.52 BIC=8682.18
****** Atualização da sazonalidade ******
Quando eu testo a sazonalidade com a frequência 7, ele produz True, mas com a sazonalidade 365.25, ele gera false. Isso é suficiente para concluir a falta de sazonalidade anual?
timeSeriesObj = ts(x,start=c(2006,1,1),frequency=7)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal
retorna:
True
enquanto
timeSeriesObj = ts(x,start=c(2006,1,1),frequency=365.25)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal
retorna:
False
R
simples não tem a capacidade de lidar com isso. Eu procuraria soluções comerciais se houver um alto custo de estoque / fabricação envolvido no produto que você está tentando prever. R
possui sérias limitações para prever tarefas como a sua. Veja as perguntas sobre previsões diárias em outro lugar deste site.
str(x)
produz?