Моделирование серии 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])

Ваш ответ замечательный
Даниэль Джеймс

разрешено ли мне задавать вам вопрос; или вы можете дать мне личную привилегию общаться с вами наедине?
Даниэль Джеймс

Пожалуйста, помогите мне взглянуть на этот stackoverflow.com/questions/60970948/…
Даниэль Джеймс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.