Fejl i standardafvigelsen ved simulering af en ARMA (1,1) ved hjælp af arima.sim

Jeg prøver at simulere en ARMA (1,1) proces hvis autoregressive og glidende gennemsnitsparametre er henholdsvis 0,74 og 0,47. Desuden vil jeg have, at de simulerede data skal have gennemsnitlig 900 og standardafvigelse lig med 230. For at opnå dette prøvede jeg >

Gennemsnittet af den syntetiske tidsserie er acceptabelt.

mean(fit) #922.749 

Når jeg beregner standardafvigelsen, er forskellen mellem beregnet værdi og den, som jeg angav som standardafvigelsen for fit, er for stor.

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

Hvordan kan jeg ændre min kode for at sikre, at den simulerede serie har en standardafvigelse tæt på den, jeg angiver inden for arima.sim -funktionen?

Svar

sd(fit) er $ \ sqrt {Var (y_t)} $ hvor $ y_t $ er ARIMA (1,1), men sd du angiver i arima.sim kaldet er sd af den hvide støj i serien.

Overvej AR (1) -processerne $$ y_t = b y_ {t-1} + u_t $$ $$ u_t = \ sigma \ epsilon_t $$ $$ \ epsilon_t \ sim \ mathcal N (0,1) $$ her er $ sd (y_t) = \ sqrt {Var (y_t)} $ som kan findes at være $$ Var (y_t ) = b ^ 2Var (y_ {t-1}) + \ sigma ^ 2Var (\ epsilon_t) $$ sådan at

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

og $ \ sigma $ er standardafvigelse på $ u_t $ .

Angivelse af en model i 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)) 

returnerer output

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

sd i arima.sim er $ \ sigma $ .

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *