Saisonale ARIMA-Modellierung in R.

7

Ich habe monatliche Preisdaten für eine Ware von 2007 bis 2017. Sie finden sie unter folgendem Link: https://drive.google.com/open?id=0BxRCOgKAL4itcUZlOExrUmVOanc Ich muss sie für das nächste mit dem saisonalen ARIMA-Modell in R prognostizieren Jahr. Wenn ich die auto.arimaFunktion verwende, wird mir das beste Modell ARIMA(0,1,1)anstelle von vorgeschlagen ARIMA(p,d,q)(P,D,Q)12. Der saisonale Teil des model(P,D,Q)fehlt irgendwie. Ich weiß nicht, warum das passiert. Sind meine Daten nicht saisonabhängig oder stimmt etwas in meinem Code nicht? Auch der vom Modell angegebene Prognosewert ist für die nächsten Monate konstant, was unbedeutend ist. Bitte helfen Sie! Hier ist der Code:

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
quelle
Warum stimmen Sie nicht der Antwort zu, die Ihnen gefällt, und akzeptieren sie dann, um die Frage zu schließen
IrishStat

Antworten:

1

Sie können die Saisonalität "erzwingen", indem Sie D = 1 setzen oder Regressoren hinzufügen. Wenn Sie der Meinung sind, dass die Saisonalität komplexer ist, können Sie Fourier-Begriffe verwenden? Siehe diesen Link komplexe Saisonalität Hyndman

Adam_123
quelle
0

Versuchen Sie, diesen Befehl zu verwenden, anstatt den, den Sie zum Abrufen der Parameter von ARIMA verwenden.

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

Manchmal ergibt die Verwendung dieser Befehle das beste Modell.

Ahsan Nawaz
quelle
6
Cross Validated soll keine Code-Hilfeseite sein. Wir sind eine Statistik- Q & A-Site. Können Sie diesen Code erklären und warum er hilft, das beste Modell zu finden?
Gung - Reinstate Monica
0

Ihre Daten deuten auf das folgende Modell hinGeben Sie hier die Bildbeschreibung ein

mit Geben Sie hier die Bildbeschreibung ein. Die tatsächliche, Passform und Prognose ist hier Geben Sie hier die Bildbeschreibung ein. Die Daten deuten auf eine Pegelverschiebung (visuell offensichtlich) und zwei statisch signifikante saisonale Indikatoren (April und September) sowie einige Anomalien (6) hin. Ich habe R verwendet, um die Analyse durchzuführen. Leider macht auto.arima einige kritische Annahmen über die Modellform, dh keine Pegelverschiebungen und keine saisonalen Impulse / Indikatoren und natürlich keine Anomalien. Es ist immer gut, das Kleingedruckte zu lesen.

Die Tatsache, dass es nur zwei Monate im Jahr gibt, die "Saisonalität" aufweisen, erklärt, warum auto.arima ein Modell lieferte, bei dem eine "saisonale Komponente irgendwie fehlte". Sogar eine kaputte Uhr ist zweimal am Tag richtig und in diesem Fall war die Uhr "fast richtig", da es keine wesentliche autoprojektive saisonale Komponente / Wirkung gibt, sondern nur eine deterministische Komponente / Wirkung für die Monate April und September.

Prognose für 6 Perioden ...

Geben Sie hier die Bildbeschreibung ein

IrishStat
quelle
Danke für die Hilfe. Können Sie mir bitte den R-Code als Referenz mitteilen? Außerdem zeigt Ihr Modell konstante Prognosewerte an. Warum ist das so? Tatsächlich schwanken die Agrarrohstoffpreise stark.
Tarun Bajaj
Ich habe AUTOBOX verwendet, das in R verfügbar ist. Die Tatsache, dass der erwartete Wert bis auf die zwei Monate des Jahres gleich ist, bedeutet nur, dass kein dauerhaftes Wachstum erwartet wird. Ich habe eine 6-Perioden-Prognose hinzugefügt, um zu veranschaulichen, dass die Prognosen (kurzfristig) nicht konstant sind. Die Konfidenzbänder deuten (wie erwartet) auf eine zunehmende Unsicherheit hin, wenn Sie fortfahren.
IrishStat