Modelagem ARIMA sazonal em R

7

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.arimafunçã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)
Tarun Bajaj
fonte
por que você não upvote a resposta que você gostou e depois aceitá-lo para fechar a questão
IrishStat

Respostas:

1

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

Adam_123
fonte
0

Tente usar este comando em vez daquele que você está usando para obter os parâmetros do ARIMA.

arima1 = auto.arima(data.train, trace=FALSE, test="kpss", ic="aic", 
                    stepwise=FALSE, approximation=FALSE)

Às vezes, usar esses comandos fornece o melhor modelo.

Ahsan Nawaz
fonte
6
O Validado Cruzado não deve ser um site de ajuda com códigos. Somos um site de perguntas e respostas estatísticas . Você pode explicar esse código e por que ele ajuda a encontrar o melhor modelo?
gung - Restabelece Monica
0

seus dados sugerem o seguinte modeloinsira a descrição da imagem aqui

com insira a descrição da imagem aqui. O real, ajuste e previsão estão aqui insira a descrição da imagem 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 ...

insira a descrição da imagem aqui

IrishStat
fonte
Obrigado pela ajuda. Você pode compartilhar o código R para minha referência? Além disso, seu modelo também mostra valores constantes de previsão. Por que isso acontece? Na realidade, os preços das commodities agrícolas flutuam bastante.
Tarun Bajaj
Usei a AUTOBOX, disponível em R. O fato de o valor esperado ser o mesmo, exceto nos dois meses do ano, significa apenas que não há crescimento permanente esperado. Acrescentei uma previsão de 6 períodos apenas para ilustrar que as previsões (de curto prazo) não são constantes. As faixas de confiança sugerem (como esperado) um aumento da incerteza à medida que você avança.
IrishStat