2016-11-23 3 views
1

Ich versuche eine Leave-One-Out-Kreuzvalidierung für meine Zeitreihe zu implementieren, stolperte jedoch gegen einen Prognosefehler.Fehler "Objekt nicht gefunden" bei der Erstellung der Vorhersage mit einem angepassten "tslm" -Modell

library('forecast') 

data_aero <- c(579, 624, 651, 687, 745, 753, 844, 965, 1076, 1078, 1107) 
data_railway <-c(1417, 1507, 1696, 1831, 1985, 1506, 1854, 2059, 2104, 1932, 1778) 


data.ts <- ts(data=data.frame(aero = data_aero, railway = data_railway), start = 2004) 

st <- 2003 
limit <- 2013 
en <- 2014 

data.ts.train <- window(data.ts, start=st, end=limit) 
data.ts.test <- window(data.ts, start=limit+1, end=en) 


m <- tslm(aero~railway, data=data.ts.train) 

Bis hier ist alles in Ordnung, aber wenn ich

tun
forecast(m, h=1) 

Ich erhalte einen Fehler

Error in eval(expr, envir, enclos) : object 'railway' not found 

Antwort

3

Sie müssen railway angeben, auch:

forecast(m, h = 1, newdata = data.frame(railway = 1)) 
#  Point Forecast  Lo 80 Hi 80  Lo 95 Hi 95 
#2014  -244.3887 -690.9415 202.1641 -981.6033 492.8259 

Wenn Sie k s machen tep ahead-Prognose, müssen Sie k neue Werte für alle Kovariaten angeben. Oben habe ich railway = 1 als ein Beispiel verwendet.

bewusst sein, forecast ist eine generische Funktion, mit vielen Methoden:

methods(forecast) 
# [1] forecast.ar   forecast.Arima  forecast.bats  
# [4] forecast.default* forecast.ets   forecast.forecast* 
# [7] forecast.fracdiff forecast.HoltWinters forecast.lm   
#[10] forecast.mlm*  forecast.mts*  forecast.nnetar  
#[13] forecast.stl   forecast.stlm  forecast.StructTS 
#[16] forecast.tbats  forecast.ts*   forecast.varest* 

Wenn Sie einen "tslm" passen, Sie haben:

class(m) 
# [1] "lm" 

daher forecast.lm genannt wird. Es sieht so aus, als ob Sie ziemlich süchtig nach forecast.Arima sind, wo nur h gesetzt werden muss. Lesen Sie weiter unter ?forecast.lm.

+0

Beeindruckend. Wer hätte das gedacht? Ja in der Tat. Ich habe eine Reihe von Modellen ausprobiert, Arima ist einer von ihnen :-) Frage: Railway = 1 bedeutet, dass die Bahn auch prognostiziert werden muss, oder es bedeutet, dass der Wert "1" für die Bahn genommen wird Variable in der Prognose? – arthur

Verwandte Themen