Fehler in der Standardabweichung beim Simulieren eines ARMA (1,1) mit arima.sim

Ich versuche, einen ARMA (1,1) -Prozess zu simulieren deren autoregressive und gleitende Durchschnittsparameter 0,74 bzw. 0,47 sind. Außerdem möchte ich, dass die simulierten Daten einen Mittelwert von 900 und eine Standardabweichung von 230 haben. Um dies zu erreichen, habe ich versucht,

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 

Der Mittelwert der synthetischen Zeitreihe ist akzeptabel.

mean(fit) #922.749 

Wenn ich jedoch die Standardabweichung berechne, ist die Differenz zwischen der Der berechnete Wert und der Wert, den ich als Standardabweichung für fit angegeben habe, sind zu groß.

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

Wie kann ich meinen Code ändern, um sicherzustellen, dass die simulierte Serie eine Standardabweichung aufweist, die der in der Funktion arima.sim festgelegten Standardabweichung nahe kommt?

Antwort

Die sd(fit) ist $ \ sqrt {Var (y_t)} $ wobei $ y_t $ ist ARIMA (1,1), jedoch ist die sd, die Sie im Aufruf arima.sim angeben, die sd des weißen Rauschens in der Serie.

Betrachten Sie die AR (1) -Prozesse $$ y_t = b y_ {t-1} + u_t $$ $$ u_t = \ sigma \ epsilon_t $$ $$ \ epsilon_t \ sim \ mathcal N (0,1) $$ hier die $ sd (y_t) = \ sqrt {Var (y_t)} $ ist $$ Var (y_t) ) = b ^ 2Var (y_ {t-1}) + \ sigma ^ 2Var (\ epsilon_t) $$ , so dass

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

und $ \ sigma $ ist die Standardabweichung von $ u_t $ .

Angeben eines Modells in 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)) 

gibt die Ausgabe zurück

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

, sodass die sd in arima.sim ist $ \ sigma $ .

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.