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.simfestgelegten 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 $ .