Est-il préférable de différencier une série (en supposant qu'elle en ait besoin) avant d'utiliser un Arima OU mieux d'utiliser le paramètre d dans Arima?
J'ai été surpris de voir à quel point les valeurs ajustées diffèrent selon l'itinéraire emprunté avec le même modèle et les mêmes données. Ou est-ce que je fais quelque chose de mal?
install.packages("forecast")
library(forecast)
wineindT<-window(wineind, start=c(1987,1), end=c(1994,8))
wineindT_diff <-diff(wineindT)
#coefficients and other measures are similar
modA<-Arima(wineindT,order=c(1,1,0))
summary(modA)
modB<-Arima(wineindT_diff,order=c(1,0,0))
summary(modB)
#fitted values from modA
A<-forecast.Arima(modA,1)$fitted
#fitted from modB, setting initial value to the first value in the original series
B<-diffinv(forecast.Arima(modB,1)$fitted,xi=wineindT[1])
plot(A, col="red")
lines(B, col="blue")
AJOUTER:
Veuillez noter que je différencie la série une fois et que j'adapte arima (1,0,0), puis j'adapte arima (1,1,0) à la série d'origine. Je suis (je pense) inversant la différenciation sur les valeurs ajustées pour l'arima (1,0,0) sur le fichier différencié.
Je compare les valeurs ajustées - pas les prédictions.
Voici l'intrigue (le rouge est l'arima (1,1,0) et le bleu est l'arima (1,0,0) sur la série différenciée après être revenu à l'échelle d'origine):
Réponse à la réponse du Dr Hyndman:
1) Pouvez-vous illustrer dans le code R ce que je devrais faire pour obtenir les deux valeurs ajustées (et probablement les prévisions) pour correspondre (en tenant compte d'une petite différence en raison de votre premier point dans votre réponse) entre Arima (1,1, 0) et Arima (1,0,0) sur la série différenciée manuellement? Je suppose que cela a à voir avec le fait que la moyenne n'est pas incluse dans modA, mais je ne sais pas trop comment procéder.
2) Concernant votre # 3. Je sais que je manque l'évidence, mais je ne suis pas et identique quand est défini comme ? Êtes-vous en train de dire que je «fais la différence» de manière incorrecte? Y t=φ(Xt-1-Xt-2) Y t X t-Xt-1
la source
Réponses:
Il y a plusieurs problèmes ici.
Si vous faites d'abord la différence, alors
Arima()
un modèle sera adapté aux données différenciées. Si vous laissezArima()
faire la différenciation dans le cadre de la procédure d'estimation, il utilisera un avant diffus pour l'initialisation. Ceci est expliqué dans le fichier d'aide dearima()
. Les résultats seront donc différents en raison des différentes manières dont l'observation initiale est gérée. Je ne pense pas que cela fasse beaucoup de différence en termes de qualité de l'estimation. Cependant, il est beaucoup plus facile de laisserArima()
gérer la différenciation si vous voulez des prévisions ou des valeurs ajustées sur les données d'origine (non différenciées).Mis à part les différences d'estimation, vos deux modèles ne sont pas équivalents carré= 0 ré> 0
modB
inclut une constante tandismodA
que non. Par défaut,Arima()
inclut une constante lorsque et aucune constante lorsque . Vous pouvez ignorer ces valeurs par défaut avec l' argument.d > 0include.mean
Les valeurs ajustées pour les données d'origine ne sont pas équivalentes aux valeurs ajustées non différenciées sur les données différenciées. Pour voir cela, notez que les valeurs ajustées sur les données originales sont données par tandis que l'ajustement les valeurs des données différenciées sont données par où est la série temporelle d'origine et est la série différenciée. Ainsi Y t=φ(Xt-1-Xt-2){Xt}{Yt} X t - X t-1≠ Y t.
la source
Parfois, vous devez supprimer les moyens locaux pour rendre la série stationnaire. Si la série d'origine a un acf qui ne s'éteint pas, cela peut être dû à un changement de niveau / pas dans la série. Le remède est de dé-signifier la série.
RÉPONSE AU BOUNTY:
La façon d'obtenir les mêmes résultats / valeurs ajustées est après avoir physiquement différencié la série oroiginale (Y (t) pour obtenir la première différence (dely), estimer un AR (1) sans constante. Cela revient à ajuster un modèle OLS du forme dely (t) = B1 * dely (t-1) + a (t) SANS interception. Les valeurs ajustées de ce modèle, convenablement intégrées de l'ordre 1 vous donneront (je crois) les valeurs ajustées d'un modèle; [ 1-B] [AR (1)] Y (t) = a (t). La plupart des logiciels, à l'exception notable d'AUTOBOX, NE VOUS PERMETTENT PAS d'estimer un modèle AR (1) sans constante. Voici la équation pour dely = + [(1- .675B * 1)] ** - 1 [A (T)] tandis que l'équation pour Y était
[(1-B * 1)] Y (T) = + [(1- .676B * 1)] ** - 1 [A (T)]. Notez l'erreur d'arrondi causée par la différenciation physique de Y. Notez que lorsque la différenciation est en vigueur (dans le modèle) OU non, l'utilisateur peut choisir d'inclure ou d'exclure la constante. Le processus normal consiste à inclure une constante pour un modèle ARIMA stationnaire (c'est-à-dire non différencié) et à inclure éventuellement une constante lorsque la différenciation est dans le modèle. Il semble que l'approche alternative (Arima) force une constante dans un modèle stationnaire qui à mon avis a causé votre dilemme.
la source
Je ne sais pas pourquoi il y aurait une différence dans les résultats, à moins que vous ne différenciez plus d'une fois dans un sens que dans l'autre. pour un ARIMA (p, d, q) les différences d sont faites avant tout ajustement de modèle. Ensuite, le modèle ARMA stationnaire (p, q) est adapté à la série différenciée. L'hypothèse est qu'après la suppression des tendances polynomiales dans la série, la série restante est stationnaire. Le nombre de différences correspond à l'ordre du polynôme que vous souhaitez supprimer. Donc, pour une tendance linéaire, vous ne prenez qu'une différence, pour une tendance quadratique, vous prenez deux différences. Je ne suis pas d'accord avec la plupart de ce qui a été dit dans la réponse de John.
la source
Une raison de différencier une série I (1) est de la rendre stationnaire. En supposant que vous avez les spécifications correctes pour le modèle ARIMA, les résidus dans le modèle auront les composants autorégressifs et moyenne mobile supprimés et devraient être stationnaires. À cet égard, il peut être judicieux d'utiliser les résidus dans le modèle, plutôt que de les différencier. Cependant, dans les cas où vous avez beaucoup de données que vous pensez être approximativement I (1), certaines personnes vont simplement différer les données plutôt que d'estimer complètement le modèle ARIMA. Le modèle ARIMA peut s'adapter à toute une série de problèmes de séries chronologiques où il peut ne pas être logique de faire la différence. Par exemple, si les données subissent une réversion moyenne, cela peut ne pas toujours être approprié à la différence car il peut ne pas être I (1).
la source