Conseguenze della modellizzazione di un processo non stazionario mediante ARMA?


23

Capisco che dovremmo usare ARIMA per modellare una serie temporale non stazionaria. Inoltre, tutto ciò che ho letto dice che ARMA dovrebbe essere usato solo per serie storiche stazionarie.

Quello che sto cercando di capire è, cosa succede in pratica quando si classificano erroneamente un modello e si presume d = 0che una serie temporale non sia stazionaria? Per esempio:

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

i dati di controllo si presentano così:

 [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

Supponendo che non sapevo che fossero i dati ARIMA(1,1,1), potrei dare un'occhiata pacf(controlData).

PACF (ControlData)

Quindi uso Dickey-Fuller per vedere se i dati non sono fissi:

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

Quindi, potrei supporre che i dati siano ARIMA (2,0, *) Quindi utilizzare auto.arima(controlData)per cercare di ottenere la soluzione migliore?

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

Quindi, anche se i dati passati e futuri sono ARIMA (1,1,1), potrei essere tentato di classificarli come ARIMA (2,0,1). tsdata(auto.arima(controlData))anche bello.

Ecco cosa troverebbe un modellatore informato:

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) Perché questi criteri di informazione sono migliori del modello selezionato da auto.arima(controlData)?

Ora, confronto graficamente i dati reali e i 2 modelli:

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

tsPlots

2) Nel ruolo del difensore del diavolo, che tipo di conseguenze dovrei pagare usando un ARIMA (2, 0, 1) come modello? Quali sono i rischi di questo errore?

3) Sono principalmente preoccupato per eventuali implicazioni per le previsioni a termine a più periodi. Presumo che sarebbero meno accurati? Sto solo cercando delle prove.

4) Consiglieresti un metodo alternativo per la selezione del modello? Ci sono problemi con il mio ragionamento come modellatore "non informato"?

Sono davvero curioso di sapere quali sono le altre conseguenze di questo tipo di classificazione errata. Ho cercato alcune fonti e non sono riuscito a trovare nulla. Tutta la letteratura che ho potuto trovare solo tocchi su questo argomento, invece solo affermando che i dati dovrebbero essere stazionari prima di eseguire l'ARMA, e se non è stazionaria, allora deve essere differenziata d volte.

Grazie!


La mia impressione è che sia analogo al presupposto degli "errori ortogonali" nella regressione trasversale (cioè distorce gli errori standard ma non i coefficienti), ma sono davvero interessato a sentire la risposta effettiva.
Shadowtalker

Risposte:


11

La mia impressione è che questa domanda non abbia una risposta unica, del tutto generale, quindi esplorerò solo il caso più semplice e in modo un po 'informale.

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

(2)yt=i=1tui

A

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

β^β

k

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

e lo sarà il suo MSE

MSEA[y^T+k]=E(β^kyTyT+k)2

(5)=E[(β^k1)yTi=T+1T+kui]2=E[(β^k1)2yT2]+kσu2

(il termine medio della piazza svanisce, così come i prodotti incrociati di errori futuri).

B

(6)Δyt=γΔyt1+ut

γ^

(7)yt=yt1+γ(yt1yt2)+ut

così prevedendo il livello del processo, avremo

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

che in realtà, dato il vero DGP sarà

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

B

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

|γ^|<10

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

e così

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

mentre ripeto per comodità

(5)MSEA[y^T+k]=E[(β^k1)2yT2]+kσu2

Quindi, affinché il modello differenziato funzioni meglio in termini di previsione MSE, vogliamo

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

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

BAβ^

β^>1KKBUN

UNβ^<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??

Ora, la stima della covarianza sul lato sinistro dovrebbe essere ridotta, dal momento che lo stimatore γ^ dipende da tutto Terrori. Dall'altro lato della disuguaglianza,γ^proviene da un set di dati stazionario, quindi il valore atteso della funzione sopra descritta dovrebbe essere molto inferiore alla dimensione del campione (poiché più di questa funzione si(0,1)).

Quindi, in tutto, senza discutere alcun metodo di stima specifico, credo che siamo stati in grado di dimostrare in modo informale che il modello differenziato dovrebbe funzionare meglio in termini di previsione MSE.


1

Questa è una buona domanda

Come realizzo, hai appena considerato il pacf ma non è abbastanza. ACF e PACF sono entrambi necessari per selezionare il modello migliore.

D'altra parte, i test fissi sono deboli e sensibili e necessitano di una grande quantità di ritardi per essere testati.

Inoltre, si preferisce rendere ferme le serie temporali prima di applicare qualsiasi modello. In parole povere, i modelli ARIMA considerano solo un caso speciale di non-stazionario (preferibilmente di tendenza).

Per quanto riguarda le tue domande, non sono sicuro della funzione auto.arima, ma sono sicuro che il numero di punti dati nel tuo esempio sia piccolo. Simulare un modello utilizzando un numero elevato di punti dati risponderebbe bene alle tue domande. Inoltre, ti consiglio di prendere in considerazione ACF delle serie storiche e PACF. Per quanto riguarda la selezione del modello, la regola empirica è scegliere il modello più semplice (si noti che il modello più semplice dopo aver reso le serie temporali stazionarie).

Ti rimando a questo riferimento. Questo libro non risponde a tutte le tue domande ma ti fornisce alcuni indizi.

----- sezione complementare ------- @nsw considerando una tendenza nei tuoi dati. Se si considera un modello stazionario, si ottiene una previsione verso l'alto / verso il basso, ma in realtà i modelli ARMA sono progettati per prevedere dati flat. Ho modificato il tuo codice per riflettere questa differenza:

require ( 'previsioni')

require ( '') Tseries

controlData <- arima.sim (list (ordine = 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 <- forecast.Arima (trueFit, 10)

matplot (cbind (PrnaiveFit $ mean, PrtrueFit $ mean), type = 'b', col = c ('red', 'green'), ylab = c ('predict ion'), pch = c ('n', 't'))


1
La domanda chiede perché si preferisce "rendere stazionarie le serie storiche". Questo non risponde davvero a questa domanda.
Shadowtalker

@ssdecontrol Hai ragione in generale. Sono molto più preoccupato per le conseguenze implicite sulla previsione dopo errata specificazione. Ma non voglio battere troppo su Hamed.HM. Ha ancora affrontato la mia ultima domanda su "è questo il modo giusto di selezionare un modello?" Ma solo per ribadire, questa è l'ultima delle mie preoccupazioni qui.
Clark Henry,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.