2016-11-23 9 views
1

시간 계열에 대해 일대일 교차 유효성 검사를 구현하려고하지만 예상 오류가 발생했습니다.적합 "tslm"모델로 예측할 때 "개체를 찾을 수 없음"오류가 발생했습니다.

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) 

여기까지 모든 것이 괜찮지 만, 내가

forecast(m, h=1) 

을한다면 나는 오류를 얻을

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

답변

3

당신도 railway를 지정해야합니다

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 

k을 (를) 앞으로의 예측에서 모든 공변량의 새로운 값을 k으로 지정해야합니다. 위의 예에서는 railway = 1을 예로 사용했습니다.

forecast는 방법을 많이, 일반적인 기능입니다,주의 : 당신이 "TSLM을"맞는 경우

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* 

, 당신은 :

class(m) 
# [1] "lm" 

따라서 forecast.lm가 호출됩니다. 예를 들어 forecast.Arima에 중독되어있는 것 같습니다. h 만 설정하면됩니다. ?forecast.lm을 읽으십시오.

+0

인상적입니다. 누구가 생각할 수 있 었는가. 예. 여러 모델을 시도했지만, 아리마는 그 중 하나입니다 .-) 질문 : railway = 1은 철도가 예측되어야한다는 의미이거나 철도에 대해 값 "1"이 사용되고 있음을 의미합니다 예측의 변수? – arthur