Błąd w odchyleniu standardowym podczas symulacji ARMA (1,1) przy użyciu arima.sim

Próbuję zasymulować proces ARMA (1,1) których parametry autoregresji i średniej ruchomej wynoszą odpowiednio 0,74 i 0,47. Ponadto chcę, aby symulowane dane miały średnią równą 900 i odchylenie standardowe równe 230. Aby to osiągnąć, próbowałem

set.seed(100) fit = arima.sim(list(order = c(1,0,1), ar = 0.74, ma = 0.47), n = 10000, rand.gen= rnorm, sd = 230) + 900 

Średnia z syntetycznego szeregu czasowego jest akceptowalna.

mean(fit) #922.749 

Jednak gdy obliczam odchylenie standardowe, różnica między obliczona wartość i ta, którą określiłem jako odchylenie standardowe dla fit, jest za duża.

sd(fit) #511.3077 - almost two times higher than the value I thought I"d observe 

Jak mogę zmienić kod, aby mieć pewność, że symulowana seria będzie miała odchylenie standardowe zbliżone do tego, które określam w funkcji arima.sim?

Odpowiedź

sd(fit) to $ \ sqrt {Var (y_t)} $ , gdzie $ y_t $ to ARIMA (1,1), jednak sd określone w wywołaniu arima.sim to sd białego szumu w serii.

Rozważmy AR (1) -proces $$ y_t = b y_ {t-1} + u_t $$ $$ u_t = \ sigma \ epsilon_t $$ $$ \ epsilon_t \ sim \ mathcal N (0,1) $$ tutaj $ sd (y_t) = \ sqrt {Var (y_t)} $ , które można znaleźć jako $$ Var (y_t ) = b ^ 2Var (y_ {t-1}) + \ sigma ^ 2Var (\ epsilon_t) $$ takie, że

$$ Var (y_t) = \ frac {\ sigma ^ 2} {1-b ^ 2} $$

i $ \ sigma $ to odchylenie standardowe $ u_t $ .

Określanie modelu w R

set.seed(100) b <- 0.5 s <- 0.9 fit = arima.sim(list(order = c(1,0,0), ar = b), n = 100000, rand.gen= rnorm, sd = s) sd(fit) sqrt(s^2/(1-b^2)) 

zwraca wynik

> sd(fit) [1] 1.041033 > sqrt(s^2/(1-b^2)) [1] 1.03923 

, więc sd w arima.sim to $ \ sigma $ .

Dodaj komentarz

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