2014-12-20 4 views
1

월간 인플레이션 데이터가 있습니다. 1999/01부터 2014/10까지R에서 예측 AR (1) 모델로 첫 번째 예측 확인

1999/01/01부터 2007/12까지의 데이터를 사용하여 AR (1) 모델을 만들었습니다.이 모델은 나를 귀찮게합니다 : Yt = 0.0057 + 0.6212Yt-1; 이론으로

data<-read.table("C:/TimeSeries/Inflation/inflation.txt", header=T, dec=",") 
data.ts <- ts(data, start=c(1999,01), freq=12) 

time = window(data.ts, start=c(1999,01),end=c(2007,12)) 

inflarima<-Arima(time,order=c(1,0,0)) 
inflarima 

내 첫 예측해야 말한다 : 잇 (yt에 + 1) = 0.0057 + 0.6212Yt; 두 번째 : 0.0057 + 0.6212 * 0.0057 + (0.6212^2) * Yt 등등 ... 오른쪽 ???

그래서, 처음 기간 예측 (0,0057 0,6212 + * = Y2007,12 (0,0057 0,6212 + * = 0.003790990 0,008054962988) 값을 제공 년 1 월, 2008 인

: 0,008054962988


stat=c(2008,01) #First Prediction will be january 2008 
out_of_sample=window(data.ts,start=stat) #out of sample data 

recurs.pred1=ts(0,start=stat,end=c(2014,7),frequency=12) #Matrix to put the predictions through RECURSIVE METHOD 

for (t in 1:(length(dado_de_fora))) { 
    reg.recur1=Arima(window(time,end=c(2007,3+t)),c(1,0,0)) 
    recurs.pred1[t]=predict(reg.recur1,n.ahead=1)$pred #y chapeu de 1T2008, modelo Arma(1,1) 
} 

에게 재귀 방법으로 내 pedictions의 값을 예측 코드 실행 0

recurs.pred1[]  

      Jan   Feb   Mar   Apr   May  ....... 
2008 0.004556208 0.003796366 0.003965125  0.003948726 0.003681815 ....... 
여기

문제를 시작한다 :이 값을 가지고 ??? HOW

  Jan 
2008 0.004556208 

! 올바른 값은 0,008054962988입니다. 맞습니까? 당신은 방법 론적 개념 모두 최선을 다하고 몇 가지 오류를했습니다 2014/07


+0

틀린, 틀렸어. 잘못된. – Khashaa

+0

왜 잘못 되었습니까? ..... –

+0

재현 가능한 예를 제공하십시오. – Khashaa

답변

1

에 1999년부터 1901년까지 :에서 :

데이터이다.

첫 번째 오류는 AR (1)에 대한 이해가 부족하다는 점에 기인합니다. 앞으로 한 발 앞선 예측은 a+bY{t}이 아니며 다소 a*(1-b)+b*Y{t}입니다. 당신의 이론은 잘못되었습니다. 이 문제를 해결하려면 교과서 나 arima의 설명서를 참조하십시오. 따라서 월 2008 년 당신의 예측은

> 0.0057*(1-0.6212) + 0.6212*0.003790990 
[1] 0.004514123 

둘째, 당신이 월간 기준으로 한 월별 물가 상승률해야합니다, 그래서 reg.recur1=Arima(window(time,end=c(2007, 3+t)),c(1,0,0))의 인수는 11+t을해야합니다. (Arima은 무엇입니까?)

마지막으로 AR (1) 수준의 인플레이션 데이터를 맞추는 것은 잘못된 것입니다. 때로는 인플레이션의 첫 번째 차이, 즉 인플레이션의 증가를 맞추는 것이 적절합니다.

작은 예제가 도움이 될 수 있습니다. 나는 대략 당신의 코드를 따랐다.

library(forecast) 
set.seed(20141221) 
x <- arima.sim(n=108, list(ar=0.5)) 
data.ts <- ts(x, start=c(1999,01), freq=12) 
time = window(data.ts, start=c(1999,01),end=c(2007,12)) 
inflarima <- arima(time, order = c(1, 0, 0)) # 
inflarima$coef 
#  ar1 intercept 
#0.4945659 0.2069526 
#1-step ahead forecast 
0.4945659*time[108] + 0.2069526*(1-0.4945659) 
#[1] 0.1147776 
forecast(inflarima, h=1) #use forecast rather than predict. returns the same. 
#   Point Forecast  Lo 80 Hi 80  Lo 95 Hi 95 
#Jan 2008  0.1147776 -0.9938675 1.223423 -1.580749 1.810304 
+0

예, 제 실수. 고마워요. 책으로 돌아 올께요. 친애하는 –