Ajustei os modelos ARIMA à série temporal original e o melhor modelo é ARIMA (1, 1,0). Agora quero simular a série desse modelo. Escrevi o modelo AR (1) simples, mas não consegui entender como ajustar a diferença dentro do 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 pode me ajudar nesse sentido.
Resposta
Se você deseja simular ARIMA, pode usar arima.sim
em R, não há necessidade de fazer isso 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.sim
na linha de comando R. Alternativamente, se você mesmo fizer isso, a função que você provavelmente está procurando é diffinv
. Ela calcula o inverso das diferenças defasadas.
Para sequências recursivas R
tem uma função interessante filter
. Então, em vez 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.sim
exemplo acima:
diffinv(filter(c(4.1,2.1+e),filter=-0.7048,method="recursive")[-1])