Forecast/Predict von lm()

Methoden der Zeitreihenanalyse

Moderator: schubbiaschwilli

Antworten
Regression
Beiträge: 76
Registriert: Mo Jan 15, 2018 9:57 am

Forecast/Predict von lm()

Beitrag von Regression »

Hallo zusammen!
ich hoffe ich bin hier richtig.
Mein Datensatz besteht aus einer Zeitreihe (wöchentlich) und dazu gehöriger Messwert.
Nun möchte ich vorhersagen, wie der Wert in der Zukunft aussehen wird.

Bis jetzt habe ich es "manuell" ausgerechnet indem ich die Koeffizienten aus der lm() Funktion ausgelesen hab und in y=Alpha + beta*x eingesetzt.
Nun würde ich gern wissen wie ich es mit predict oder forecast Funktionen hinbekommen kann.
Der gemessene Zeitraum ist von 2016-02-08 bis 2016-06-06 (wöchentliche Abstände)

Code: Alles auswählen

Dates<-c("2016-02-08", "2016-02-15", "2016-02-22", "2016-02-29", "2016-03-07", "2016-03-14", "2016-03-21",
  "2016-03-28", "2016-04-04", "2016-04-11", "2016-04-18", "2016-04-25", "2016-05-02", "2016-05-09",
 "2016-05-16", "2016-05-23", "2016-05-30", "2016-06-06")
und

Code: Alles auswählen

Values<-c(55584, 56642, 57973, 60138, 61357, 62543, 64154, 65260, 66161, 67732, 69219, 70948, 73130, 73872, 75189,
 76835, 77806, 79487)
wie man sieht sind die Daten schön linear, es gibt weder saisonale Schwankungen o.ä.

Mein Ansatz bislang war:

Code: Alles auswählen

fitted_model<-lm(Values~Dates)
und wie geht man nun weiter vor?

Besten Dank im Voraus!
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Forecast/Predict von lm()

Beitrag von jogo »

Hallo Regression,

vielleicht ist dies schon passend für Dich:

Code: Alles auswählen

dat <- data.frame(
Dates=c("2016-02-08", "2016-02-15", "2016-02-22", "2016-02-29", "2016-03-07", "2016-03-14", "2016-03-21",
         "2016-03-28", "2016-04-04", "2016-04-11", "2016-04-18", "2016-04-25", "2016-05-02", "2016-05-09",
         "2016-05-16", "2016-05-23", "2016-05-30", "2016-06-06"),
Values=c(55584, 56642, 57973, 60138, 61357, 62543, 64154, 65260, 66161, 67732, 69219, 70948, 73130, 73872, 75189,
          76835, 77806, 79487)
)
dat$KW2016 <- (1:nrow(dat))+4
m <- lm(Values ~ KW2016, data=dat)
plot(Values ~ KW2016, data=dat)
abline(m, col="red")
KW2016 <- 25:50
Value <- predict(m, newdata = data.frame(KW2016))
plot(Value ~ KW2016, col="green")
Gruß, Jörg
Regression
Beiträge: 76
Registriert: Mo Jan 15, 2018 9:57 am

Re: Forecast/Predict von lm()

Beitrag von Regression »

Funktioniert großartig mit der Umrechnung in die Kalenderwochen! Genial :!:
Besten Dank!
Regression
Beiträge: 76
Registriert: Mo Jan 15, 2018 9:57 am

Re: Forecast/Predict von lm()

Beitrag von Regression »

Wie kann man nun die plots kombinieren?
ich habe folgenses versucht:

Code: Alles auswählen

ggplot(data = c(dat,pred_dat), aes(c(dat$KW2016,pred_dat$KW2016),c(dat$Values, pred_dat$Value)))+geom_point(color=c("blue","red"))
hier bekomme ich eine Fehlermeldung, dass ggplot nicht mit Listenelementen umgehen kann.

Am liebsten würde ich auch die geom_smooth() Funktion an die predective Value einbinden.

Wie macht man es am gescheitesten?

Besten Dank im Voraus!

-------

hab nun eine Teillösung!

Code: Alles auswählen

overall<-data.table(KW=c(dat$KW2016, pred_dat$KW2016), Value=c(dat$Values, pred_dat$Value), Type=c(rep("Real", nrow(dat)), rep("Forecast",nrow(pred_dat))))
 ggplot(overall, aes(KW, Value, color = Type)) +
+     geom_point()
Nun fehlt noch die Genauigkeit der Vorhersage in der Abbildung
--------
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Forecast/Predict von lm()

Beitrag von EDi »

Nun fehlt noch die Genauigkeit der Vorhersage in der Abbildung
Mit predict(), den Standardfehler berechnen, das Konfidenzinterval daraus berechnen und dann mit geom_line plotten.

Dazu würde ich alles in einem "predictions" data.frame organisierten (x, predicted y, upper CI, lower CI).
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Regression
Beiträge: 76
Registriert: Mo Jan 15, 2018 9:57 am

Re: Forecast/Predict von lm()

Beitrag von Regression »

passt! DANKE :!:
Antworten