j'ai observé quelque chose d'étrange en montage d'un modèle ARMA en utilisant la fonction arma {} tseries et arima {} statistiques dans R.Le curieux cas de la modélisation ARIMA en utilisant R
Il y a une différence radicale dans la procédures d'estimation adoptées par les deux fonctions, filtre de Kalman dans arima {stats} par opposition à l'estimation ML dans arma {tseries}. Compte tenu de la différence dans les procédures d'estimation entre les deux fonctions, on ne s'attendrait pas à ce que les résultats soient radicalement différents pour les deux fonctions si nous utilisons la même série temporelle.
Eh bien, semble qu'ils peuvent!
Générez les séries temporelles ci-dessous et ajoutez 2 valeurs aberrantes.
set.seed(1010)
ts.sim <- abs(arima.sim(list(order = c(1,0,0), ar = 0.7), n = 50))
ts.sim[8] <- ts.sim[12]*8
ts.sim[35] <- ts.sim[32]*8
Ajuster un modèle ARMA en utilisant la fonction deux.
# Works perfectly fine
arima(ts.sim, order = c(1,0,0))
# Works perfectly fine
arma(ts.sim, order = c(1,0))
Modifier le niveau des timeseries par un facteur de 1 milliard
# Introduce a multiplicative shift
ts.sim.1 <- ts.sim*1000000000
options(scipen = 999)
summary(ts.sim.1)
Fit un modèle ARMA en utilisant les 2 fonctions:
# Works perfectly fine
arma(ts.sim.1, order = c(1,0))
# Does not work
arima(ts.sim.1, order = c(1,0,0))
## Error in solve.default(res$hessian * n.used, A): system is
computationally singular: reciprocal condition number = 1.90892e-19
Où je me suis dit à ce problème était quand Le logiciel SAS a réussi à exécuter la procédure proc x12 pour effectuer le test de saisonnalité, mais la même fonction sur R m'a donné l'erreur ci-dessus. Cela m'a vraiment fait réfléchir et regarder les résultats de SAS avec scepticisme, mais il se pourrait que ce soit quelque chose à voir avec l'arima {stats}.
Quelqu'un peut-il essayer d'expliquer la raison de l'erreur ci-dessus qui nous limite à adapter un modèle en utilisant arima {stats}?
Merci pour votre commentaire Rob. La raison pour laquelle j'ai dit que les résultats d'arma() étaient parfaitement bien était que les coefficients mon estimation bêta reste à peu près le même et mon interception augmente d'un milliard, ce qui est logique intuitivement.Vous avez raison, la mise à l'échelle corrige le problème que nous voyons dans la fonction arima() mais il est toujours étonnant de constater que l'estimation ne s'est même pas produite avec arima(). – Shreyes