2017-10-15 9 views
1

差分時系列のAR(4)モデルを使ってnステップ先行予測を行いたいとします。ループARモデルの場合

モデル自体:

X(t)-X(t-1)=a(1)(X(t-1)-X(t-2))+...+a(4)(X(t-4)-X(t-5)) 

=> X(t)=X(t-1)+a(1)(X(t-1)-X(t-2))+...+a(4)(X(t-4)-X(t-5)) 

まず予測:

X(t+1)-X(t)=a(1)(X(t)-X(t-1))+...+a(4)(X(t-3)-X(t-4)) 

=> X(t+1)=X(t)+a(1)(X(t)-X(t-1))+...+a(4)(X(t-3)-X(t-4)) 

第二の予測:

X(t+2)-X(t+1)=a(1)(X(t+1)-X(t))+...+a(4)(X(t-2)-X(t-3)) 

=> X(t+2)=X(t+1)+a(1)(X(t+1)-X(t))+...+a(4)(X(t-2)-X(t-3)) 

私は、このコードですでにそれを試してみました:このコードの出力がある

N<-50 
arkoef<-0 
ar<-0 
ARforecast<-numeric(0) 
arkoef<-c(closingkursu[2518],closingkursu[2517],closingkursu[2516],closingkursu[2515],closingkursu[2514]) 
ar<-arkoef 
for(i in 1:N){ 
ARforecast<-c(ARforecast,arkoef[1]+arfit$coef[1]*(arkoef[1]-arkoef[2])+arfit$coef[2]*(arkoef[2]-arkoef[3])+arfit$coef[3]*(arkoef[3]-arkoef[4])+arfit$coef[4]*(arkoef[4]-arkoef[5])) 
ar = c(tail(ARforecast, 1), head(ar, -1))} 

ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1 
10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 
    ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1 
10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 
    ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1  ar1 
10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 

最初の予想は正しいようだが、ループが作動しイマイチに。

答えて

0

ループ内のARforecastベクトルの値を増やすのを忘れてしまった。

N<-50 ; arkoef<-0 ; ar<-0 ; ARforecast<-numeric(0) 
arkoef <- c(closingkursu[2518],closingkursu[2517],closingkursu[2516],closingkursu[2515],closingkursu[2514]) 
ar <- arkoef 

for(i in 1:N){ 
    ARforecast[i+1] <- c(ARforecast[i], arkoef[i]+arfit$coef[i]*(arkoef[i]-arkoef[i+1])+arfit$coef[i+1]*(arkoef[i+1]-arkoef[i+2])+arfit$coef[i+2]*(arkoef[i+2]-arkoef[i+3])+arfit$coef[i+3]*(arkoef[i+3]-arkoef[i+4])) 
    ar = c(tail(ARforecast, 1), head(ar, -1)) 
} 

しかし、私は実際にあなたのコードの一部を理解していない(何がループの中でやってarうか?)

+0

arfitの$ coefを[1] $ COEFをarfit〜[4]の固定係数とインデックスを作成します私はそれらを変更すると思います。しかし、このコードは50の警告とNAを価値として与えてくれます – user2968163