Seite 1 von 1

Forecast/Predict von lm()

Verfasst: Fr Feb 16, 2018 1:56 pm
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!

Re: Forecast/Predict von lm()

Verfasst: Fr Feb 16, 2018 2:11 pm
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

Re: Forecast/Predict von lm()

Verfasst: Mo Feb 19, 2018 7:47 am
von Regression
Funktioniert großartig mit der Umrechnung in die Kalenderwochen! Genial :!:
Besten Dank!

Re: Forecast/Predict von lm()

Verfasst: Mo Feb 19, 2018 9:43 am
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
--------

Re: Forecast/Predict von lm()

Verfasst: Mo Feb 19, 2018 7:31 pm
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).

Re: Forecast/Predict von lm()

Verfasst: Mi Feb 21, 2018 11:52 am
von Regression
passt! DANKE :!: