4 votos

La previsión ARIMA tiene todos los valores como cero

Intento pronosticar 15 puntos de datos basados en una serie temporal de 61 puntos de datos. Cada punto es el total diario de una medida, y los valores de cero son posibles. Tengo los valores reales de los 15 puntos que estoy tratando de predecir, por lo que el modelo puede ser validado con esta información. Los datos y mi código están al final.

Parece que hay una estacionalidad semanal en los datos (lo que tiene sentido en la vida real, lamentablemente no puedo revelar de qué se trata la medida). He intentado ajustar un ARIMA(0,1,1)*(0,1,1) $_{7}$ modelo al logaritmo de los datos. Sin embargo, la previsión exponenciada arroja valores nulos (o muy cercanos) para los 15 días; véase el gráfico del final para comparar los valores reales con los previstos.

¿Qué me estoy perdiendo / haciendo mal? Soy bastante nuevo en la previsión ARIMA / series temporales, pero he intentado leer todo lo posible y en teoría este modelo sería un buen punto de partida.

Aquí están mis datos y mi código:

data train; 
    infile cards;
    input date mmddyy10.  x;
    format date : date10.;
    datalines;
9/1/2016    241
9/2/2016    233
9/3/2016    197
9/4/2016    214
9/5/2016    0
9/6/2016    88
9/7/2016    446
9/8/2016    719
9/9/2016    118
9/10/2016   55
9/11/2016   198
9/12/2016   114
9/13/2016   300
9/14/2016   129
9/15/2016   58
9/16/2016   95
9/17/2016   159
9/18/2016   222
9/19/2016   141
9/20/2016   213
9/21/2016   109
9/22/2016   136
9/23/2016   41
9/24/2016   104
9/25/2016   276
9/26/2016   76
9/27/2016   0
9/28/2016   34
9/29/2016   0
9/30/2016   110
10/1/2016   136
10/2/2016   0
10/3/2016   45
10/4/2016   33
10/5/2016   712
10/6/2016   130
10/7/2016   139
10/8/2016   88
10/9/2016   39
10/10/2016  66
10/11/2016  32
10/12/2016  0
10/13/2016  240
10/14/2016  105
10/15/2016  174
10/16/2016  91
10/17/2016  10
10/18/2016  158
10/19/2016  55
10/20/2016  0
10/21/2016  133
10/22/2016  534
10/23/2016  274
10/24/2016  129
10/25/2016  49
10/26/2016  0
10/27/2016  18
10/28/2016  316
10/29/2016  0
10/30/2016  193
10/31/2016  0
;

data test; 
    infile cards;
    input date mmddyy10.  x;
    format date : date10.;
    datalines;
11/1/2016   36
11/2/2016   161
11/3/2016   211
11/4/2016   128
11/5/2016   232
11/6/2016   244
11/7/2016   65
11/8/2016   110
11/9/2016   35
11/10/2016  315
11/11/2016  193
11/12/2016  31
11/13/2016  83
11/14/2016  114
11/15/2016  103
;

proc timeseries data=train plot=(series periodogram);
   var x;
   id date interval=day;
   spectra freq period p / adjmean bart c=1.5 expon=0.2 ;
run;

data train;
    set train;
    xlog = log(x+0.0000001);
run;

 proc arima data=LUCRU.train;  
   identify  var = xlog(1,7);  
   estimate q=(1)(7) method=ml; 
   forecast id=date interval=day lead=15 printall out=fcast;
run; 

data fcast_exp;
    set fcast;
    where date >= '01nov2016'd;
    ForecastValue = exp(FORECAST);
run;

proc sql noprint;
    create table TestResults as 
    Select t1.*, t2.Actual from 
    (Select Date, ForecastValue from fcast_exp) t1
        INNER join
    (Select Date, x as Actual from test) t2
        ON t1.Date = t2.Date;
quit;

proc sgplot data=TestResults nocycleattrs;
  series x=Date y=Actual / lineattrs=(color=blue);
  series x=Date y=ForecastValue / lineattrs=(color=red);
  run;

2voto

Owen Fraser-Green Puntos 642

Puede que quieras mirar Transformación de datos ya que es muy relevante para su problema y también https://stats.stackexchange.com/questions/249005/what-are-the-assumptions-for-the-residuals-of-arima-model/249106#249106 . El problema fundamental es que su modelo identificado es defectuoso por varias razones posibles, ya que convierte incorrectamente los síntomas estadísticos en curas estadísticas incorrectas (en este caso). Los datos no son estacionarios (eso es un síntoma), la causa es un cambio en la media (cura correcta) en el período 21 que es visualmente obvio desde aquí enter image description here mientras que su modelo decidió, lamentablemente, aplicar la diferenciación regular (cura equivocada) . No hay necesidad de registros ni de ninguna otra transformación de potencia cuando se ajustan las anomalías claras. La determinación de la transformada Box-Cox interpreta fácilmente erróneamente los valores atípicos positivos no tratados (valores altos) como causantes de una alta varianza (síntoma), mientras que una vez ajustados (cura correcta) no se encuentra ninguna evidencia que sugiera la necesidad de una transformada de potencia.

A continuación se muestra el ACF de la serie original que no muestra ninguna estructura estacional significativa mientras que su modelo tenía una diferencia estacional. Los procedimientos de detección de la intervención sugieren un efecto del día 5 que podría haber sido la razón de la diferencia estacional injustificada en su modelo.

El diagrama de Actual/Fit y Previsión del modelo sugerido por AUTOBOX (que he ayudado a desarrollar) cuenta visualmente una historia interesante. enter image description here . Dado que los valores nunca pueden ser inferiores a cero para sus datos, simplemente trunque la estimación del intervalo de confianza inferior a 0,0.

El ACF de la serie original está aquí enter image description here y ACF de los residuos del modelo están aquí enter image description here con el diagrama de residuos aquí enter image description here .

La ecuación está aquí enter image description here fíjate que la variable de cambio de nivel no era la dominante, ya que estaba ofuscada por las anomalías (al igual que mis ojos) . Los detalles del modelo están aquí en 3 partes . enter image description here enter image description here enter image description here . Por último, mostramos el gráfico de las previsiones . enter image description here

Es interesante ver los datos reales y los depurados juntos, ya que muestra lo que podría haber sido enter image description here

Espero que esto le ayude a usted y a otros a entender mejor la metodología y la práctica de las series temporales.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X