Chyba ve směrodatné odchylce při simulaci ARMA (1,1) pomocí arima.sim

Snažím se simulovat proces ARMA (1,1) jejichž parametry autoregresního a klouzavého průměru jsou 0,74 resp. 0,47. Navíc chci, aby simulovaná data měla průměrnou hodnotu rovnou 900 a směrodatnou odchylku rovnou 230. Abych toho dosáhl, zkusil jsem to >

Průměr syntetické časové řady je přijatelný.

mean(fit) #922.749 

Když však vypočítám směrodatnou odchylku, rozdíl mezi vypočítaná hodnota a ta, kterou jsem stanovil jako standardní odchylku pro fit, je příliš velká.

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

Jak mohu změnit svůj kód, aby simulovaná řada měla standardní odchylku blízkou té, kterou jsem určil uvnitř funkce arima.sim?

odpověď

sd(fit) je $ \ sqrt {Var (y_t)} $ kde $ y_t $ je ARIMA (1,1), ale sd, který určíte ve arima.sim volání, je sd bílého šumu v seriálu.

Zvažte AR (1) -proces $$ y_t = b y_ {t-1} + u_t $$ $$ u_t = \ sigma \ epsilon_t $$ $$ \ epsilon_t \ sim \ mathcal N (0,1) $$ zde $ sd (y_t) = \ sqrt {Var (y_t)} $ , které lze považovat za $$ Var (y_t ) = b ^ 2Var (y_ {t-1}) + \ sigma ^ 2Var (\ epsilon_t) $$ takové, že

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

a $ \ sigma $ je standardní odchylka $ u_t $ .

Zadání modelu v 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)) 

vrací výstup

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

takže sd v arima.sim je $ \ sigma $ .

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *