2016-11-23 1 views
1

J'essaie d'implémenter la validation croisée "leave-one-out" pour ma série temporelle, mais je suis tombé sur une erreur de prévision.erreur "objet non trouvé" lors de la prévision avec un modèle "tslm" ajusté

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) 

Jusqu'à ici tout va bien, mais si je fais

forecast(m, h=1) 

je reçois une erreur

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

Répondre

3

Vous devez spécifier railway aussi:

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 

Si vous faites k s Tep prévisions à l'avance, vous devez spécifier k nouvelles valeurs pour toutes les covariables. En haut, j'ai utilisé railway = 1 comme exemple.

Soyez conscient, forecast est une fonction générique, avec beaucoup de méthodes:

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* 

Si vous correspondez un "TSLM", vous avez:

class(m) 
# [1] "lm" 

donc forecast.lm est appelé. On dirait que vous êtes assez accro à forecast.Arima, où seul h doit être défini. Avoir une lecture sur ?forecast.lm.

+0

Impressionnant. Qui aurait pu penser. Oui en effet. J'ai essayé un certain nombre de modèles, arima est l'un d'eux :-) Question bien que: chemin de fer = 1 signifie que le chemin de fer doit également être prévu, ou cela signifie que la valeur "1" est prise pour le chemin de fer variable dans la prévision? – arthur