Une série stationnaire tendance peut-elle être modélisée avec ARIMA?


12

J'ai une question / confusion sur les séries stationnaires requises pour la modélisation avec ARIMA (X). Je pense plus à cela en termes d'inférence (effet d'une intervention), mais j'aimerais savoir si la prévision par rapport à l'inférence fait une différence dans la réponse.

Question:

Toutes les ressources introductives que j'ai lues indiquent que la série doit être stationnaire, ce qui est logique pour moi et c'est là qu'intervient le "je" dans arima (différenciation).

Ce qui me confond, c'est l'utilisation des tendances et des dérives dans ARIMA (X) et les implications (le cas échéant) pour les exigences stationnaires.

L'utilisation d'un terme constant / dérive et / ou d'une variable de tendance comme variable exogène (c'est-à-dire en ajoutant «t» comme régresseur) annule-t-elle l'exigence que la série soit stationnaire? La réponse est-elle différente selon que la série a une racine unitaire (par exemple le test adf) ou a une tendance déterministe mais pas de racine unitaire?

OU

Une série doit-elle toujours être stationnaire, réalisée par différenciation et / ou détendante avant d'utiliser ARIMA (X)?

Réponses:


12

En regardant les commentaires, il semble que nous n'ayons pas abordé la question de savoir comment choisir entre une tendance déterministe ou stochastique. Autrement dit, comment procéder dans la pratique plutôt que les conséquences ou les propriétés de chaque cas.

Une façon de procéder est la suivante: Commencez par appliquer le test ADF.

  • Si le zéro d'une racine unitaire est rejeté, nous avons terminé. La tendance (le cas échéant) peut être représentée par une tendance linéaire déterministe.
  • Si la valeur nulle du test ADF n'est pas rejetée, nous appliquons le test KPSS (où l'hypothèse nulle est l'opposé, stationnarité ou stationnarité autour d'une tendance linéaire).

    o Si la valeur nulle du test KPSS est rejetée, nous concluons qu'il existe une racine unitaire et travaillons avec les premières différences des données. Sur les premières différences de la série, nous pouvons tester la signification d'autres régresseurs ou choisir un modèle ARMA.

    o Si la valeur nulle du test KPSS n'est pas rejetée, nous devons dire que les données ne sont pas très informatives car nous n'avons pu rejeter aucune des hypothèses nulles. Dans ce cas, il peut être plus sûr de travailler avec les premières différences de la série.

Comme mentionné dans une réponse précédente, n'oubliez pas que ces tests peuvent être affectés par la présence de valeurs aberrantes (par exemple, une valeur aberrante à un moment donné en raison d'une erreur lors de l'enregistrement des données ou d'un changement de niveau dû par exemple à un changement de politique qui affecte la série à partir d’un moment donné). Ainsi, il est conseillé de vérifier également ces problèmes et de répéter l'analyse précédente après avoir inclus des régresseurs pour certaines valeurs aberrantes potentielles.


Impressionnant! Ma question de commentaire ci-dessus était-elle correcte si nous voyons à quoi ressemble une tendance, nous utilisons le test ADF qui inclut une tendance (option n ° 3 dans le lien que j'ai publié)?
B_Miner

Dernière question - que pensez-vous de la situation où vous ajustez un ARIMA, disons ARIMA (0,1,1) à une série et la moyenne de la différence est non nulle? Cela signifie que je crois que vous ajoutez une constante au modèle - qui représente également une tendance linéaire dans la série d'origine. Que signifie ce cas? La tendance dans la série originale est-elle déterministe parce que la différenciation de la série n'a pas supprimé la tendance?
B_Miner

@B_Miner En ce qui concerne votre premier commentaire, je commencerais par inclure uniquement une interception. Si la tendance semble quelque peu exponentielle, vous pouvez également ajouter le paramètre de pente de la tendance linéaire et voir s'il est significatif. En général, il vaut mieux commencer par un modèle avec peu de paramètres et si le diagnostic des résidus n'est pas satisfaisant alors envisager d'ajouter d'autres éléments.
javlacalle

@B_Miner Prendre les premières différences supprime à la fois une tendance déterministe et stochastique. Si vous voyez une tendance dans la série différenciée dans un modèle avec interception, vous devriez alors envisager de reprendre les différences (c.-à-d. Tester une deuxième racine unitaire).
javlacalle

1
a1t+a2t2

5

N'oubliez pas qu'il existe différents types de non-stationnarité et différentes manières de les gérer. Quatre courants sont:

1) Tendances déterministes ou stationnarité des tendances. Si votre série est de ce type, la décroissance ou l'inclusion d'une tendance temporelle dans la régression / le modèle. Vous voudrez peut-être vérifier le théorème de Frisch – Waugh – Lovell sur celui-ci.

2) Décalages de niveau et ruptures structurelles. Si tel est le cas, vous devez inclure une variable fictive pour chaque pause ou si votre échantillon est suffisamment long, modélisez chaque regimé séparément.

3) Modification de la variance. Modélisez les échantillons séparément ou modélisez la variance changeante à l'aide de la classe de modélisation ARCH ou GARCH.

4) Si votre série contient une racine unitaire. En général, vous devez ensuite vérifier les relations de cointégration entre les variables, mais comme vous êtes préoccupé par la prévision univariée, vous devez la différencier une ou deux fois en fonction de l'ordre d'intégration.

Afin de modéliser une série chronologique à l'aide de la classe de modélisation ARIMA, les étapes suivantes doivent être appropriées:

1) Regardez l'ACF et le PACF avec un graphique de série chronologique pour voir si la série est stationnaire ou non stationnaire.

2) Testez la série pour une racine unitaire. Cela peut être fait avec une large gamme de tests, dont les plus courants sont le test ADF, le test Phillips-Perron (PP), le test KPSS qui a le nul de stationnarité ou le test DF-GLS qui est le plus efficace. des tests susmentionnés. REMARQUE! Que dans le cas où votre série contient une rupture structurelle, ces tests sont biaisés pour ne pas rejeter le zéro d'une racine unitaire. Dans le cas où vous souhaitez tester la robustesse de ces tests et si vous suspectez une ou plusieurs ruptures structurelles, vous devez utiliser des tests de rupture structurelle endogènes. Deux tests courants sont le test de Zivot-Andrews qui permet une rupture structurale endogène et le Clemente-Montañés-Reyes qui permet deux ruptures structurelles. Ce dernier permet deux modèles différents.

3) S'il y a une racine unitaire dans la série, vous devez la différencier. Ensuite, vous devriez lancer une recherche sur l'ACF, le PACF et le tracé de la série chronologique et probablement rechercher une deuxième racine unitaire pour être du bon côté. L'ACF et le PACF vous aideront à décider du nombre de termes AR et MA à inclure.

4) Si la série ne contient pas de racine unitaire mais que le tracé de la série chronologique et l'ACF montrent que la série a une tendance déterministe, vous devez ajouter une tendance lors de l'ajustement du modèle. Certaines personnes soutiennent qu'il est tout à fait valable de simplement différencier la série lorsqu'elle contient une tendance déterministe bien que des informations puissent être perdues au cours du processus. Néanmoins, c'est une bonne idée de le différencier afin de voir de nombreux termes AR et / ou MA que vous devrez inclure. Mais une tendance temporelle est valable.

5) Ajustez les différents modèles et effectuez la vérification diagnostique habituelle, vous pouvez utiliser un critère d'information ou le MSE afin de sélectionner le meilleur modèle en fonction de l'échantillon sur lequel vous l'adaptez.

6) Faites des prévisions d'échantillon sur les modèles les mieux ajustés et calculez les fonctions de perte telles que MSE, MAPE, MAD pour voir lesquelles d'entre elles fonctionnent le mieux lorsque vous les utilisez pour prévoir parce que c'est ce que nous voulons faire!

7) Faites vos prévisions hors échantillon comme un patron et soyez satisfait de vos résultats!


Et pour répondre rapidement à votre question. Oui il peut.
Plissken

Je n'ai pas été autorisé à commenter ce qui précède car je n'ai pas assez de réputation, mais je tiens à souligner qu'un processus de bruit blanc est stationnaire. Sa moyenne et sa variance ne changent pas avec le temps donc elle est stationnaire!
Plissken

Dan, excellente réponse! En ce qui concerne votre dernier commentaire ici, dites-vous que si vous vous retrouvez avec un bruit blanc résiduel, qui est stationnaire ... alors il vous indique que vous avez modélisé la série de manière adéquate (c'est-à-dire traité correctement / adéquatement les problèmes de stationnarité)?
B_Miner

1
Oui, exactement. Souvent, le test Ljung-Box Q est utilisé pour tester les résidus afin de voir s'ils sont aléatoires ou non. Dans le cas où ils le sont, le modèle est une représentation adéquate des données. Quelque chose que j'ai oublié de mentionner dans la réponse ci-dessus est également qu'après avoir installé le modèle, vous pouvez consulter le graphique ACF et la série chronologique des résidus de la série ajustée. Cela vous donnera une bonne indication si vos résidus sont ou non du bruit blanc (l'ACF ne devrait pas avoir de retards importants). Quoi qu'il en soit, la plupart des progiciels statistiques ont une commande pour le test Ljung-Box Q.
Plissken

Voici le lien wiki pour le test Ljung-Box Q: en.wikipedia.org/wiki/Ljung%E2%80%93Box_test
Plissken

5

Déterminer si la tendance (ou une autre composante telle que la saisonnalité) est déterministe ou stochastique fait partie du casse-tête de l'analyse des séries chronologiques. J'ajouterai quelques points à ce qui a été dit.

1) La distinction entre les tendances déterministes et stochastiques est importante car si une racine unitaire est présente dans les données (par exemple une marche aléatoire), les statistiques de test utilisées pour l'inférence ne suivent pas la distribution traditionnelle. Voir cet article pour quelques détails et références.

Nous pouvons simuler une marche aléatoire (tendance stochastique où les premières différences doivent être prises), tester la signification de la tendance déterministe et voir le pourcentage de cas dans lesquels le zéro de la tendance déterministe est rejeté. En R, on peut faire:

require(lmtest)
iter <- 10000
cval <- 0.05
n <- 120
rejections <- 0
set.seed(123)
for (i in seq.int(iter))
{
  x <- cumsum(rnorm(n)) # random walk
  fit <- lm(x ~ seq(n))
  if (coeftest(fit)[2,"Pr(>|t|)"] < cval)
    rejections <- rejections + 1
}
100 * rejections / iter
#[1] 88.67

Au niveau de signification de 5%, nous nous attendrions à rejeter le nul dans 95% des cas, cependant, dans cette expérience, il n'a été rejeté que dans environ 89% des cas sur 10 000 marches aléatoires simulées.

Nous pouvons appliquer des tests de racine unitaire pour tester si une racine unitaire est présente. Mais nous devons être conscients qu'une tendance linéaire peut à son tour conduire à l'échec du rejet du zéro d'une racine unitaire. Pour y faire face, le test KPSS considère le nul de stationnarité autour d'une tendance linéaire.

2) Un autre problème est l'interprétation des composantes déterministes d'un processus en niveaux ou premières différences. L'effet d'une interception n'est pas le même dans un modèle à tendance linéaire que dans une marche aléatoire. Voir cet article pour l'illustration.

yt=μ+yt1+ϵt,ϵtNID(0,σ2).

ytiyt

yt=μ+yt1μ+yt2+ϵt1+ϵt=2μ+yt2μ+yt3+ϵt2+ϵt1+ϵt=3μ+yt3+ϵt2+ϵt1+ϵt...

Nous arrivons à:

yt=y0+μt+i=1tϵi

y0μμμ

Si la représentation graphique d'une série montre une tendance linéaire relativement claire, nous ne pouvons pas être sûrs qu'elle soit due à la présence d'une tendance linéaire déterministe ou à une dérive dans un processus de marche aléatoire. Des graphiques et des statistiques de tests complémentaires doivent être appliqués.

Il y a quelques mises en garde à garder à l'esprit car une analyse basée sur la racine unitaire et d'autres statistiques de test n'est pas infaillible. Certains de ces tests peuvent être affectés par la présence d'observations périphériques ou de changements de niveau et nécessitent la sélection d'un ordre de décalage qui n'est pas toujours simple.

Pour contourner ce casse-tête, je pense que la pratique courante consiste à prendre les différences de données jusqu'à ce que la série semble stationnaire (par exemple en regardant la fonction d'autocorrélation, qui devrait aller à zéro rapidement), puis à choisir un modèle ARMA.


Greta post- vous êtes clairement un grand atout pour ce site! J'étais curieux de regarder ici et vos autres articles - est-il possible d'utiliser un test ADF ou KPSS pour déterminer si ce qui ressemble à une tendance dans la série en niveaux est déterministe ou stochastique? J'ai trouvé ceci: faculty.smu.edu/tfomby/eco6375/BJ%20Notes/ADF%20Notes.pdf qui donne l'impression que si vous voyez une tendance visuellement dans la série, utilisez l'option # 3 du test et si vous ne refusez pas le nul, vous avez des preuves d'une tendance déterministe.
B_Miner

Sur la base du commentaire de Dan, je suppose que si vous obtenez des résidus de bruit blanc, rien de tout cela n'a d'importance :)
B_Miner

5

Question très intéressante, j'aimerais aussi savoir ce que les autres ont à dire. Je suis ingénieur de formation et non statisticien, donc quelqu'un peut vérifier ma logique. En tant qu'ingénieurs, nous aimerions simuler et expérimenter, donc j'étais motivé pour simuler et tester votre question.

Comme montré empiriquement ci-dessous, l'utilisation d'une variable de tendance dans ARIMAX a annulé le besoin de différenciation et rend la tendance de la série stationnaire. Voici la logique que j'ai utilisée pour vérifier.

  1. Simulé un processus AR
  2. Ajout d'une tendance déterministe
  3. En utilisant ARIMAX modélisé avec tendance comme variable exogène la série ci-dessus sans différenciation.
  4. Vérifié les résidus pour le bruit blanc et c'est purement aléatoire

Voici le code R et les graphiques:

set.seed(3215)

##Simulate an AR process
x <- arima.sim(n = 63,list(ar = c(0.7)));
plot(x)

## Add Deterministic Trend to AR
t <- seq(1, 63)
beta <- 0.8
t_beta <- ts(t*beta,frequency=1)
ar_det <- x+t_beta
plot(ar_det)

## Check with arima

ar_model <- arima(ar_det,order=c(1,0,0),xreg=t,include.mean=FALSE)

## Check whether residuals of fitted model is random

pacf(ar_model$residuals)

AR (1) Tracé simulé entrez la description de l'image ici

AR (1) avec tendance déterministe entrez la description de l'image ici

ARIMAX Residual PACF avec tendance exogène. Les résidus sont aléatoires, sans motif entrez la description de l'image ici

Comme on peut le voir ci-dessus, la modélisation de la tendance déterministe en tant que variable exogène dans le modèle ARIMAX annule le besoin de différenciation. Au moins dans le cas déterministe, cela a fonctionné. Je me demande comment cela se comporterait avec une tendance stochastique qui est très difficile à prévoir ou à modéliser.

Pour répondre à votre deuxième question, OUI tous les ARIMA, y compris ARIMAX, doivent être rendus immobiles. C'est du moins ce que disent les manuels.

En outre, comme indiqué, consultez cet article . Explication très claire sur la tendance déterministe par rapport à la tendance stochastique et comment les supprimer pour la rendre stationnaire et également une très bonne étude de la littérature sur ce sujet. Ils l'utilisent dans le contexte du réseau neuronal, mais il est utile pour un problème général de série temporelle. Leur dernière recommandation est quand il est clairement identifié comme une tendance déterministe, la tendance linéaire est dérivée, sinon appliquer la différenciation pour rendre les séries chronologiques stationnaires. Le jury est toujours là, mais la plupart des chercheurs cités dans cet article recommandent la différenciation par opposition à la tendance linéaire.

Éditer:

Ci-dessous se trouve une marche aléatoire avec un processus stochastique de dérive, utilisant une variable exogène et une différence d'arima. Les deux semblent donner la même réponse et, en substance, ils sont identiques.

library(Hmisc)

set.seed(3215)

## ADD Stochastic Trend to simulated Arima this is AR(1) with unit root with non zero mean

y = rep(NA,63)
y[[1]] <- 2


for (i in 2:63)  {
y[i] <-3+1*y[i-1]+ rnorm(1, mean = 0, sd = 1)
} 

plot(y,type="l")

y_ts <- ts(y,frequency=1)

## Lag to create Xreg

y_1 <- Lag(y,shift=1)


## Start from 2 value to avoid NA and make it equal length with xreg

y <- window(y_ts,start =2,end=63)
xreg1 <- y_1[-1]

## Check the values with ARIMA and xreg

g <- arima(y,order=c(0,0,0),xreg=xreg1)

pacf(g$residuals)

## Check the values with ARIM

g1 <- arima(y,order=c(0,1,0))

pacf(g1$residuals)

## 

ARIMA(0,0,0) with non-zero mean 

Coefficients:
      intercept   xreg1
         3.1304  0.9976
s.e.     0.2664  0.0025

J'espère que cela t'aides!


Je suis également intéressé par d'autres points de vue - je ne suis pas sûr, le bruit blanc résiduel est-il conforme aux exigences pour que la série soit stationnaire - c'est-à-dire que si vous obtenez un bruit blanc, pouvez-vous être satisfait? Ou, l'inclusion de la variable exogène agit-elle réellement sur la "tendance" et rend cette série stationnaire? Je me demande si une vérification sur cette question ultérieure est de savoir si vous obtenez le même modèle (coefficient ar1, etc.) si vous dé-tendance avec une régression linéaire et ensuite ajustez l'arima (1,0,0) ... J'ai fait cela et le les résultats sont proches. Donc, peut-être que l'ajout de la variable exogène est identique à la décroissance.
B_Miner

Oui, c'est la même chose, il y a quelques mois, je suis tombé sur cela dans un article de prévision du réseau neuronal. Je fournirai une référence si je le trouve.
prévisionniste

Une idée du cas où il y a une racine unitaire ou quand il y a une constante dans le modèle?
B_Miner

J'ai mis à jour ma réponse avec l'article auquel je faisais référence.
prévisionniste

Je pense que vous ne l'avez peut-être pas enregistré.
B_Miner
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.