Virhe keskihajonnassa simuloitaessa ARMA: ta (1,1) arima.sim: n avulla

Yritän simuloida ARMA (1,1) -prosessia joiden autoregressiiviset ja liikkuvan keskiarvon parametrit ovat vastaavasti 0,74 ja 0,47. Lisäksi haluan, että simuloidun datan keskiarvo on yhtä suuri kuin 900 ja keskihajonta on yhtä suuri kuin 230. Tämän saavuttamiseksi yritin

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 

Synteettisen aikasarjan keskiarvo on hyväksyttävä.

mean(fit) #922.749 

Kuitenkin, kun lasken keskihajonnan, ero laskettu arvo ja arvo, jonka määrittelin standardipoikkeaman kohteelle fit on liian suuri.

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

Kuinka voin muuttaa koodia sen varmistamiseksi, että simuloidulla sarjalla on keskihajonta, joka on lähellä sitä, jonka määrittelen funktion arima.sim sisällä? p>

vastaus

sd(fit) on $ \ sqrt {Var (y_t)} $ missä $ y_t $ on ARIMA (1,1), mutta sd, jonka määrität puhelussa arima.sim, on sd sarjan valkoisesta kohinasta.

Harkitse AR (1) -prosesseja $$ y_t = b y_ {t-1} + u_t $$ $$ u_t = \ sigma \ epsilon_t $$ $$ \ epsilon_t \ sim \ mathcal N (0,1) $$ tässä, $ sd (y_t) = \ sqrt {Var (y_t)} $ , jonka voidaan todeta olevan $$ Var (y_t ) = b ^ 2Var (y_ {t-1}) + \ sigma ^ 2Var (\ epsilon_t) $$ siten, että

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

ja $ \ sigma $ on $ u_t $ : n keskihajonta.

Mallin määrittäminen ryhmässä 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)) 

palauttaa tuloksen

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

joten sd kohdassa arima.sim on $ \ sigma $ .

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *