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 gtemp
serie temporal del astsa
paquete se ve así:
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 1
en 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:
pred = predict(fit, n.ahead = 50)
ts.plot(gtemp, pred$pred, lty = c(1,3), col=c(5,2))
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 forecast
paquete, 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)
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 drift
en 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:
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.
fuente
Respuestas:
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.
fuente
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?