Symulacja serii ARIMA (1,1,0)

Dopasowałem modele ARIMA do oryginalnych szeregów czasowych, a najlepszym modelem jest ARIMA (1, 1,0). Teraz chcę zasymulować serię z tego modelu. Napisałem prosty model AR (1), ale nie mogłem zrozumieć, jak dostosować różnicę w modelu ARI (1,1,0). Poniższy kod R dla serii AR (1) to:

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)) 

W jaki sposób mogę umieścić różnicę ARI (1,1) w powyższym kodzie. Każdy może mi w tym pomóc.

Odpowiedź

Jeśli chcesz symulować ARIMĘ, możesz użyć arima.sim w R, nie musisz robić tego ręcznie. Spowoduje to wygenerowanie żądanej serii.

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) 

Możesz spojrzeć na kod, w jaki sposób to osiągnięto, wpisując arima.sim w wierszu poleceń R. Alternatywnie, jeśli zrobisz to sam, prawdopodobnie szukasz funkcji diffinv. Oblicza odwrotność opóźnionych różnic.

Dla sekwencje rekurencyjne R mają fajną funkcję filter. Zamiast więc używać pętli

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

możesz pisać

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

To da identyczny wynik, jak w przykładzie powyżej arima.sim:

diffinv(filter(c(4.1,2.1+e),filter=-0.7048,method="recursive")[-1]) 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *