2016-07-20 6 views
3

Nur kennen Zeitreihen, und als Leitfaden für the following exercise: der vergebliche Versuch, die Zukunft Renditen in der Börse vorhersagen ... Nur eine Übung das Konzept der Zeitreihen zu verstehen.Voraussagen und plotten nach der Anpassung `arima()` Modell in R

Das Problem ist, dass wenn ich die vorhergesagten Werte plotte ich eine konstante Linie, die im Widerspruch zu den historischen Daten ist. Hier ist es, in Blau, am Ende der stationär gemachten historischen Dow Jones Tagesrenditen.

enter image description here

In Wirklichkeit ein Ich möchte mehr „optimistisch“ visuelle oder eine „re-tendierte“ Plot wie die, die ich für die vorhergesagte Anzahl von Flugreis bekam:

enter image description here

Dies ist der Code:

library(quantmod) 
library(tseries) 
library(forecast) 
getSymbols("^DJI") 
d = DJI$DJI.Adjusted 
chartSeries(DJI) 
adf.test(d) 
dow = 100 * diff(log(d))[-1] 
adf.test(dow) 
train = dow[1 : (0.9 * length(dow))] 
test = dow[(0.9 * length(dow) + 1): length(dow)] 
fit = arima(train, order = c(2, 0, 2)) 
predi = predict(fit, n.ahead = (length(dow) - (0.9*length(dow))))$pred 
fore = forecast(fit, h = 500) 
plot(fore) 

Leider Prognose, ich erhalte eine Fehlermeldung, wenn ich den gleichen Code verwenden für die Flugreisenden versuchen. Zum Beispiel:

fit = arima(log(AirPassengers), c(0, 1, 1), seasonal = list(order = c(0, 1, 1), period = 12)) 
pred <- predict(fit, n.ahead = 10*12) 
ts.plot(AirPassengers,exp(pred$pred), log = "y", lty = c(1,3)) 

auf das aktuelle Problem angewandt könnte möglicherweise etwas wie dies geht (?):

fit2 = arima(log(d), c(2, 0, 2)) 
pred = predict(fit2, n.ahead = 500) 
ts.plot(d,exp(pred$pred), log = "y", lty = c(1,3)) 
Error in .cbind.ts(list(...), .makeNamesTs(...), dframe = dframe, union = TRUE) : non-time series not of the correct length 

Antwort

1

einige Fortschritte zu machen, und die OP ist zu lang, wie es ist.

  1. Von haupt nicht zu arbeiten ein bisschen arbeiten: Oder warum ich die „Nicht-Zeitreihe nicht der richtigen Länge“ immer und anderen kryptischen Fehlermeldungen ... Nun, ohne Details zu kennen, es gerade ist mir eingefallen zu überprüfen, was ich versuchte cbind.ts: is.ts(d) [1] FALSE Aha! Auch wenn d ein xts Objekt ist, ist es keine Zeitreihe. Also musste ich einfach as.ts(d) laufen lassen. Gelöst!
  2. Unrealistisch flach Marktprognosen: Plotten es jetzt als

    fit2 = arima(log(d), c(2, 1, 2)); pred = predict(fit2, n.ahead = 365 * 5) ts.plot(as.ts(d),exp(pred$pred), log = "y", col= c(4,2),lty = c(1,3), main="VIX = 0 Market Conditions", ylim=c(6000,20000))

enter image description here

OK ... Keine Aussichten für einen Job bei Goldman Sachs mit dieser Wohnung Aussicht . Ich muss einige Investoren locken.Lassen Sie sich diese Schlange Öl kocht einige mehr:

  1. die flache Linie in Gang zu bringen: Lassen Sie sich die „Saisonalität“ addiert und wir sind bereit für die Party wie es 1999 ist:

    fit3 = arima(log(d), c(2, 1, 2), seasonal=list(order = c(0, 1, 1), period=12))

    pred = predict(fit3, n.ahead = 365 * 5) ts.plot(as.ts(d),exp(pred$pred), log = "y", col= c(2,4),lty = c(1,3), main="Investors Prospectus - Maddoff & Co., Inc.")

enter image description here

  1. Fast fertig: ich John Oliver's Seite ging und ein Zertifikat als offizieller Finanzberater gedruckt, so bin ich bereit, Ihren Ruhestand Geld zu nehmen. Um dies zu tun, muss ich in den kommenden fünf Jahren nur eine gesunde Unsicherheit in dieser optimistischen Perspektive ausdrücken. Einfach, peasy ... fore = forecast(fit2, h = 365 * 5); plot(fore) und voilà ...

enter image description here

Oh, nein! No way ich irgendwelche dopes bin immer mit dieser Realität zu überprüfen ... Gut, dass ich meinen Tag Arbeit beenden nicht investieren ... Warten Sie eine Sekunde, verwirrte ich das Modell der Eingabe auf: fore = forecast(fit3, h = 365 * 5) plot(fore):

enter image description here

Ich gehe zu Staples ...