Time series prediction using R
Habe ich die folgenden R-code
library(forecast)
value <- c(1.2, 1.7, 1.6, 1.2, 1.6, 1.3, 1.5, 1.9, 5.4, 4.2, 5.5, 6, 5.6,
6.2, 6.8, 7.1, 7.1, 5.8, 0, 5.2, 4.6, 3.6, 3, 3.8, 3.1, 3.4,
2, 3.1, 3.2, 1.6, 0.6, 3.3, 4.9, 6.5, 5.3, 3.5, 5.3, 7.2, 7.4,
7.3, 7.2, 4, 6.1, 4.3, 4, 2.4, 0.4, 2.4)
sensor<-ts(value,frequency=24)
fit <- auto.arima(sensor)
LH.pred<-predict(fit,n.ahead=24)
plot(sensor,ylim=c(0,10),xlim=c(0,5),type="o", lwd="1")
lines(LH.pred$pred,col="red",type="o",lwd="1")
grid()
Der resultierende graph ist
Aber ich bin nicht zufrieden mit der Vorhersage. Gibt es eine Möglichkeit, um die Vorhersage sieht ähnlich wie der Wert trends voranstellen (siehe Grafik)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie Sie definiert die Frequenz, die von 24, ich nehme an, Sie arbeiten mit 24 Stunden (täglich) pro Zyklus und damit rund 2 Zyklen in Ihrem historischen Datensatz. Im Allgemeinen beschränkt sich der sample-Daten zu initiieren, die eine Zeit-Serie Prognose. Ich würde empfehlen, um ein wenig mehr Daten und dann können Sie die Prognose-Modell wieder. Je mehr Daten Sie haben, desto besser wird die Aufnahme ist die Saisonalität und damit die Prognose zukünftiger Werte. Mit begrenzt verfügbaren automatischen algorithmen, wie das auto.arima oft standardmäßig etwas ähnliches wie gleitende Durchschnitte. Ihre Daten legen Sie verdient etwas besseres als den gleitenden Durchschnitt, es gibt einige saisonalen Schwankungen im Zyklus. Es gibt eine Reihe von Vorhersage-algorithmen, die Ihnen helfen können, um die forward-Kurve geformt besser; Dinge wie Holt-Winters oder andere exponentielle Glättung Methoden, die helfen könnten. Aber, auto.arima ist eine ziemlich gute Wette als gut (ich würde zuerst versuchen, um zu sehen, was ich tun kann mit diesem).
Immer mehr Daten und gehen durch die gleiche routine verbessern Sie Ihr Diagramm. Ich persönlich bevorzuge die Verwendung von
forecast
überpredict
; die Daten zu kommen scheint, ein bisschen schöner, wie auch der chart zeigt es doch Ihr Vertrauen Abständen. Im code habe ich auch erweitert die Daten ein bit durch kopieren der beiden Perioden, so haben wir die vier Perioden. Das Ergebnis sehen Sie unten:code sensor2 <- runif(240)*sample(0:10, 240, replace = T) sensor2 <- ts(sensor2, freq = 24) fit2 <- auto.arima(sensor2) fcast2 <- forecast(fit2) View(fcast2) plot(fcast2)
auto.arima() gibt die am besten ARIMA-Modell nach AIC, AICc-oder BIC-Wert. Basierend auf Ihren 'Wert' dataset hat er vermutlich gewählt, ein ARMA(1,0) - oder AR(1) - Modell, die, wie Sie sehen können, neigt dazu, wieder auf die meine, sehr schnell. Dies wird immer passieren, mit einem AR(1) - Modell auf lange Sicht und so ist es nicht sehr nützlich, wenn Sie möchten, um vorherzusagen, mehr als ein paar Schritte vor.
Sehen Sie beim Einbau eine andere Art von Modell vielleicht durch die Analyse der acf und pacf von Ihrem Wert. Sie müssten dann prüfen Sie, ob Ihre alternative Modell ist eine gute Passform für die Daten.
Möchten Sie vielleicht zu prüfen, mit einem Gleitender Durchschnitt genauer plot Prognosen.
Schlage ich vor Blick auf die ltp-Paket an https://code.google.com/p/ltp/
Sie können sich auch an ein web-frontend an https://github.com/matteoredaelli/predictoR