Simulação da série ARIMA (1,1,0)

11

Eu adaptei os modelos ARIMA às séries temporais originais, e o melhor modelo é o ARIMA (1,1,0). Agora eu quero simular a série desse modelo. Escrevi o modelo simples AR (1), mas não conseguia entender como ajustar a diferença no modelo ARI (1,1,0). O seguinte código R para a série AR (1) é:

phi= -0.7048                                 
z=rep(0,100)                                 
e=rnorm(n=100,0,0.345)                       
cons=2.1                                     
z[1]=4.1
for (i in 2:100) z[i]=cons+phi*z[i-1]+e[i]   
plot(ts(Y))                

Como faço para incluir o termo de diferença ARI (1,1) no código acima. Qualquer um me ajuda nesse sentido.

Wazir
fonte

Respostas:

21

Se você deseja simular o ARIMA, pode usar arima.simno R, não há necessidade de fazê-lo manualmente. Isso irá gerar a série que você deseja.

e <- rnorm(100,0,0.345) 
arima.sim(n=100,model=list(ar=-0.7048,order=c(1,1,0)),start.innov=4.1,n.start=1,innov=2.1+e)

Você pode ver o código de como isso é feito digitando arima.simna linha de comando R. Como alternativa, se você mesmo, a função que provavelmente está procurando é diffinv. Ele calcula o inverso das diferenças atrasadas.

Para seqüências recursivas Rtem uma boa funçãofilter . Então, ao invés de usar loop

z <- rep(NA,100)
z[1] <- 4.1
for (i in 2:100) z[i]=cons+phi*z[i-1]+e[i]   

você pode escrever

filter(c(4.1,2.1+e),filter=-0.7048,method="recursive")

Isso dará o resultado idêntico ao arima.simexemplo acima:

diffinv(filter(c(4.1,2.1+e),filter=-0.7048,method="recursive")[-1])
mpiktas
fonte
sua resposta é maravilhosa
Daniel James
é permitido que eu faça uma pergunta; ou você pode me dar um privilégio particular de conversar sozinho?
Daniel James
por favor me ajude a olhar para este stackoverflow.com/questions/60970948/…
Daniel James