Dans R (2.15.2), j'ai monté une fois un ARIMA (3,1,3) sur une série temporelle et une fois un ARMA (3,3) sur la série temporelle une fois différenciée. Les paramètres ajustés diffèrent, ce que j'ai attribué à la méthode d'ajustement dans ARIMA.
De plus, l'ajustement d'un ARIMA (3,0,3) sur les mêmes données que l'ARMA (3,3) n'entraînera pas de paramètres identiques, quelle que soit la méthode d'ajustement que j'utilise.
Je suis intéressé à identifier d'où vient la différence et avec quels paramètres je peux (le cas échéant) ajuster l'ARIMA pour obtenir les mêmes coefficients d'ajustement que ceux de l'ARMA.
Exemple de code pour démontrer:
library(tseries)
set.seed(2)
#getting a time series manually
x<-c(1,2,1)
e<-c(0,0.3,-0.2)
n<-45
AR<-c(0.5,-0.4,-0.1)
MA<-c(0.4,0.3,-0.2)
for(i in 4:n){
tt<-rnorm(1)
t<-x[length(x)]+tt+x[i-1]*AR[1]+x[i-2]*AR[2]+x[i-3]*AR[3]+e[i-1]*MA[1]+e[i-2]*MA[2]+e[i-3]*MA[3]
x<-c(x,t)
e<-c(e,tt)
}
par(mfrow=c(2,1))
plot(x)
plot(diff(x,1))
#fitting different versions. What I would like to get is fit1 with ARIMA()
fit1<-arma(diff(x,1,lag=1),c(3,3),include.intercept=F)
fit2<-arima(x,c(3,1,3),include.mean=F)
fit3<-arima(diff(x,1),c(3,0,3),include.mean=F)
fit4<-arima(x,c(3,1,3),method="CSS",include.mean=F)
fit5<-arima(diff(x,1),c(3,0,3),method="CSS",include.mean=F)
cbind(fit1$coe,fit2$coe,fit3$coe,fit4$coe,fit5$coe)
Edit: L'utilisation de la somme conditionnelle des carrés est assez proche, mais n'est pas tout à fait là. Merci pour l'astuce pour le fit1!
Edit2: Je ne pense pas que ce soit un doublon. Les points 2 et 3 abordent des problèmes différents du mien, et même si je remplace l'initialisation mentionnée au point 1 par
fit4<-arima(x,c(3,1,3),method="CSS",include.mean=F,init=fit1$coe)
J'ai toujours des coefficients différents
fit1
n'a qu'un seul paramètre MA & 1 AR: vouliez-vous direfit1<-arma(diff(x,1,lag=1),c(3,3),include.intercept=F)
?arima
mentionner unn.cond
argument donnant le nombre d'observations au début de la série à ignorer lors du calcul - c'est peut-être ça. (Quoi de mal à utiliser le maximum de vraisemblance de toute façon?)Réponses:
Il y a trois problèmes mineurs par
tseries::arma
rapport à ceuxstats::arima
qui conduisent à un résultat légèrement différent dans le modèle ARMA pour les séries différenciées utilisanttseries::arma
et ARIMA dansstats::arima
.Valeurs de départ des coefficients:
stats::arima
met les coefficients AR et MA initiaux à zéro, tandis quetseries::arma
la procédure décrite dans Hannan et Rissanen (1982) est utilisée pour obtenir les valeurs initiales des coefficients.Echelle de la fonction objectif: la fonction objectif en
tseries::arma
retourne la valeur des sommes conditionnelles des carrés, RSS;stats::arima
retourne0.5*log(RSS/(n-ncond))
.Algorithme d'optimisation: par défaut, Nelder-Mead est utilisé dans
tseries::arma
, tout en utilisantstats::arima
l'algorithme BFGS.Le dernier peut être modifié via l'argument
optim.method
dansstats::arima
mais les autres nécessiteraient de modifier le code. Ci-dessous, je montre une version abrégée du code source (code minimal pour ce modèle particulier) pourstats::arima
lequel les trois problèmes mentionnés ci-dessus sont modifiés afin qu'ils soient les mêmes que danstseries::arma
. Après avoir résolu ces problèmes, le même résultat que danstseries::arma
est obtenu.Version minimale de
stats::arima
(avec les changements mentionnés ci-dessus):Maintenant, comparez les deux procédures et vérifiez qu'elles donnent le même résultat (nécessite la série
x
générée par l'OP dans le corps de la question).En utilisant les valeurs initiales choisies dans
tseries::arima
:En utilisant les valeurs initiales choisies dans
stats::arima
(zéros):la source
Pour autant que je sache, la différence est entièrement due aux termes MA. Autrement dit, lorsque j'ajuste vos données avec uniquement des termes AR, l'ARMA de la série différenciée et ARIMA sont d'accord.
la source