¿Cómo caracterizar el cambio brusco?

13

Esta pregunta puede ser demasiado básica. Para una tendencia temporal de un dato, me gustaría averiguar el punto donde ocurre un cambio "abrupto". Por ejemplo, en la primera figura que se muestra a continuación, me gustaría averiguar el punto de cambio utilizando algún método estadístico. Y me gustaría aplicar dicho método en algunos otros datos cuyo punto de cambio no es obvio (como la segunda figura). Entonces, ¿hay un método común para tal propósito?

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

usuario2230101
fuente
3
El término "punto de inflexión" tiene un significado particular que no creo que se aplique a un cambio repentino de nivel (ya sea hacia arriba o hacia abajo). También usa la frase 'punto de cambio', y creo que esa es probablemente una mejor opción. Por favor, no piense que esto es "demasiado básico"; incluso las preguntas básicas son bienvenidas sin necesidad de disculpas, y esta pregunta no es remotamente básica.
Glen_b -Reinstate Monica
Gracias. He cambiado el "punto de inflexión" a "punto de cambio" en la pregunta.
user2230101

Respuestas:

11

Si las observaciones de sus datos de series temporales están correlacionadas con las observaciones inmediatamente anteriores, el documento de Chen y Liu (1993) puede interesarle. Describe un método para detectar cambios de nivel y cambios temporales en el marco de modelos de series temporales de promedio móvil autorregresivo.[1]

[1]: Chen, C. y Liu, LM. (1993),
"Estimación conjunta de parámetros del modelo y efectos atípicos en series temporales",
Journal of the American Statistical Association , 88 : 421, 284-297

javlacalle
fuente
+1 Intenté (pero no pude) recordar lo suficiente sobre este documento para localizarlo. Es una buena referencia.
Glen_b -Reinstate Monica
6

Este problema en las estadísticas se conoce como la detección de eventos temporales (univariante). La idea más simple es usar un promedio móvil y una desviación estándar. Cualquier lectura que esté "fuera de" 3 desviaciones estándar (regla general) se considera un "evento". Por supuesto, hay modelos más avanzados que usan HMM o Regresión. Aquí hay un resumen introductorio del campo .

usuario1669710
fuente
55
¡Esta es la única publicación de acceso público en toda la Web que incluye la frase "Detección de eventos temporales univariantes"! ¿Cuál es su fuente para este término?
whuber
Lo siento si fue confuso. La detección de eventos es un término más común, y temporal a veces se usa por separado. Univariante no se usa comúnmente ya que los enfoques suelen ser multivariados, pero es su caso especial.
user1669710
1
editó la respuesta para incorporar su comentario @whuber
user1669710
@ ser1669710 Gracias. Esto es lo que estoy buscando. Parece que la media móvil no puede resolver mi problema. Necesito mirar el modelo más complicado.
user2230101
Me gustaría aprender más sobre esta detección de eventos temporales. Las diapositivas que publicó son agradables, pero me preguntaba si tiene el enlace a un documento de revisión que describe el campo un poco más formalmente.
aaragon
1

Aquí hay una manera rápida y fácil de hacerlo. Cree un montón de funciones de salto como esta: para puntos de corte candidatos . Ahora use la regresión por pasos para seleccionar el mejor modelo con el como posibles predictores. En su primer ejemplo, suponiendo que seleccione dos predictores, obtendrá uno para con un coeficiente positivo igual al tamaño del salto hacia arriba, y uno para con un coeficiente negativo igual al tamaño de El salto hacia abajo. Debe decidir con qué precisión desea dividir los tiempos de salto del candidato, x 1 < x 2 < < x m J i J a p r i l J d e c e m b e r x i

Ji={0x<xi1xxi
x1<x2<<xmJiJaprilJdecemberxi, por ejemplo, uno por mes, uno por quincena, uno por semana, uno por día.

Hay soluciones más elegantes y exigentes que implican regresión no lineal, donde utiliza un modelo con y y estima y como parámetros. Es un poco complicado de configurar.J 2 x 1 x 2J1J2x1x2

Russ Lenth
fuente
1
PD: @ user1669710 y publiqué respuestas simultáneamente. He votado a favor porque obviamente está mejor investigado. Pero lo dejo aquí, ya que es una alternativa que funciona y es fácil de implementar.
Russ Lenth
1
Debido a que utiliza la regresión por pasos y emplea muchas variables candidatas, este procedimiento parece sospechoso. ¿Dónde se ha estudiado y qué propiedades tiene? ¿Cómo se compara a otros Changepoint métodos?
whuber
@whuber, mi punto exactamente. Por eso voté por la otra respuesta. No se comparará favorablemente si tiene un conjunto muy granular de valores de puntos de cambio. Y puede que ni siquiera se compare favorablemente de lo contrario. Solo lo estoy publicando como un método ad hoc , y creo que lo presenté como tal. Pero creo que un método como este promete ser una buena forma de obtener valores iniciales para el método no lineal.
Russ Lenth
La idea subyace en algunos de los métodos de cambio más efectivos que he encontrado, pero el uso de la regresión por pasos en particular me hace sospechar (aunque no estoy seguro) de que este método podría fallar incluso para producir puntos de partida razonables para que otros métodos mejoren. Es por eso que tengo curiosidad por saber si incluso se ha estudiado.
whuber
Creo que habría pocos problemas con la selección de todos los subconjuntos, siempre y cuando realmente haya un número específico de saltos (digamos dos), ya que encontraríamos los dos saltos que mejor explican los datos. Otros métodos de selección podrían ser problemáticos, tal como lo son en otras situaciones. Creo que depende de lo importante que sea obtener la mejor respuesta, versus una buena respuesta, versus una respuesta rápida. No todos los problemas son iguales, ni todos los clientes. La mejor respuesta del mundo es un fracaso total si no puede explicarlo.
Russ Lenth
1

Hay un problema relacionado de dividir una serie o secuencia en hechizos con valores idealmente constantes. Consulte ¿Cómo puedo agrupar datos numéricos en "paréntesis" formando naturalmente? (por ejemplo, ingresos)

No es exactamente el mismo problema, ya que la pregunta no excluye hechizos con deriva lenta en ninguna o todas las direcciones, pero sin cambios abruptos.

Una respuesta más directa es decir que estamos buscando grandes saltos, por lo que el único problema real es definir el salto. La primera idea es entonces observar las primeras diferencias entre los valores vecinos. Ni siquiera está claro que necesite refinar eso eliminando primero el ruido, ya que si los saltos no se pueden distinguir de las diferencias de ruido, seguramente no pueden ser bruscos. Por otro lado, el interrogador evidentemente quiere un cambio abrupto que incluya un cambio escalonado y escalonado, por lo que parece necesario algún criterio, como la varianza o el rango dentro de ventanas de longitud fija.

Nick Cox
fuente
1

El área de estadísticas que está buscando es el análisis de puntos de cambio. Hay un sitio web aquí que le dará una visión general de la zona y también tienen una página para el software.

Si es Rusuario, le recomendaría el changepointpaquete para cambios en la media y el strucchangepaquete para cambios en la regresión. Si quieres ser bayesiano, entonces el bcppaquete también es bueno.

En general, debe elegir un umbral que indique la intensidad de los cambios que está buscando. Por supuesto, hay opciones de umbral que las personas recomiendan en ciertas situaciones y usted puede usar niveles de confianza asintóticos o bootstrapping para obtener confianza también.

adunaico
fuente
1
El OP identificó dos ejemplos, uno de los cuales llamaría un paso y el otro una rampa, aunque siempre hay margen para discutir sobre las palabras. Vea también mi respuesta aquí. ¿Cómo hacen frente estos métodos a las rampas? ¿Tienen un modelo tácito o explícito de cambio escalonado?
Nick Cox
Gracias por la pregunta Nick. En general, depende de la longitud de la rampa. Si es una rampa corta, entonces se trata como 1 cambio, si la rampa es más larga, a menudo los métodos de punto de cambio identificarán 2 cambios, 1 al comienzo de la rampa y 1 al final. Obviamente, esto depende del modelo subyacente que asumas.
adunaic
1

Este problema de inferencia tiene muchos nombres, incluidos puntos de cambio, puntos de cambio, puntos de ruptura, regresión de línea discontinua, regresión de barra discontinua, regresión bilineal, regresión lineal por partes, regresión lineal local, regresión segmentada y modelos de discontinuidad.

Aquí hay una descripción general de los paquetes de puntos de cambio con pros / contras y ejemplos trabajados. Si conoce el número de puntos de cambio a priori, consulte el mcppaquete. Primero, simulemos los datos:

df = data.frame(x = seq(1, 12, by = 0.1))
df$y = c(rnorm(21, 0, 5), rnorm(80, 180, 5), rnorm(10, 20, 5))

Para su primer problema, son tres segmentos de solo intercepción:

model = list(
  y ~ 1,  # Intercept
  ~ 1,  # etc...
  ~ 1
)
library(mcp)
fit = mcp(model, df, par_x = "x")

Podemos trazar el ajuste resultante:

plot(fit)

ingrese la descripción de la imagen aquí

Aquí, los puntos de cambio están muy bien definidos (estrechos). Resumamos el ajuste para ver sus ubicaciones inferidas ( cp_1y cp_2):

summary(fit)

Family: gaussian(link = 'identity')
Iterations: 9000 from 3 chains.
Segments:
  1: y ~ 1
  2: y ~ 1 ~ 1
  3: y ~ 1 ~ 1

Population-level parameters:
    name   mean lower upper Rhat n.eff
    cp_1   3.05   3.0   3.1    1  6445
    cp_2  11.05  11.0  11.1    1  6401
   int_1   0.14  -1.9   2.1    1  5979
   int_2 179.86 178.8 180.9    1  6659
   int_3  22.76  19.8  25.5    1  5906
 sigma_1   4.68   4.1   5.3    1  5282

Puede hacer modelos mucho más complicados mcp, incluido el modelado de autorregresión de enésimo orden (útil para series de tiempo), etc. Descargo de responsabilidad: soy el desarrollador de mcp.

Jonas Lindeløv
fuente