2016-07-09 19 views
0

Ich habe Trainingsdaten und Testdaten, und ich passte Modell tbats im forecast Paket.Wie man angepassten Wert und prognostizierten Wert mit echter Beobachtung plottet

demand.train<-demand[1:94920,] 
demand.train.ts<-msts(demand.train$Demand,seasonal.period=c(48,7*48,91.25*48,365*48),start=2011) 
demand.train.model<-tbats(demand.train.ts) 
fc1.week<-forecast(demand.train.model,h=48*7) 
plot(fc1.week) 

Ich frage mich:

  1. Wie Einbau Wert und echte Beobachtungen in der gleichen Parzelle zeichnen?
  2. Wie prognostizierten Wert und sein Konfidenzintervall plotten? (plot kann das tun, aber meine Zeitreihe ist zu groß, der prognostizierte Wert ist am Ende der Handlung, so schwer zu beobachten. Ich will die mit nur prognostizierten Wert und CI, ohne alle vorherigen Zeitreihen)
  3. Wie Sie Testdaten zum zweiten Diagramm hinzufügen.

Vielen Dank!

+0

Verwenden Sie 'matplot' Funktion – user2100721

Antwort

1

Hier sind zwei Möglichkeiten, wie Sie vielleicht prüfen: die einige frei greifen

Zuerst lassen verfügbare Daten

library(ggplot2) 
my_data <- mtcars 

anzeigen Vorhersage-Funktion innerhalb Plotten, als eine Linie mit Konfidenzintervall

plot_internal <- ggplot(my_data)+ 
    aes(x = wt, y = mpg)+ 
    # raw data 
    geom_point()+ 
    # LM 
    geom_smooth(method = "lm") 
plot_internal 

enter image description here

Ich vermute, dass Sie wollen wirklich wissen, wie die Prognosen auf einem expliziten Modell basiert zeigen. Gehen Sie folgendermaßen vor:

my_model <- lm(mpg ~ wt, data=my_data) 

# add the fitted values right into the data frame 
my_data$fitted <- fitted(my_model) 

Jetzt zeichnen Sie die tatsächlichen und angepassten Werte als separate Ebenen.

plot_external <- ggplot(my_data)+ 
    aes(x = wt)+ 
    # raw data 
    geom_point(aes(y = mpg))+ 
    # fitted values 
    geom_point(aes(y=fitted), color = "purple") 
plot_external 

enter image description here

Spezialsauce: zeichnen Pfeile verbinden reale und angepassten Werte

plot_with_residual_arrows <- ggplot(my_data)+ 
    aes(x = wt)+ 
    # raw data 
    geom_point(aes(y = mpg))+ 
    # fitted values 
    geom_point(aes(y=fitted), color = "purple")+ 
    # plot arrows from predicted to real values 
    geom_segment(aes(xend = wt, y = fitted, yend = mpg), 
       arrow = arrow(length = unit(0.4, "line")), 
       color="red") 
plot_with_residual_arrows 

enter image description here

Randbemerkung: in diesen Fällen manchmal eine Legende für die Benennung Real- und ausgestattet Werte sind nett. Verschiedene andere Fragen zu SO können Ihnen dabei helfen - es ist eine einfache Angelegenheit, die Daten zu schmelzen oder explizite Legenden zu setzen.

+0

Danke. Ich bin sehr neu in ggplot, also verstehe den Code nicht ruhig. Sollen x und y im selben Datensatz sein? In meinem Fall sind sowohl x als auch y mehrere saisonale Zeitreihen. Ist das wichtig? Es zeigt einen Fehler an: 'Ich weiß nicht, wie man automatisch eine Skalierung für ein Objekt vom Typ msts/ts wählt. Standardmäßig auf fortlaufend. " – Jeannie

+0

Wenn Sie ggplot2 verwenden möchten, dann müssen beide Spalten in derselben data.frame sein. Ich weiß nicht, was msts/ts-Objekte sind.Ich bin mir sicher, dass jemand einen Beispielcode zur Verfügung stellen könnte, der mit Base R plottet, aber ggplot2 bietet einige sehr nette Funktionen, die Sie vielleicht in Erwägung ziehen. – Matt74