2010-04-21 11 views
11

Estoy tratando de explicarme el resultado de la previsión de aplicar un modelo ARIMA a un conjunto de datos de series de tiempo. Los datos son de la competencia M1, la serie es MNB65. Estoy tratando de ajustar los datos a un modelo ARIMA (1,0,0) y obtener los pronósticos. Estoy usando R. Éstos son algunos fragmentos de salida:Explicando las previsiones de un modelo ARIMA

> 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 

Tengo algunas preguntas:

(1) ¿Cómo explico que aunque el conjunto de datos muestra una clara tendencia descendente, la previsión de este modelo tendencias hacia arriba. Esto también ocurre con ARIMA (2,0,0), que es el mejor ajuste de ARIMA para los datos que usan auto.arima (paquete de previsión) y para un modelo ARIMA (1,0,1).

(2) El valor de intersección para el modelo ARIMA (1,0,0) es 12260,298. ¿No debería el intercepto satisfacer la ecuación? C = mean * (1 - sum (coeff AR)), en cuyo caso, el valor debería ser 715.52. Debo estar perdiendo algo básico aquí.

(3) Esta es claramente una serie con un promedio no estacionario. ¿Por qué todavía se selecciona un modelo AR (2) como el mejor modelo por auto.arima? ¿Podría haber una explicación intuitiva?

Gracias.

+1

He votado para cerrar esto porque no es una pregunta de programación. –

Respuesta

21
  1. Ningún modelo ARIMA (p, 0, q) permitirá una tendencia porque el modelo es estacionario. Si realmente desea incluir una tendencia, use ARIMA (p, 1, q) con un término de deriva, o ARIMA (p, 2, q). El hecho de que auto.arima() sugiera 0 diferencias generalmente indicaría que no hay una tendencia clara.

  2. El archivo de ayuda para arima() muestra que la intersección es realmente la media. Es decir, el modelo AR (1) es (Y_t-c) = phi * (Y_ {t-1} - c) + e_t en lugar de Y_t = c + phi * Y_ {t-1} + e_t como cabría esperar .

  3. auto.arima() usa una prueba de raíz unitaria para determinar el número de diferencias requeridas. Por lo tanto, verifique los resultados de la prueba de raíz de la unidad para ver qué está sucediendo. Siempre puede especificar el número requerido de diferencias en auto.arima() si cree que las pruebas de raíz de unidad no conducen a un modelo razonable.

Estos son los resultados de dos pruebas para sus datos:

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 

Así dice el ADF firmemente no estacionario (la hipótesis nula en este caso), mientras que el KPSS no acaba de rechazar estacionariedad (la hipótesis nula para esa prueba). auto.arima() usa el último por defecto. Podría usar auto.arima (x, test = "adf") si quería la primera prueba. En ese caso, sugiere el modelo ARIMA (0,2,1) que sí tiene una tendencia.

+1

Gracias Prof. Hyndman por los comentarios elaborados. –

+0

Prof. Hyndman, ¿hay alguna manera de estar seguro de que una serie es I (2) o requiere dos veces la diferencia para que sea estacionaria? Los resultados para un análisis posterior variarán si la serie se diferencia una o dos veces. Tu publicación sugiere usar KPSS, pero ¿hay alguna alternativa? Gracias. – Anusha

Cuestiones relacionadas