2013-10-14 2 views
1

ARIMA (2,0,1)에서 몬테카를로 시뮬레이션을 사용하기 위해 다음과 같은 R 코드가 있지만 코드가 작동하지 않습니다. 누군가 도와 주실 수 있습니까? 많은 감사합니다!R의 Monte Carlo Simulation을 사용하는 ARIMA (2,0,1)는 항상 초기 값이 0으로 표시됩니다. 이유는 무엇입니까?

나는 1000 시간 동안 52 주 먼저 시뮬레이션하고 싶다.

ar1 = 0.4857 
ar2 = 0.0173 
ma1 = -0.8054 
r0 <- 0.002937432 

r.sims <- matrix(rep(0,1000*52),nrow=52, ncol=1000) 
e <- rnorm(52*1000, mean = 0.002976873, sd = 0.1056021) 

r.sims[1] <- ar1*r0 + e[1] + ma1*e[0] 
r.sims[2] <- ar1*r.sims[1] + ar2*r0 + e[2] + ma1*e[1] 


for(j in 1:1000){ 
    for(i in 1:52){ 

     r.sims[i] <- r.sims[i-1]*ar1 + r.sims[i-2]*ar2 + e[i] + e[i-1] 


} 
} 

안녕 모두, 나는 R-코드를 수정 한, 그들은 실행 보이지만, 초기 값 인 제로와 약간의 문제, 할 수있는 사람이 도움이 될까요?

r.sims <- matrix(rep(0,1000*52),nrow=52, ncol=1000) 
e.sims <- matrix(rnorm(52*1000, mean = 0.002976873, sd = 0.1056021), 52, 1000) 

r.sims[1] <- ar1*r0 + e.sims[1] + ma1*e0 
r.sims[2] <- ar1*r.sims[1] + ar2*r0 + e.sims[2] + ma1*e.sims[1] 

for(j in 1:1000){ 

       for(i in 3:52) 

       r.sims[i,] <- r.sims[i-1,]*ar1 + r.sims[i-2,]*ar2 + e.sims[i,] + e.sims[i-1,] 

} 


      [,996]  [,997]  [,998]  [,999]  [,1000] 
[1,] 0.000000000 0.000000000 0.000000000 0.0000000000 0.000000000 
[2,] 0.000000000 0.000000000 0.000000000 0.0000000000 0.000000000 
[3,] 0.010016382 0.062227948 0.091050851 0.2800012622 0.066996876 
[4,] 0.176391453 0.209624874 -0.085862618 0.1604297614 0.096992283 
[5,] 0.083494205 0.353051231 -0.292593785 -0.1443630697 0.200975961 
[6,] -0.011723566 0.477519286 -0.415555028 -0.2725228872 0.199274345 
[7,] 0.148164653 0.509141653 -0.202830713 -0.2986390235 -0.013175047 
[8,] -0.022379916 0.431266718 -0.020794588 -0.1296328172 -0.038491656 
[9,] -0.161865835 0.231474893 -0.043960056 0.2651309362 0.053714510 
[10,] -0.218850909 0.038706080 0.162595635 0.2791854517 -0.029590991 

답변

0

코드에 두 가지 사소한 오류가있었습니다.

r.sims[1] <- ar1*r0 + e[1] + ma1*e[1] # I replaced e[0] by e[1] 
r.sims[2] <- ar1*r.sims[1] + ar2*r0 + e[2] + ma1*e[1] 

for(j in 1:1000){ 
    for(i in 3:52){ # I replaced 1 by 3 
    r.sims[i] <- r.sims[i-1]*ar1 + r.sims[i-2]*ar2 + e[i] + e[i-1] 
    } 
} 

위의 코드가 작동합니다.

+0

안녕하세요 스벤, 도와 주셔서 감사합니다! 실행되지만 모든 시뮬레이션 값은 0입니다 ... 이유는 무엇인지 모르겠습니다 ... – user2707605

+0

@ user2707605 0이 아닙니다. 그들은 매우 0에 가깝지만 0으로 표시됩니다. 예를 들어,'r.sims [1]'을 보라. –

+0

안녕하세요 스벤, 친절한 답장을 보내 주셔서 감사합니다. 내 제안에 따라 코드를 다음과 같이 수정했으며 그 결과는 0이 아닌 값을 표시합니다. (i in 1 : 1000) { \t for (i : 3:52) r.sims [i,] <- r.sims [i-1, *] ar1 + r.sims [i-2 ,] * ar2 + e.sims [i,] + e.sims [i-1,] \t – user2707605

관련 문제