Eroare la abaterea standard la simularea unui ARMA (1,1) folosind arima.sim

Am încercat să simulez un proces ARMA (1,1) ai căror parametri medii autoregresivi și mobili sunt, respectiv, 0,74 și 0,47. Mai mult, doresc ca datele simulate să aibă o medie egală cu 900 și abaterea standard egală cu 230. Pentru a realiza acest lucru, am încercat

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 

Media seriei de timp sintetice este acceptabilă.

mean(fit) #922.749 

Cu toate acestea, atunci când calculez abaterea standard, diferența dintre valoarea calculată și cea pe care am stipulat-o ca deviație standard pentru fit este prea mare.

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

Cum îmi pot schimba codul pentru a mă asigura că seria simulată va avea o abatere standard apropiată de cea pe care o stipulez în funcția arima.sim?

Răspuns

sd(fit) este $ \ sqrt {Var (y_t)} $ unde $ y_t $ este ARIMA (1,1), totuși sd pe care îl specificați în apelul arima.sim este sd al zgomotului alb din serie.

Luați în considerare AR (1) -proces $$ y_t = b y_ {t-1} + u_t $$ $$ u_t = \ sigma \ epsilon_t $$ $$ \ epsilon_t \ sim \ mathcal N (0,1) $$ aici $ sd (y_t) = \ sqrt {Var (y_t)} $ care poate fi găsit ca fiind $$ Var (y_t ) = b ^ 2Var (y_ {t-1}) + \ sigma ^ 2Var (\ epsilon_t) $$ astfel încât

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

și $ \ sigma $ este deviația standard a $ u_t $ .

Specificarea unui model în 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)) 

returnează ieșirea

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

deci sd în arima.sim este $ \ sigma $ .

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *