Моделювання серії ARIMA (1,1,0)


11

Я встановив моделі ARIMA до оригінальних часових рядів, а найкраща модель - ARIMA (1,1,0). Тепер я хочу імітувати серію з цієї моделі. Я написав просту модель AR (1), але не зміг зрозуміти, як відрегулювати різницю в моделі ARI (1,1,0). Наступний код R для серії 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))                

Як я включаю термін різниці ARI (1,1) у вищевказаний код. Будь-хто допомагає мені в цьому плані.

Відповіді:


21

Якщо ви хочете імітувати ARIMA, який ви можете використовувати arima.simв R, немає необхідності робити це вручну. Це створить потрібну серію.

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)

Ви можете подивитися код того, як це досягається, ввівши arima.simкомандний рядок R. Якщо ви робите це самостійно, функція, яку ви, мабуть, шукаєте diffinv. Він обчислює зворотну відставання, що відстає.

Для рекурсивних послідовностей Rє приємна функція filter. Тож замість використання циклу

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

можна писати

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

Це дасть ідентичний результат arima.simприкладу вище:

diffinv(filter(c(4.1,2.1+e),filter=-0.7048,method="recursive")[-1])
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.