Angenommen, ich habe einige Zeitreihen wie unten und ich möchte eine Vorhersage treffen c1
ein Schritt pro Kopf, das ist ziemlich einfach und einfach in R:
testurl = "https://docs.google.com/spreadsheets/d/1jtpQaSxNY1V3b-Xfa5OJKDCLE6pNlzTbwhSHByei4EA/pub?gid=0&single=true&output=csv"
test = getURL(testurl)
mydata = read.csv(textConnection(test), header = TRUE)
data <- ts(mydata["c1"])
fit <- auto.arima(data)
fcast <- forecast(fit)
fcast
Beachten Sie, dass es sich bei den Zahlen nur um Zufallszahlen handelt, und in auto.arima wird die Verwendung einer arima(0,1,0)
und der prognostizierte Kopf pro Kopf ist 52.
aber was ist, wenn man verwenden will c2
und c3
die Out-of-Sample-Prognose (z. B. in Bezug auf AIC und BIC) zu verbessern? wie würde man dann eigentlich weiter machen?
c1 c2 c3
40 0,012 1
41 0,015 1
42 0,025 1
40 −0,015 1
44 0,000 0
50 0,015 0
52 0,015 1
51 0,020 1
50 0,025 1
52 0,030 0
53 0,045 1
52 0,030 1
52 0,025 0
52 0,000 0
51 0,010 0
50 −0,02 1
48 −0,025 1
49 −0,030 1
51 −0,040 1
52 −0,350 0
Antworten:
3 für die Antwort № 1Wenn ich es richtig verstanden habe, versuchen Sie, ein dynamisches Regressionsmodell an Ihre Daten anzupassen xreg
im auto.arima()
. Sie können eine Modellanpassung automatisch anhand folgender Elemente ermitteln:
tsdata <- ts(mydata)
fit <- auto.arima(tsdata[,1], xreg = as.matrix(mydata[,2:3]))
Um Ihre 1-Schritt-Prognose zu erstellen, müssen Sie eine matrix
von zukünftigen Werten von C2
und C3
zum xreg
Argument in der Prognosefunktion. Eine Möglichkeit, dies zu tun, wäre so:
fc.c2 <- forecast(tsdata[,2], h = 1)
fc.c3 <- forecast(tsdata[,3], h = 1)
newxreg <- as.matrix(cbind(fc.c2$mean, fc.c3$mean))
fc.c1 <- forecast(fit, xreg = newxreg)