Tenho dados de preços mensais para uma mercadoria de 2007 a 2017. Você pode encontrá-los no seguinte link:
https://drive.google.com/open?id=0BxRCOgKAL4itcUZlOExrUmVOanc
Preciso prever usando o modelo ARIMA sazonal no R para a próxima ano. Quando estou usando a auto.arima
função, ele me sugere o melhor modelo em ARIMA(0,1,1)
vez de ARIMA(p,d,q)(P,D,Q)12
. A parte sazonal do model(P,D,Q)
está faltando de alguma forma. Não sei por que isso está acontecendo. Meus dados não são sazonais ou há algo errado no meu código. Além disso, o valor previsto fornecido pelo modelo é constante para os próximos meses, o que é insignificante. Por favor ajude! Aqui está o código:
data <- read.delim("C:/Users/hp/Desktop/heckyl/forecasting model/Soybean_Prices.txt", header=F)
View(data)
summary(data)
summary(data)
ts.data = ts(data, frequency=12, start=c(2007,6))
ts.data
plot(ts.data)
dim(as.matrix(ts.data))
################################################################################
# Training and Testing Dataset
data.train = window(ts.data, start = c(2007,6), end = c(2013,12))
plot(data.train)
dim(as.matrix(data.train))
data.test = window(ts.data, start = c(2014,1))
plot(data.test)
dim(as.matrix(data.test))
################################################################################
# Developing an SARIMA model and Analysis of Model
library(forecast)
arima1 = auto.arima(data.train, trace=FALSE, test="kpss", ic="aic")
summary(arima1)
confint(arima1)
# Residual Diagonostics
plot.ts(arima1$residuals)
Box.test(arima1$residuals,lag=20, type="Ljung-Box")
acf(arima1$residuals, lag.max=24, main="ACF of the Model")
Box.test(arima1$residuals^2,lag=20, type="Ljung-Box")
library(tseries)
jarque.bera.test(arima1$residuals)
arima1.forecast= forecast.Arima(arima1, h=41)
arima1.forecast
plot(arima1.forecast, xlab="Years", ylab="Price for Soybean")
library(TSPred)
plotarimapred(data.test, arima1, xlim=c(2014, 2017), range.percent = 0.05)
accuracy(arima1.forecast, data.test)
time-series
mathematical-statistics
forecasting
arima
Tarun Bajaj
fonte
fonte
Respostas:
Você pode "forçar" a sazonalidade definindo D = 1 ou adicionando regressores. Se você acha que há uma sazonalidade mais complexa, considere usar termos de Fourier? Veja este link sazonalidade complexa Hyndman
fonte
Tente usar este comando em vez daquele que você está usando para obter os parâmetros do ARIMA.
Às vezes, usar esses comandos fornece o melhor modelo.
fonte
seus dados sugerem o seguinte modelo
com . O real, ajuste e previsão estão aqui . Os dados sugerem uma mudança de nível (visualmente óbvia) e dois indicadores sazonais estatisticamente significativos (abril e setembro) e algumas anomalias (6). Eu usei R para fazer a análise. Infelizmente, o auto.arima faz algumas suposições críticas sobre a forma do modelo, ou seja, nenhuma mudança de nível e pulsos / indicadores sazonais e, é claro, nenhuma anomalia. É sempre bom ler as letras pequenas.
O fato de haver apenas dois meses do ano que exibem "sazonalidade" explica o motivo pelo qual a auto.arima entregou um modelo que tinha um "componente sazonal de alguma forma ausente". Mesmo um relógio quebrado está certo duas vezes por dia e, neste caso, o relógio estava "quase certo", na medida em que não há componente / efeito sazonal auto-projetivo substantivo, apenas um componente / efeito determinístico para os meses de abril e setembro.
Previsão de 6 períodos ...
fonte