Domanda

Sto cercando di spiegare a me stesso il risultato di previsione di applicare un modello ARIMA a un set di dati di serie temporali. I dati sono dalla M1-Concorso, la serie è MNB65. Sto cercando di adattare i dati a un modello ARIMA (1,0,0) e ottenere le previsioni. Sto usando R. Ecco alcuni frammenti di uscita:

> arima(x, order = c(1,0,0))
Series: x 
ARIMA(1,0,0) with non-zero mean 
Call: arima(x = x, order = c(1, 0, 0)) 
Coefficients:
         ar1  intercept
      0.9421  12260.298
s.e.  0.0474    202.717

> predict(arima(x, order = c(1,0,0)), n.ahead=12)
$pred
Time Series:
Start = 53 
End = 64 
Frequency = 1 
[1] 11757.39 11786.50 11813.92 11839.75 11864.09 11887.02 11908.62 11928.97 11948.15 11966.21 11983.23 11999.27

Ho un paio di domande:

(1) Come faccio a spiegare che, anche se gli spettacoli del set di dati di una chiara tendenza al ribasso, la previsione da questo modello di tendenza al rialzo? Questo avviene anche per ARIMA (2,0,0), che è la misura migliore ARIMA per i dati utilizzando auto.arima (pacchetto previsioni) e per un modello ARIMA (1,0,1).

(2) Il valore di intercettazione per l'ARIMA (1,0,0) del modello è 12.260,298. l'intercetta non deve soddisfare l'equazione: C = mean * (1 - sum(AR coeffs)), in questo caso, il valore dovrebbe essere 715.52. Devo mancare qualcosa di base qui.

(3) Questa è chiaramente una serie di media non stazionaria. Perché un AR (2) il modello ancora selezionato come il miglior modello da auto.arima? Potrebbe esserci una spiegazione intuitiva?

Grazie.

È stato utile?

Soluzione

  1. n ARIMA (p, 0, q) modello sarà consentire una tendenza perché il modello è fermo. Se davvero si vuole includere una tendenza, utilizzare ARIMA (p, 1, q), con un termine di deriva, o ARIMA (p, 2, q). Il fatto che auto.arima () sta suggerendo 0 differenze sarebbero di solito indicano non v'è alcuna chiara tendenza.

  2. Il file di aiuto per Arima () mostra che l'intercetta è in realtà la media. Cioè, l'AR (1) modello è (Y_t-c) = ϕ(Y_{t-1} - c) + e_t piuttosto che Y_t = c + ϕY_{t-1} + e_t come ci si potrebbe aspettare.

  3. auto.arima() utilizza un test di radice unitaria per determinare il numero di differenze richiesti. Così controllare i risultati del test per radici unitarie per vedere cosa sta succedendo. È sempre possibile specificare il numero di differenze di auto.arima() se pensate che i test di radice unità non stanno portando ad un modello ragionevole.

Ecco i risultati dei due test per i dati:

R> adf.test(x)

        Augmented Dickey-Fuller Test

data:  x 
Dickey-Fuller = -1.031, Lag order = 3, p-value = 0.9249
alternative hypothesis: stationary 

R> kpss.test(x)

        KPSS Test for Level Stationarity

data:  x 
KPSS Level = 0.3491, Truncation lag parameter = 1, p-value = 0.09909

Così l'ADF dice fortemente non stazionari (l'ipotesi nulla in quel caso), mentre il KPSS non abbastanza rifiuta stazionarietà (l'ipotesi nulla per quel test). auto.arima() utilizza quest'ultimo per default. Si potrebbe usare auto.arima(x,test="adf") se si voleva il primo test. In tal caso, suggerisce il modello ARIMA (0,2,1) che ha una tendenza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top