Conséquences de la modélisation d'un processus non stationnaire à l'aide d'ARMA?

23

Je comprends que nous devrions utiliser ARIMA pour modéliser une série chronologique non stationnaire. De plus, tout ce que j'ai lu dit que l'ARMA ne devrait être utilisé que pour des séries chronologiques stationnaires.

Ce que j'essaie de comprendre, c'est ce qui se passe dans la pratique lors d'une mauvaise classification d'un modèle et en supposant d = 0pour une série chronologique non stationnaire? Par exemple:

controlData <- arima.sim(list(order = c(1,1,1), ar = .5, ma = .5), n = 44)

les données de contrôle ressemblent à ceci:

 [1]   0.0000000   0.1240838  -1.4544087  -3.1943094  -5.6205257
 [6]  -8.5636126 -10.1573548  -9.2822666 -10.0174493 -11.0105225
[11] -11.4726127 -13.8827001 -16.6040541 -19.1966633 -22.0543414
[16] -24.8542959 -25.2883155 -23.6519271 -21.8270981 -21.4351267
[21] -22.6155812 -21.9189036 -20.2064343 -18.2516852 -15.5822178
[26] -13.2248230 -13.4220158 -13.8823855 -14.6122867 -16.4143756
[31] -16.8726071 -15.8499558 -14.0805114 -11.4016515  -9.3330560
[36]  -7.5676563  -6.3691600  -6.8471371  -7.5982880  -8.9692152
[41] -10.6733419 -11.6865440 -12.2503202 -13.5314306 -13.4654890

En supposant que je ne savais pas que les données étaient ARIMA(1,1,1), je pourrais y jeter un œil pacf(controlData).

pacf (controlData)

Ensuite, j'utilise Dickey-Fuller pour voir si les données ne sont pas stationnaires:

require('tseries')
adf.test(controlData)

# Augmented Dickey-Fuller Test
#
# data:  controlData
# Dickey-Fuller = -2.4133, Lag order = 3, p-value = 0.4099
# alternative hypothesis: stationary

adf.test(controlData, k = 1)

# Augmented Dickey-Fuller Test
#
#data:  controlData
# Dickey-Fuller = -3.1469, Lag order = 1, p-value = 0.1188
# alternative hypothesis: stationary

Donc, je pourrais supposer que les données sont ARIMA (2,0, *) Ensuite, utiliser auto.arima(controlData)pour essayer d'obtenir un meilleur ajustement?

require('forecast')
naiveFit <- auto.arima(controlData)
naiveFit
# Series: controlData 
# ARIMA(2,0,1) with non-zero mean 
# 
# Coefficients:
#          ar1      ar2     ma1  intercept
#      1.4985  -0.5637  0.6427   -11.8690
# s.e.  0.1508   0.1546  0.1912     3.2647
#
# sigma^2 estimated as 0.8936:  log likelihood=-64.01
# AIC=138.02   AICc=139.56   BIC=147.05

Donc, même si les données passées et futures sont ARIMA (1,1,1), je pourrais être tenté de les classer comme ARIMA (2,0,1). tsdata(auto.arima(controlData))semble bien aussi.

Voici ce qu'un modeleur averti trouverait:

informedFit <- arima(controlData, order = c(1,1,1))
# informedFit
# Series: controlData 
# ARIMA(1,1,1)                    
#
# Coefficients:
#          ar1     ma1
#       0.4936  0.6859
# s.e.  0.1564  0.1764
#
# sigma^2 estimated as 0.9571:  log likelihood=-62.22
# AIC=130.44   AICc=131.04   BIC=135.79

1) Pourquoi ces critères d'information sont-ils meilleurs que le modèle sélectionné par auto.arima(controlData)?

Maintenant, je compare graphiquement les données réelles et les 2 modèles:

plot(controlData)
lines(fitted(naiveFit), col = "red")
lines(fitted(informedFit), col = "blue")

tsPlots

2) En jouant l'avocat du diable, quel genre de conséquences pourrais-je payer en utilisant un ARIMA (2, 0, 1) comme modèle? Quels sont les risques de cette erreur?

3) Je suis principalement préoccupé par les implications pour les prévisions à venir sur plusieurs périodes. Je suppose qu'ils seraient moins précis? Je cherche juste une preuve.

4) Souhaitez-vous suggérer une autre méthode de sélection des modèles? Y a-t-il des problèmes avec mon raisonnement en tant que modélisateur "non informé"?

Je suis vraiment curieux de savoir quelles sont les autres conséquences de ce type de mauvaise classification. J'ai cherché des sources et je n'ai rien trouvé. Toute la littérature que j'ai pu trouver ne touche qu'à ce sujet, au lieu de simplement dire que les données doivent être stationnaires avant d'effectuer ARMA, et si elles ne sont pas stationnaires, elles doivent être différenciées d fois.

Merci!

Clark Henry
la source
Mon impression est que c'est analogue à l'hypothèse des "erreurs orthogonales" dans la régression transversale (c'est-à-dire qu'elle biaise les erreurs standard mais pas les coefficients), mais je suis vraiment intéressé à entendre la réponse réelle.
shadowtalker

Réponses:

11

Mon impression est que cette question n'a pas de réponse unique et entièrement générale, je n'explorerai donc que le cas le plus simple et de manière un peu informelle.

(1)yt=yt-1+ut,t=1,...,T,y0=0
utE(ut2)=σu2

(2)yt=je=1tuje

UNE

(3)yt=βyt-1+ut,t=1,...,T,y0=0

β^β

k

(4)y^T+k=β^kyT

et son MSE sera

MSEUNE[y^T+k]=E(β^kyT-yT+k)2

(5)=E[(β^k-1)yT-je=T+1T+kuje]2=E[(β^k-1)2yT2]+kσu2

(le terme moyen du carré disparaît, ainsi que les produits croisés d'erreurs futures).

B

(6)Δyt=γΔyt-1+ut

γ^

(7)yt=yt-1+γ(yt-1-yt-2)+ut

afin de prévoir le niveau du processus, nous aurons

y^T+1=yT+γ^(yT-yT-1)

qui en réalité, étant donné le vrai DGP sera

(8)y^T+1=yT+γ^uT

B

y^T+k=yT+(γ^+γ^2+...+γ^k)uT

|γ^|<10

(9)y^T+k=yT+γ^-γ^k+11-γ^uT

et donc

(dix)MSEB[y^T+k]=E[(γ^-γ^k+11-γ^)2uT2]+kσu2

pendant que je répète pour plus de commodité

(5)MSEUNE[y^T+k]=E[(β^k-1)2yT2]+kσu2

Donc, pour que le modèle différencié fonctionne mieux en termes de prédiction MSE, nous voulons

MSEB[y^T+k]MSEUNE[y^T+k]

E[(γ^-γ^k+11-γ^)2uT2]E[(β^k-1)2yT2]

BUNEβ^

β^>1kkBUNE

UNEβ^<1k

E[(γ^1-γ^)2uT2]E[yT2]=Tσu2??

kk

(γ^1-γ^)20B

γ^uT

Cov[(γ^1-γ^)2,uT2]+E[(γ^1-γ^)2]σu2Tσu2??

Cov[(γ^1-γ^)2,uT2](T-E[(γ^1-γ^)2])σu2??

γ^Tγ^(0,1)

Donc, dans l'ensemble, sans discuter d'une méthode d'estimation spécifique, je pense que nous avons pu montrer de manière informelle que le modèle différencié devrait être plus performant en termes de prédiction MSE.

Alecos Papadopoulos
la source
1

Voilà une bonne question.

Comme je me rends compte, vous venez de considérer pacf mais cela ne suffit pas. ACF et PACF sont tous deux nécessaires pour sélectionner le meilleur modèle.

En revanche, les tests stationnaires sont faibles et sensibles et nécessitent un grand nombre de retards pour être testés.

De plus, il est préférable de rendre les séries chronologiques stationnaires avant d'appliquer un modèle. En gros, les modèles ARIMA considèrent simplement un cas particulier de non-stationnaire (de préférence en tendance).

Concernant vos questions, je ne suis pas sûr de la fonction auto.arima mais je suis sûr que le nombre de points de données dans votre exemple est petit. La simulation d'un modèle utilisant un nombre élevé de points de données répondrait bien à vos questions. Aussi, je vous conseille de considérer ACF des séries chronologiques ainsi que PACF. À propos de la sélection du modèle, la règle de base est de choisir le modèle le plus simple (notez que le modèle le plus simple après avoir rendu les séries chronologiques stationnaires).

Je vous renvoie à cette référence. Ce livre ne répond pas à toutes vos questions mais vous donne quelques indices.

----- section complémentaire ------- @nsw considérant une tendance dans vos données. Si vous considérez un modèle stationnaire, il en résulte une prédiction ascendante / descendante, mais en réalité les modèles ARMA sont conçus pour prédire des données plates. J'ai changé votre code pour refléter cette différence:

besoin («prévision»)

require ('tseries')

controlData <- arima.sim (list (order = c (1,1,1), ar = .5, ma = .5), n = 1000 )

acf (controlData)

ts.plot (controlData)

naiveFit <- arima (controlData, order = c (2,0,1))

trueFit <- arima (controlData, order = c (1,1,1))

PrnaiveFit <-forecast.Arima (naiveFit, 10)

PrtrueFit <- prévision.Arima (trueFit, 10)

matplot (cbind (PrnaiveFit $ moyenne, PrtrueFit $ moyenne), type = 'b', col = c ('rouge', 'vert'), ylab = c ('prédire ion'), pch = c ('n', 't'))

TPArrow
la source
1
La question demande pourquoi il est préférable de «rendre les séries chronologiques stationnaires». Cela ne répond pas vraiment à cette question.
shadowtalker
@ssdecontrol Vous avez raison en général. Je suis vraiment plus préoccupé par les conséquences implicites sur la prédiction après une erreur de spécification. Mais je ne veux pas trop battre Hamed.HM. Il a quand même répondu à ma dernière question, "est-ce la bonne façon de sélectionner un modèle?" Mais pour réitérer, c'est le moindre de mes soucis ici.
Clark Henry