tendencia estocástica vs determinista / estacionalidad en el pronóstico de series de tiempo

16

Tengo antecedentes moderados en el pronóstico de series de tiempo. He mirado varios libros de pronósticos y no veo las siguientes preguntas abordadas en ninguno de ellos.

Tengo dos preguntas:

  1. ¿Cómo determinaría objetivamente (mediante una prueba estadística) si una serie de tiempo dada tiene:

    • Estacionalidad estocástica o estacionalidad determinista
    • Tendencia estocástica o una tendencia determinista
  2. ¿Qué pasaría si modelo mi serie temporal como una tendencia / estacionalidad determinista cuando la serie tiene un componente claramente estocástico?

Cualquier ayuda para abordar estas preguntas sería muy apreciada.

Datos de ejemplo para tendencia:

7,657
5,451
10,883
9,554
9,519
10,047
10,663
10,864
11,447
12,710
15,169
16,205
14,507
15,400
16,800
19,000
20,198
18,573
19,375
21,032
23,250
25,219
28,549
29,759
28,262
28,506
33,885
34,776
35,347
34,628
33,043
30,214
31,013
31,496
34,115
33,433
34,198
35,863
37,789
34,561
36,434
34,371
33,307
33,295
36,514
36,593
38,311
42,773
45,000
46,000
42,000
47,000
47,500
48,000
48,500
47,000
48,900
pronosticador
fuente
Hay 4 posibles estados de la naturaleza. No hay una solución analítica a esta pregunta ya que el espacio muestral del modelo es relativamente ilimitado. Para responder empíricamente a esta inquietante pregunta, he ayudado a desarrollar AUTOBOX autobox.com/cms . AUTOBOX realiza un torneo para examinar los 4 casos y evalúa la calidad de los 4 modelos resultantes en términos de necesidad y suficiencia. ¿Por qué no publica una serie temporal de su elección y yo publicaré los 4 resultados que muestran cómo se ha resuelto este problema?
IrishStat

Respuestas:

15

1) Con respecto a su primera pregunta, algunas estadísticas de pruebas se han desarrollado y discutido en la literatura para probar el nulo de estacionariedad y el nulo de una raíz unitaria. Algunos de los muchos documentos que se escribieron sobre este tema son los siguientes:

Relacionado con la tendencia:

  • Dickey, D. y Fuller, W. (1979a), Distribución de los estimadores para series de tiempo autorregresivas con una raíz unitaria, Journal of the American Statistical Association 74, 427-31.
  • Dickey, D. y Fuller, W. (1981), Estadísticas de razón de probabilidad para series de tiempo autorregresivas con una raíz unitaria, Econometrica 49, 1057-1071.
  • Kwiatkowski, D., Phillips, P., Schmidt, P. y Shin, Y. (1992), Prueba de la hipótesis nula de estacionariedad frente a la alternativa de una raíz unitaria: ¿Qué tan seguros estamos de que las series de tiempo económicas tienen una raíz unitaria? , Journal of Econometrics 54, 159-178.
  • Phillips, P. y Perron, P. (1988), Prueba de una raíz unitaria en regresión de series de tiempo, Biometrika 75, 335-46.
  • Durlauf, S. y Phillips, P. (1988), Tendencias versus caminatas aleatorias en análisis de series de tiempo, Econometrica 56, 1333-54.

Relacionado con el componente estacional:

  • Hylleberg, S., Engle, R., Granger, C. y Yoo, B. (1990), Integración estacional y cointegración, Journal of Econometrics 44, 215-38.
  • Canova, F. y Hansen, BE (1995), ¿Son constantes los patrones estacionales en el tiempo? una prueba de estabilidad estacional, Journal of Business and Economic Statistics 13, 237-252.
  • Franses, P. (1990), Pruebas de raíces unitarias estacionales en datos mensuales, Informe técnico 9032, Econometric Institute.
  • Ghysels, E., Lee, H. y Noh, J. (1994), Pruebas de raíces unitarias en series temporales estacionales. algunas extensiones teóricas y una investigación de Monte Carlo, Journal of Econometrics 62, 415-442.

El libro de texto Banerjee, A., Dolado, J., Galbraith, J. y Hendry, D. (1993), Cointegración, Corrección de errores y el análisis econométrico de datos no estacionarios, Textos avanzados en econometría. Oxford University Press también es una buena referencia.

2) Su segunda preocupación está justificada por la literatura. Si hay una prueba de raíz unitaria, la estadística t tradicional que aplicaría en una tendencia lineal no sigue la distribución estándar. Véase, por ejemplo, Phillips, P. (1987), Regresión de series de tiempo con raíz unitaria, Econometrica 55 (2), 277-301.

Si existe una raíz unitaria y se ignora, entonces la probabilidad de rechazar el valor nulo de que el coeficiente de una tendencia lineal es cero se reduce. Es decir, terminaríamos modelando una tendencia lineal determinista con demasiada frecuencia para un nivel de significación dado. En presencia de una raíz unitaria, debemos transformar los datos tomando diferencias regulares a los datos.

3) Por ejemplo, si usa R puede hacer el siguiente análisis con sus datos.

x <- structure(c(7657, 5451, 10883, 9554, 9519, 10047, 10663, 10864, 
  11447, 12710, 15169, 16205, 14507, 15400, 16800, 19000, 20198, 
  18573, 19375, 21032, 23250, 25219, 28549, 29759, 28262, 28506, 
  33885, 34776, 35347, 34628, 33043, 30214, 31013, 31496, 34115, 
  33433, 34198, 35863, 37789, 34561, 36434, 34371, 33307, 33295, 
  36514, 36593, 38311, 42773, 45000, 46000, 42000, 47000, 47500, 
  48000, 48500, 47000, 48900), .Tsp = c(1, 57, 1), class = "ts")

Primero, puede aplicar la prueba Dickey-Fuller para el nulo de una raíz unitaria:

require(tseries)
adf.test(x, alternative = "explosive")
#   Augmented Dickey-Fuller Test
#   Dickey-Fuller = -2.0685, Lag order = 3, p-value = 0.453
#   alternative hypothesis: explosive

y la prueba KPSS para la hipótesis nula inversa, estacionariedad frente a la alternativa de estacionariedad en torno a una tendencia lineal:

kpss.test(x, null = "Trend", lshort = TRUE)
#   KPSS Test for Trend Stationarity
#   KPSS Trend = 0.2691, Truncation lag parameter = 1, p-value = 0.01

Resultados: prueba ADF, al nivel de significancia del 5% no se rechaza una raíz unitaria; Prueba KPSS, el nulo de estacionariedad se rechaza a favor de un modelo con una tendencia lineal.

Nota aparte: el uso lshort=FALSEde la prueba nula KPSS no se rechaza al nivel del 5%, sin embargo, selecciona 5 rezagos; una inspección adicional que no se muestra aquí sugiere que elegir 1-3 rezagos es apropiado para los datos y lleva a rechazar la hipótesis nula.

En principio, deberíamos guiarnos por la prueba para la cual pudimos rechazar la hipótesis nula (en lugar de por la prueba para la cual no rechazamos (aceptamos) la nula). Sin embargo, una regresión de la serie original en una tendencia lineal resulta no ser confiable. Por un lado, el cuadrado R es alto (más del 90%), lo que se señala en la literatura como un indicador de regresión espuria.

fit <- lm(x ~ 1 + poly(c(time(x))))
summary(fit)
#Coefficients:
#                 Estimate Std. Error t value Pr(>|t|)    
#(Intercept)       28499.3      381.6   74.69   <2e-16 ***
#poly(c(time(x)))  91387.5     2880.9   31.72   <2e-16 ***
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#Residual standard error: 2881 on 55 degrees of freedom
#Multiple R-squared:  0.9482,   Adjusted R-squared:  0.9472 
#F-statistic:  1006 on 1 and 55 DF,  p-value: < 2.2e-16

Por otro lado, los residuos están autocorrelacionados:

acf(residuals(fit)) # not displayed to save space

Además, el nulo de una raíz unitaria en los residuos no puede ser rechazado.

adf.test(residuals(fit))
#   Augmented Dickey-Fuller Test
#Dickey-Fuller = -2.0685, Lag order = 3, p-value = 0.547
#alternative hypothesis: stationary

En este punto, puede elegir un modelo que se utilizará para obtener pronósticos. Por ejemplo, los pronósticos basados ​​en un modelo de serie temporal estructural y en un modelo ARIMA se pueden obtener de la siguiente manera.

# StructTS
fit1 <- StructTS(x, type = "trend")
fit1
#Variances:
# level    slope  epsilon  
#2982955        0   487180 
# 
# forecasts
p1 <- predict(fit1, 10, main = "Local trend model")
p1$pred
# [1] 49466.53 50150.56 50834.59 51518.62 52202.65 52886.68 53570.70 54254.73
# [9] 54938.76 55622.79

# ARIMA
require(forecast)
fit2 <- auto.arima(x, ic="bic", allowdrift = TRUE)
fit2
#ARIMA(0,1,0) with drift         
#Coefficients:
#         drift
#      736.4821
#s.e.  267.0055
#sigma^2 estimated as 3992341:  log likelihood=-495.54
#AIC=995.09   AICc=995.31   BIC=999.14
#
# forecasts
p2 <- forecast(fit2, 10, main = "ARIMA model")
p2$mean
# [1] 49636.48 50372.96 51109.45 51845.93 52582.41 53318.89 54055.37 54791.86
# [9] 55528.34 56264.82

Una trama de los pronósticos:

par(mfrow = c(2, 1), mar = c(2.5,2.2,2,2))
plot((cbind(x, p1$pred)), plot.type = "single", type = "n", 
  ylim = range(c(x, p1$pred + 1.96 * p1$se)), main = "Local trend model")
grid()
lines(x)
lines(p1$pred, col = "blue")
lines(p1$pred + 1.96 * p1$se, col = "red", lty = 2)
lines(p1$pred - 1.96 * p1$se, col = "red", lty = 2)
legend("topleft", legend = c("forecasts", "95% confidence interval"), 
  lty = c(1,2), col = c("blue", "red"), bty = "n")
plot((cbind(x, p2$mean)), plot.type = "single", type = "n", 
  ylim = range(c(x, p2$upper)), main = "ARIMA (0,1,0) with drift")
grid()
lines(x)
lines(p2$mean, col = "blue")
lines(ts(p2$lower[,2], start = end(x)[1] + 1), col = "red", lty = 2)
lines(ts(p2$upper[,2], start = end(x)[1] + 1), col = "red", lty = 2)

pronósticos de tendencia

Las previsiones son similares en ambos casos y parecen razonables. Observe que los pronósticos siguen un patrón relativamente determinista similar a una tendencia lineal, pero no modelamos explícitamente una tendencia lineal. La razón es la siguiente: i) en el modelo de tendencia local, la varianza del componente de la pendiente se estima como cero. Esto convierte el componente de tendencia en una deriva que tiene el efecto de una tendencia lineal. ii) ARIMA (0,1,1), un modelo con una deriva se selecciona en un modelo para la serie diferenciada. El efecto del término constante en una serie diferenciada es una tendencia lineal. Esto se discute en esta publicación .

Puede verificar que si se elige un modelo local o un ARIMA (0,1,0) sin deriva, los pronósticos son una línea horizontal recta y, por lo tanto, no tendrían semejanza con la dinámica observada de los datos. Bueno, esto es parte del rompecabezas de las pruebas de raíz unitaria y los componentes deterministas.

Edición 1 (inspección de residuos): la autocorrelación y el ACF parcial no sugieren una estructura en los residuos.

resid1 <- residuals(fit1)
resid2 <- residuals(fit2)
par(mfrow = c(2, 2))
acf(resid1, lag.max = 20, main = "ACF residuals. Local trend model")
pacf(resid1, lag.max = 20, main = "PACF residuals. Local trend model")
acf(resid2, lag.max = 20, main = "ACF residuals. ARIMA(0,1,0) with drift")
pacf(resid2, lag.max = 20, main = "PACF residuals. ARIMA(0,1,0) with drift")

ACF-PACF

Como IrishStat sugirió, también es aconsejable verificar la presencia de valores atípicos. Se detectan dos valores atípicos aditivos utilizando el paquete tsoutliers.

require(tsoutliers)
resol <- tsoutliers(x, types = c("AO", "LS", "TC"), 
  remove.method = "bottom-up", 
  args.tsmethod = list(ic="bic", allowdrift=TRUE))
resol
#ARIMA(0,1,0) with drift         
#Coefficients:
#         drift        AO2       AO51
#      736.4821  -3819.000  -4500.000
#s.e.  220.6171   1167.396   1167.397
#sigma^2 estimated as 2725622:  log likelihood=-485.05
#AIC=978.09   AICc=978.88   BIC=986.2
#Outliers:
#  type ind time coefhat  tstat
#1   AO   2    2   -3819 -3.271
#2   AO  51   51   -4500 -3.855

Mirando el ACF, podemos decir que, al nivel de significancia del 5%, los residuos también son aleatorios en este modelo.

par(mfrow = c(2, 1))
acf(residuals(resol$fit), lag.max = 20, main = "ACF residuals. ARIMA with additive outliers")
pacf(residuals(resol$fit), lag.max = 20, main = "PACF residuals. ARIMA with additive outliers")

ingrese la descripción de la imagen aquí

En este caso, la presencia de posibles valores atípicos no parece distorsionar el rendimiento de los modelos. Esto está respaldado por la prueba de Jarque-Bera para la normalidad; el nulo de normalidad en los residuos de los modelos iniciales ( fit1, fit2) no se rechaza al nivel de significancia del 5%.

jarque.bera.test(resid1)[[1]]
# X-squared = 0.3221, df = 2, p-value = 0.8513
jarque.bera.test(resid2)[[1]]
#X-squared = 0.426, df = 2, p-value = 0.8082

Edición 2 (gráfico de residuos y sus valores) Así es como se ven los residuos:

derechos residuales de autor

Y estos son sus valores en formato csv:

0;6.9205
-0.9571;-2942.4821
2.6108;4695.5179
-0.5453;-2065.4821
-0.2026;-771.4821
0.1242;-208.4821
0.1909;-120.4821
-0.0179;-535.4821
0.1449;-153.4821
0.484;526.5179
1.0748;1722.5179
0.3818;299.5179
-1.061;-2434.4821
0.0996;156.5179
0.4805;663.5179
0.8969;1463.5179
0.4111;461.5179
-1.0595;-2361.4821
0.0098;65.5179
0.5605;920.5179
0.8835;1481.5179
0.7669;1232.5179
1.4024;2593.5179
0.3785;473.5179
-1.1032;-2233.4821
-0.3813;-492.4821
2.2745;4642.5179
0.2935;154.5179
-0.1138;-165.4821
-0.8035;-1455.4821
-1.2982;-2321.4821
-1.9463;-3565.4821
-0.1648;62.5179
-0.1022;-253.4821
0.9755;1882.5179
-0.5662;-1418.4821
-0.0176;28.5179
0.5;928.5179
0.6831;1189.5179
-1.8889;-3964.4821
0.3896;1136.5179
-1.3113;-2799.4821
-0.9934;-1800.4821
-0.4085;-748.4821
1.2902;2482.5179
-0.0996;-657.4821
0.5539;981.5179
2.0007;3725.5179
1.0227;1490.5179
0.27;263.5179
-2.336;-4736.4821
1.8994;4263.5179
0.1301;-236.4821
-0.0892;-236.4821
-0.1148;-236.4821
-1.1207;-2236.4821
0.4801;1163.5179
javlacalle
fuente
1
¿Verificó que los residuales de sus modelos fueron aleatorios, es decir, sin valores atípicos o estructura ARIMA que se requiere para que la prueba de significancia de los coeficientes estimados sea significativa? Tenga en cuenta que si tiene valores atípicos en los residuos, el ACF no tiene sentido ya que la variación de error hinchado conduce a un ACF subestimado. ¿Puede proporcionar gráficos de los errores que prueban / sugieren aleatoriedad? De lo contrario, sus conclusiones sobre los residuos no correlacionados pueden ser posiblemente falsas.
IrishStat
Definitivamente, un análisis completo requiere la inspección de los residuos. Limité mi respuesta para nombrar algunas herramientas que se pueden utilizar para aplicar las pruebas sobre las que "pronosticador" estaba preguntando e ilustraron su uso. Me alegra ver que le interesan más detalles, he editado mi pregunta.
javlacalle
Había pedido un diagrama de tiempo de los residuos. ¿Puede proporcionarlos y también proporcionar los residuos mismos para que pueda procesarlos con AUTOBOX para confirmar que están libres de estructura comprobada? No se prefiere la prueba JB cuando se prueban pulsos, cambios de nivel, pulsos estacionales y / o tendencias de tiempo local en un conjunto de datos, aunque la presencia de este tipo de estructura podría desencadenar el rechazo de la suposición de normalidad. La idea de que si el nulo no se rechaza es una prueba de su aceptación puede ser peligroso. Ver unc.edu/~jbhill/tsay.pdf
IrishStat
1
Gracias. Envié los 57 residuos y 5 de ellos fueron marcados tentativamente como excepcionales. En orden de importancia (51,3,27,52 y 48). Su gráfico soporta visualmente estos puntos. Los errores resultantes no muestran violación de aleatoriedad y, posteriormente, no hay ACF significativa. Para ajustar sus valores observados para acomodar la detección de anomalías, utilice lo siguiente: + [X1 (T)] [(- 4494.5)]: PULSE 51 + [X2 (T)] [(+ 4937.5)]: PULSE 3 + [X3 (T)] [(+ 4884.5)]: PULSE 27 + [X4 (T)] [(+ 4505.5)]: PULSE 52 + [X5 (T)] [(+ 3967.5)]: PULSE 48
IrishStat
1
@B_Miner Por lo general, comenzará observando la función de autocorrelación de los residuos. Si las autocorrelaciones son significativas y grandes para pedidos grandes (es decir, el ACF no decae exponencialmente a cero), entonces puede considerar aplicar una prueba de raíz unitaria en los residuos. Si el análisis de los residuos sugiere que hay una raíz unitaria, eso significaría que probablemente debería tomar las primeras diferencias dos veces en los datos originales (es decir, tomar las diferencias nuevamente en las series diferenciadas).
javlacalle
4

Con respecto a sus datos no estacionales ... Las tendencias pueden ser de dos formas y (t) = y (t − 1) + θ0 (A) Tendencia estocástica o Y (t) = a + bx1 + cx2 (B) Determinista Tendencia, etc., donde x1 = 1,2,3,4 .... tyx2 = 0,0,0,0,0,1,2,3,4 por lo tanto, una tendencia se aplica a las observaciones 1 −t y una segunda tendencia se aplica a las observaciones 6 a t.

Su serie no estacional contenía 29 valores. Usé AUTOBOX, una pieza de software que había ayudado a desarrollar de forma totalmente automática. AUTOBOX es un procedimiento transparente, ya que detalla cada paso en el proceso de modelado. Aquí se presenta un gráfico de la serie / valores ajustados / pronósticos ingrese la descripción de la imagen aquí. El uso de AUTOBOX para formar un modelo de tipo A condujo a lo siguiente ingrese la descripción de la imagen aquí. La ecuación se presenta nuevamente aquí ingrese la descripción de la imagen aquí. Las estadísticas del modelo son ingrese la descripción de la imagen aquí. Una gráfica de los residuales está aquí ingrese la descripción de la imagen aquímientras que la tabla de valores pronosticados está aquí ingrese la descripción de la imagen aquí. La restricción de AUTOBOX a un modelo de tipo B llevó a AUTOBOX a detectar una tendencia creciente en el período 14 :. ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquíingrese la descripción de la imagen aquí!ingrese la descripción de la imagen aquíingrese la descripción de la imagen aquíingrese la descripción de la imagen aquí

En términos de comparación de modelos: dado que el número de observaciones ajustadas difiere (26 y 29 respectivamente) no es posible utilizar métricas estándar (es decir, r-cuadrado, error estándar dev, AIC, etc.) para determinar la dominancia, aunque en este caso el guiño sería vaya a A. Los residuos de A son mejores debido a la estructura AR (2). Los pronósticos de B son un poco agresivos, mientras que el patrón de los pronósticos de A es más intuitivo. Uno podría retener 4 observaciones y evaluar la precisión del pronóstico para un pronóstico de 1 período de 4 orígenes distintos (25, 26, 27 y 28).

IrishStat
fuente
La estadística irlandesa apesta a una excelente respuesta. He leído que algunos combinarían otras tendencias estocásticas y deterministas que son yt = y (t-1) + a + bt = ct? sería útil
pronosticador
La forma del modelo y (t) = B0 + B1 * t + a (t) [thetha / phi] se colapsa si phi es decir [1-B] ya que borrar las fracciones esencialmente diferenciando la variable t produciendo una constante colisión con B0. En otras palabras, la estructura ARIMA unida con indicadores de tiempo puede crear estragos. El modelo que especificó es estimable pero definitivamente no es un enfoque preferido (¡quizás falta de endogeneidad!). Alguien más que lea esto puede comentar podría ayudar en esto. No es un subconjunto adecuado de una función de transferencia i.imgur.com/dv4bAts.png
IrishStat