Trazado de valores pronosticados en series de tiempo ARIMA en R

10

Es probable que haya más de un malentendido serio en esta pregunta, pero no está destinado a hacer los cálculos correctos, sino a motivar el aprendizaje de series de tiempo con un cierto enfoque en mente.

Al tratar de comprender la aplicación de series de tiempo, parece que la tendencia a la baja de los datos hace que la predicción de valores futuros sea inverosímil. Por ejemplo, la gtempserie temporal del astsapaquete se ve así:

ingrese la descripción de la imagen aquí

La tendencia al alza en las últimas décadas debe tenerse en cuenta al trazar los valores futuros pronosticados.

Sin embargo, para evaluar las fluctuaciones de la serie temporal, los datos deben convertirse en una serie temporal estacionaria. Si lo representan como un proceso ARIMA con diferenciación (supongo que esto se lleva a cabo debido a la media 1en order = c(-, 1, -)) como en:

require(tseries); require(astsa)
fit = arima(gtemp, order = c(4, 1, 1))

y luego trato de predecir valores futuros ( años), extraño el componente de tendencia al alza:50

pred = predict(fit, n.ahead = 50)
ts.plot(gtemp, pred$pred, lty = c(1,3), col=c(5,2))

ingrese la descripción de la imagen aquí

Sin necesariamente tocar la optimización real de los parámetros particulares de ARIMA, ¿cómo puedo recuperar la tendencia al alza en la parte predicha de la trama?

Sospecho que hay un OLS "oculto" en alguna parte, lo que explicaría esta no estacionariedad?

Me he encontrado con el concepto de drift, que se puede incorporar en la Arima()función del forecastpaquete, lo que genera una trama plausible:

par(mfrow = c(1,2))
fit1 = Arima(gtemp, order = c(4,1,1), 
             include.drift = T)
future = forecast(fit1, h = 50)
plot(future)
fit2 = Arima(gtemp, order = c(4,1,1), 
             include.drift = F)
future2 = forecast(fit2, h = 50)
plot(future2)

ingrese la descripción de la imagen aquí

que es más opaco en cuanto a su proceso computacional. Apunto a algún tipo de comprensión de cómo se incorpora la tendencia en los cálculos de la trama. ¿Es uno de los problemas que no hay driften arima()(minúsculas)?


En comparación, utilizando el conjunto de datos AirPassengers, el número previsto de pasajeros más allá del punto final del conjunto de datos se representa gráficamente teniendo en cuenta esta tendencia al alza:

ingrese la descripción de la imagen aquí

El codigo es:

fit = arima(log(AirPassengers), c(0, 1, 1), seasonal = list(order = c(0, 1, 1), period = 12))
pred <- predict(fit, n.ahead = 10*12)
ts.plot(AirPassengers,exp(pred$pred), log = "y", lty = c(1,3))

renderizando una trama que tiene sentido.

Antoni Parellada
fuente
1
Diría que si cree que tiene una serie en la que la tendencia ha cambiado con el tiempo, los modelos ARIMA pueden no ser la mejor manera de abordar la predicción de ellos. En ausencia de conocimiento de la materia (que podría conducir a mejores modelos), me inclinaría a mirar modelos de espacio de estado; en variantes particulares del modelo estructural básico para algo como esto. Muchas discusiones sobre modelos de espacio de estado pueden ser difíciles de seguir, pero los libros y documentos de Andrew Harvey son bastante legibles ( por ejemplo, el libro Pronóstico, Modelos de series de tiempo estructurales y el Filtro de Kalman es bastante bueno). ...
ctd
ctd ... Hay algunos otros autores que lo hacen razonablemente bien, pero incluso los mejores lo hacen un poco más complicado de lo que realmente necesita ser para un principiante.
Glen_b -Reinstale a Monica el
Gracias, @Glen_b. Solo trato de obtener un don para las series de tiempo, y como en muchos temas de matemáticas, la falta de preámbulos motivadores es mortal. Todas las series de tiempo que realmente nos interesan parecen tener una tendencia ascendente o descendente: poblaciones, republicanos, mercado de valores, temperaturas globales. Y entiendo que desea deshacerse de las tendencias (puede ser por un segundo) para ver patrones cíclicos y estacionales. Pero el empalme de los hallazgos con la tendencia general de hacer predicciones está implícito o no se aborda como un objetivo.
Antoni Parellada
Los comentarios de Rob Hyndman aquí son relevantes. Puedo volver y ampliar un poco eso.
Glen_b -Reinstala a Monica el
La publicación del blog de Rob J. Hyndman "Constantes y modelos ARIMA en R" es probablemente todo lo que necesita saber. Me gustaría saber tu opinión una vez que explores la publicación del blog.
Richard Hardy

Respuestas:

1

Es por eso que no debe hacer ARIMA ni nada sobre datos no estacionarios.

Responda a una pregunta por qué el pronóstico de ARIMA se está volviendo plano es bastante obvio después de mirar la ecuación de ARIMA y una de las suposiciones. Esta es una explicación simplificada, no la trate como una prueba matemática.



yt=βyt1+α+ϵ
β|β|1βyt1=0yt=const=α

new.data=ytyt1new.data=yt/yt11

 require(tseries)
 require(forecast)
 require(astsa)
 dif<-diff(gtemp)
 fit = auto.arima(dif)
 pred = predict(fit, n.ahead = 50)
 ts.plot(dif, pred$pred, lty = c(1,3), col=c(5,2))
 gtemp_pred<-gtemp[length(gtemp)]
 for(i in 1:length(pred$pred)){
   gtemp_pred[i+1]<-gtemp_pred[i]+pred$pred[i]
 }
 plot(c(gtemp,gtemp_pred),type="l")

ingrese la descripción de la imagen aquí

mbt
fuente
α
ααα
OKAY. Tendré que jugar un poco con su código para ver qué está tratando de ilustrar en relación con la ecuación ts. No he trabajado con ts, y ha pasado un tiempo desde que publiqué la pregunta.
Antoni Parellada
Después de jugar un poco con el código, veo lo que está pasando. ¿Puede incluir los coeficientes de ajuste, que están AR1 = 0.257; MA = - 0.7854, en la ecuación del modelo ARIMA para apreciar completamente el proceso de generación de la línea inclinada de la cola proyectada o prevista al final de su diagrama?
Antoni Parellada
y^t=ipβiyti+jqγjϵtj+α+ϵt
y^t=βyt1+γϵt1+α+ϵt
β=0.257γ=0.7854α=0.0064