Erreur dans lécart type lors de la simulation dun ARMA (1,1) en utilisant arima.sim

Jessaye de simuler un processus ARMA (1,1) dont les paramètres de moyenne autorégressive et mobile sont respectivement de 0,74 et 0,47. De plus, je veux que les données simulées aient une moyenne égale à 900 et un écart type égal à 230. Pour ce faire, jai essayé

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 

La moyenne de la série chronologique synthétique est acceptable.

mean(fit) #922.749 

Cependant, lorsque je calcule lécart type, la différence entre la valeur calculée et celle que jai spécifiée comme écart type pour fit est trop grande.

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

Comment puis-je changer mon code pour massurer que la série simulée aura un écart type proche de celui que je stipule dans la fonction arima.sim?

Réponse

Le sd(fit) est $ \ sqrt {Var (y_t)} $ $ y_t $ est ARIMA (1,1), mais le sd que vous spécifiez dans lappel arima.sim est le sd du bruit blanc de la série.

Considérez les procédures AR (1) $$ y_t = b y_ {t-1} + u_t $$ $$ u_t = \ sigma \ epsilon_t $$ $$ \ epsilon_t \ sim \ mathcal N (0,1) $$ ici le $ sd (y_t) = \ sqrt {Var (y_t)} $ qui peut être trouvé comme $$ Var (y_t ) = b ^ 2Var (y_ {t-1}) + \ sigma ^ 2Var (\ epsilon_t) $$ tel que

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

et $ \ sigma $ est lécart type de $ u_t $ .

Spécification dun modèle dans 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)) 

renvoie la sortie

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

donc le sd dans arima.sim est $ \ sigma $ .

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *