我有从 2007 年到 2017 年的商品月度价格数据。您可以在以下链接中找到它:
https ://drive.google.com/open?id=0BxRCOgKAL4itcUZlOExrUmVOanc
我需要使用 R 中的季节性 ARIMA 模型来预测它以供下一个年。当我使用auto.arima
函数时,它建议我最好的模型ARIMA(0,1,1)
而不是ARIMA(p,d,q)(P,D,Q)12
. 的季节性部分model(P,D,Q)
不知何故丢失了。我不知道为什么会这样。我的数据不是季节性的还是我的代码有问题。此外,模型给出的预测值在接下来的几个月中是恒定的,这是微不足道的。请帮忙!这是代码:
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)