Cómo ajustar un modelo para una serie temporal que contiene valores atípicos

9

He ajustado el modelo ARIMA (5,1,2) usando la auto.arima()función en R y al mirar en orden podemos decir que este no es el mejor modelo para pronosticar. Si existen valores atípicos en la serie de datos, ¿cuál es el método para ajustar un modelo a dichos datos?

Antonio
fuente
¿Tiene alguna información / teoría sobre qué puntos son valores atípicos? No puede simplemente suponer que los puntos "lejanos" son atípicos, pero si sabe que algo especial sucedió en una fecha particular y ese evento afectaría sus datos, puede agregar una variable indicadora a su modelo para esa fecha. Vea el comentario de IrishStat, a continuación.
Wayne
Si sucedió algo especial en 1 o 2 semanas en ese período y afecta al modelo, entonces el modelo puede ser incorrecto. Como no hay otra razón como la variación estacional, supuse que los valores atípicos son la causa que afecta al modelo.
Anthony

Respuestas:

7

Michael Chernick te señala en la dirección correcta. También miraría el trabajo de Ruey Tsay, ya que se agrega a este conjunto de conocimientos. Ver más aquí .

No puede competir contra los algoritmos informáticos automatizados de hoy. Analizan muchas formas de abordar las series de tiempo que no ha considerado y que a menudo no está documentado en ningún documento o libro. Cuando uno pregunta cómo hacer un ANOVA, se puede esperar una respuesta precisa cuando se compara con diferentes algoritmos. Cuando uno hace la pregunta de cómo hago el reconocimiento de patrones, muchas respuestas son posibles ya que están involucradas las heurísticas. Su pregunta implica el uso de heurística.

La mejor manera de ajustar un modelo ARIMA, si existen valores atípicos en los datos, es evaluar los posibles estados de la naturaleza y seleccionar el enfoque que se considera óptimo para un conjunto de datos en particular. Un posible estado de la naturaleza es que el proceso ARIMA es la fuente principal de variación explicada. En este caso, uno "identificaría tentativamente" el proceso ARIMA a través de la función acf / pacf y luego examinaría los residuos para detectar posibles valores atípicos. Los valores atípicos pueden ser Pulsos, es decir, eventos únicos O pulsos estacionales que se evidencian por valores atípicos sistemáticos a alguna frecuencia (digamos, 12 para datos mensuales). Un tercer tipo de valores atípicos es donde uno tiene un conjunto contiguo de pulsos, cada uno con el mismo signo y magnitud, esto se llama un cambio de paso o nivel. Después de examinar los residuos del proceso ARIMA tentativo, se puede agregar tentativamente la estructura determinista identificada empíricamente para crear un modelo combinado tentativo. Tampoco si la fuente principal de variación es uno de los 4 tipos o "valores atípicos", entonces sería mejor identificarlos ab initio (primero) y luego usar los residuos de este "modelo de regresión" para identificar la estructura estocástica (ARIMA) . Ahora, estas dos estrategias alternativas se vuelven un poco más complicadas cuando uno tiene un "problema" en el que los parámetros ARIMA cambian con el tiempo o la varianza del error cambia con el tiempo debido a una serie de posibles causas, posiblemente la necesidad de mínimos cuadrados ponderados o una transformación de potencia como registros / recíprocos, etc. Otra complicación / oportunidad es cómo y cuándo formar la contribución de las series de predictores sugeridas por el usuario para formar un modelo perfectamente integrado que incorpore memoria, causales y series ficticias identificadas empíricamente. Este problema se agrava aún más cuando uno tiene series de tendencias mejor modeladas con series de indicadores de la forma0,0,0,0,1,2,3,4,... , o combinaciones de series de cambio de nivel como . Es posible que desee probar y escribir dichos procedimientos en R, pero la vida es corta. Me gustaría resolver su problema y demostrar en este caso cómo funciona el procedimiento, publique los datos o envíelos a [email protected]1,2,3,4,5,...n0,0,0,0,0,0,1,1,1,1,1


Comentario adicional después de recibir / analizar los datos / datos diarios para un tipo de cambio extranjero / 18 = 765 valores a partir del 1/1/2007

ingrese la descripción de la imagen aquí

Los datos tenían un acf de:

ingrese la descripción de la imagen aquí

Al identificar un modelo de arma de la forma y una serie de valores atípicos, el acf de los residuos indica aleatoriedad ya que los valores de acf son muy pequeños. AUTOBOX identificó una serie de valores atípicos:(1,1,0)(0,0,0)

ingrese la descripción de la imagen aquí

El modelo final:

ingrese la descripción de la imagen aquí

incluyó la necesidad de un aumento de estabilización de varianza a la TSAY donde se identificaron e incorporaron cambios de varianza en los residuos. El problema que tuvo con su ejecución automática fue que el procedimiento que estaba utilizando, como un contador, cree los datos en lugar de cuestionarlos a través de la detección de intervención (también conocida como detección de valores atípicos). He publicado un análisis completo aquí .

ingrese la descripción de la imagen aquí

IrishStat
fuente
@IrishStat: En el futuro, ¿puedes usar las opciones de formato? (la clave correcta para insertar enlaces es ctrl-l, no ctrl-c).
usuario603
@ user603 Simplemente he estado usando la opción agregar un gráfico. No sé a qué te refieres con ctrl-l o cntrl-c. Quizás pueda ayudarme, comuníquese conmigo en dave / @ / autobox.com y quizás pueda caminar / hablarme sobre esto.
IrishStat
@IrishStat: mira aquí .
usuario603
@ user603 OK, pero todavía no sé a qué te refieres con ctrl-l y cntrl-c. Estaba usando la transferencia de imágenes donde puedo insertar una imagen. Si escribo cntrl-g, solo aparece una pantalla emergente en blanco.
IrishStat
@IrishStat: está bien, el método del enlace es incluso mejor que ctrl-l :). PD: mi objetivo era ayudarlo a hacer sus respuestas / comentarios más atractivos, cosméticamente, ocultando estos enlaces largos que cortan el flujo del texto. El enlace te explica cómo lograrlo.
usuario603
6

No hay una contraparte robusta lista para usar para la función arima en R (todavía) ; En caso de que aparezca, aparecerá aquí . Tal vez una alternativa es reducir las observaciones que están fuera de la norma con respecto a una regla de detección de valores atípicos univariantes simples, pero tampoco veo paquetes listos para usar para ejecutar la regresión ARMA ponderada. Otra alternativa posible sería entonces Winsorize los puntos periféricos:

#parameters
para     <- list(ar=c(0.6,-0.48), ma=c(-0.22,0.24))
#original series
y1 <- y0 <- arima.sim(n=100, para, sd=sqrt(0.1796)) 
#outliers
out      <- sample(1:100, 20)               
#contaminated series
y1[out]  <- rnorm(20, 10, 1)                
plot( y1, type="l")
lines(y0, col="red")

ejemplo de contaminación aleatoria

#winsorized series
y2      <- rep(NA, length(y1))
a1      <- (y1-median(y1)) / mad(y1)
a2      <- which(abs(a1)>3)
y2[-a2] <- y1[-a2]
for(i in 2:length(y2)){
   if(is.na(y2[i])){ y2[i] <- y2[i-1] }
}       

serie limpia

usuario603
fuente
Un procedimiento basado en reglas funciona para esta serie, pero habiendo examinado los datos de series de tiempo durante casi 42 años, puede no funcionar en general. 1,9,1,9 donde el séptimo valor es excepcional O en general una serie que tiene una estructura autoproyectiva fuerte de alguna forma desconocida O una serie que tiene 1,2,1,1,1,2,1,1,1, 2,1,20,1,2,1,2,1,1,1,2,1,2,2,19,2,1,1,2,1,2,1,1,2,2, 2,21 una serie mensual que no tiene pulsos PERO tiene un DUMMAS DE TEMPORADA no especificado. Detectando 12,24 y 36 como MALO estaría tirando al bebé con el agua del baño.
IrishStat
Todo lo que dices es cierto, es decir, estabas proporcionando una curita que ayudaría con la herida si 1) la serie fuera estacionaria, lo que supone, entre otras cosas, que no hay cambios de nivel, ni tendencias, ni estructura ARIMA; y 2) la serie tiene que ser no estacional o ha sido previamente desestacionalizada; . Según mi experiencia, tales suposiciones casi nunca se cumplen y los usuarios ignoran sus advertencias mientras tratan de luchar con series de tiempo que tienen "imperfecciones". Mis comentarios aquí no están destinados a ser discutidores sino más bien esclarecedores (¡para algunos!)
IrishStat
@IrishStat, el OP actualizó su pregunta y declaró que no hay estacionalidad.
usuario603
¿Eres Christophe?
IrishStat
2

Existe una literatura considerable sobre modelos robustos de series de tiempo. Martin y Yohai se encuentran entre los principales contribuyentes. Su trabajo se remonta a la década de 1980. Hice algo de trabajo para detectar valores atípicos en series de tiempo, pero Martin fue realmente uno de los muchos contribuyentes tanto a la detección de valores atípicos como a la estimación de parámetros en presencia de valores atípicos o residuos de cola pesada en las series de tiempo.

  • Aquí hay un enlace a un artículo de encuesta sobre el tema con una lista de más de 100 referencias. Incluso incluye mi artículo JASA de 1982.
  • Aquí hay una tesis doctoral de 2000 (pdf) que cubre la teoría, los métodos y las aplicaciones del análisis robusto de series de tiempo e incluye una buena bibliografía.
  • Aquí hay un enlace sobre software que incluye algunas herramientas robustas de series de tiempo.
Michael R. Chernick
fuente
¿Cuál es el software utilizado para pronósticos robustos? ¿Es adecuado para series univariadas?
Anthony
@Anthony Esa es una muy buena pregunta. No he hecho ningún modelo robusto de series de tiempo. Martin fundó la compañía llamada Insightful (en realidad tenían varios cambios de nombre) que comercializaban SPlus. Estoy bastante seguro de que incluyó métodos robustos en el software SPlus. Probablemente ahora haya una versión en R. Lo comprobaré. Aquí hay un artículo de Wikipedia que incluye la historia de SPlus. en.wikipedia.org/wiki/S-PLUS
Michael R. Chernick
@Anthony Aquí hay una fuente proporcionada por Rob Hyndman sobre lo que está disponible en R en el análisis de series de tiempo. Incluye lo que está en CRAN y cubre una amplia variedad de métodos, incluido el filtrado robusto. cran.r-project.org/web/views/TimeSeries.html
Michael R. Chernick
2

¿Cuál es el propósito de su modelo para pronosticar o analizar el historial? Si esto no es para pronosticar, y sabe que estos son los valores atípicos, simplemente agregue la variable ficticia, que es 1 en esas fechas y 0 en otras fechas. De esta manera, los coeficientes ficticios se ocuparán de los valores atípicos y podrá interpretar los otros coeficientes del modelo.

Si esto es para pronosticar, entonces tiene que hacerse dos preguntas: ¿volverán a ocurrir estos valores atípicos? si lo hicieran, ¿tengo que darles cuenta?

Por ejemplo, supongamos que sus series de datos tienen valores atípicos cuando los hermanos Lehman cayeron. es un evento que no tienes forma de predecir, obviamente, pero no puedes simplemente ignorarlo porque algo así sucederá en el futuro. si arroja un valor ficticio para valores atípicos, elimina efectivamente la incertidumbre de este evento de la variación de error. su pronóstico subestimará el riesgo de la cola; quizás no sea algo bueno para la gestión del riesgo. sin embargo, si va a producir la previsión de referencia de ventas, el ficticio funcionará, porque no está interesado en la cola, está interesado en los escenarios más probables, por lo que no tiene que tener en cuenta el evento impredecible para este propósito.

Por lo tanto, el propósito de su modelo afecta la forma en que trata los valores atípicos.

Aksakal
fuente