Séries chronologiques de différence avant Arima ou dans Arima

13

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):

entrez la description de l'image ici

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-1X^t=Xt1+ϕ(Xt1Xt2)Y^t=ϕ(Xt1Xt2)Y^tX^tXt1

B_Miner
la source
1
Concernant votre mise à jour. 1) Je ne vois aucun intérêt à le faire. Arima () produira les valeurs ajustées et les prévisions. Pourquoi devrais-je produire du code R supplémentaire pour faire la même chose qu'Arima () le fait déjà? 2) Oui, mais différencier X-hat ne vous donne pas Y-hat. Donc indifférencier Y-hat ne vous donne pas X-hat.
Rob Hyndman
2
Merci. 1) C'était un exercice d'apprentissage pour moi. 2) Mon erreur dans le calcul dans ma question d'origine (en utilisant diffinv) était en utilisant les valeurs ajustées et non l'original est ce que je pense que j'en tire. (?) ... ce qui conduit à # 1 de la façon de bien indifférencier les données. Je sais qu'Arima le fera, essayant juste de suivre un exemple de livre en utilisant les équations.
B_Miner

Réponses:

14

Il y a plusieurs problèmes ici.

  1. Si vous faites d'abord la différence, alors Arima()un modèle sera adapté aux données différenciées. Si vous laissez Arima()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 de arima(). 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 laisser Arima()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).

  2. Mis à part les différences d'estimation, vos deux modèles ne sont pas équivalents car modBinclut une constante tandis modAque 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 > 0d=0d>0include.mean

  3. 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.

    X^t=Xt1+ϕ(Xt1Xt2)
    Y^t=ϕ(Xt1Xt2)
    {Xt}{Yt}
    X^tX^t1Y^t.
Rob Hyndman
la source
1
+1, j'allais donner comme réponse les 2 points. Félicitations pour avoir inclus les 2 autres.
mpiktas
Dr Hyndman, merci pour la réponse! J'ai BEAUCOUP à apprendre sur l'analyse des séries chronologiques. Puis-je demander un suivi? Je ne suis pas sûr de savoir exactement quoi faire de ces informations, je poste donc un ajout à ma question d'origine.
B_Miner
2

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.

IrishStat
la source
Cela devrait-il avoir un impact sur les valeurs ajustées dans ce cas entre l'arima (1,0,0) sur delta-y et l'arima (1,1,0) sur y?
B_Miner
Dans les deux cas, vous ajustez un AR (1) à la première différence de la série chronologique, n'est-ce pas? Si tel est le cas et que les méthodes d'ajustement sont les mêmes, elles devraient faire exactement la même chose. Il n'y a même pas de différence dans l'ordre des opérations.
Michael R. Chernick
Cela ne semble pas être le cas ici. Peut-être que @Rob_Hyndman s'enregistrera.
B_Miner
1

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.

Michael R. Chernick
la source
0

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).

John
la source
Vous attendriez-vous à ce que les différences soient aussi importantes? Cela m'a fait penser que je faisais quelque chose de mal dans la façon dont je revenais des différences à l'original.
B_Miner
Pourriez-vous expliquer exactement ce que vous avez fait? Je ne suis pas bon à lire le code R. Si vous prenez le même nombre de différences dans les deux sens et ajustez le même modèle ARMA après la différenciation, vous devriez obtenir les mêmes résultats tant que les techniques d'ajustement sont les mêmes (généralement les moindres carrés conditionnels sont utilisés).
Michael R. Chernick
Il prend quelques données, adapte un ARIMA (1,1,0), puis prend les différences et adapte un ARIMA (1,0,0). Enfin, il compare les prévisions d'une période hors échantillon. Vraisemblablement, ils sont différents, mais nous ne pouvons pas voir les graphiques dans le post.
John
yt=βyt1+ϵtyt=(β1)yt1+ϵtϵtyt=βyt1+ϵt
John
1
Enfin à droite. Je ne peux pas faire LaTex en 5 minutes! Autant que je sache, l'équation ci-dessus se présente dans les deux sens.
Michael R. Chernick