3 votos

Ciclicidad en series temporales

La alta cantidad de ciclicidad en la serie temporal de lynx hace que sea muy difícil modelarla con ets y auto.arima.

library(forecast)
library(fpp2)

data(lynx)

train <- subset(lynx, end = length(lynx) - 20) # mantener los últimos 20 años

ets_mod <- ets(train)
arima_mod <- auto.arima(train)

fc_ets <- forecast(ets_mod, h=20)
fc_arima <- forecast(arima_mod, h=20)
fc_naive <- naive(train, h=20)

accuracy(fc_ets, lynx)
accuracy(fc_arima, lynx) # ganador
accuracy(fc_naive, lynx)

autoplot(fc_arima) + autolayer(tail(lynx,20)) # ajuste pobre

imagen

Preguntas:

  1. ¿Hay otros métodos que debería probar en el paquete forecast?

  2. ¿Cómo cambio la leyenda en autoplot() y autolayer() para mostrar "Pronóstico ARIMA" y "Real"?

5voto

Senseful Puntos 116

Este es un problema clásico de series temporales y hay muchos artículos al respecto (ver Tong JRSSA 1977 para una discusión temprana).

Puedes transformar la serie (ponte lambda = 0.5 por ejemplo) y obtendrás resultados ARIMA ligeramente mejores. Pero el problema principal es que los ciclos tienen una longitud impredecible, por lo que cualquier modelo que produzcas luchará por capturar los ciclos aperiodicos. Por eso, los intervalos de predicción de ARIMA son amplios y se acercan a valores constantes (para cubrir la posibilidad de picos o valles).

Necesitarás usar un modelo no lineal para obtener algo mejor que eso. Ver Kajitani et al JF 2005 para un modelo de ese tipo.

Para responder a tu segunda pregunta:

autoplot(train) + 
  autolayer(fc_arima, series="ARIMA Forecast") + 
  autolayer(tail(lynx,20), series="Actual")

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