¿Cómo encontrar cuándo un gráfico alcanza un pico y mesetas?

9

Esto puede sonar muy básico, pero tengo este problema: tengo una cola de datos con un tamaño de ventana de 300. Se agregan nuevos datos en un extremo, los valores antiguos se eliminan del otro extremo.

Espero que los datos de la cola se mantengan más o menos consistentes, por ejemplo: 10,12,15,10,20, luego empiezo a aumentar bruscamente: 15,10,20,22,25,26,28,30,32 ... todo el camino hasta 150 más o menos. Allí los datos pueden fluctuar un poco, luego bajarían con una pendiente similar (120,118,116,115 ...) hasta 20 más o menos.

Estoy tratando de identificar el punto de inflexión en esta serie de datos mediante programación, pero mi código detecta picos con más frecuencia de lo que me gustaría. ¿Cómo puedo identificar cuándo el gráfico está subiendo, cuándo ha alcanzado un punto de inflexión definitivo y cuándo comienza a caer? ¿Debo tratar de ver la tasa de cambio de la tasa de cambio?

Alex Stone
fuente
Si tiene un sentido razonable de la pendiente y la altura del pico, ¿podría tener en cuenta tanto la altura como el tiempo que lleva escalando, así como la pendiente actual? ¿Cuántos datos previos sobre picos tiene, y podría usarlos para ajustar un modelo?
Karl
2
Cualquiera sea el método, tendrá que definir adecuadamente qué es un pico y qué es una meseta. ¿Son dos valores 'altos' consecutivos un pico o una meseta? ¿Qué tal cinco? Puede parecer que algunos métodos no necesitan esta información, pero esto está oculto detrás de escena. Como siempre, se trata de definir adecuadamente su problema y optimizar sus parámetros (y / o algoritmo).
Nick Sabbe

Respuestas:

2

Si sabe que este es el patrón exacto que puede esperar, puede buscar este patrón exacto, pero luego perderá otros patrones. Entonces. Si sabe que el pico será 150, entonces podría buscar 2 o 3 o 4 o (por muchos) valores consecutivos de 150. Pero usted dice "más o menos", ¿qué tan grande es el "más o menos"? Quizás el pico se define como "3 valores consecutivos por encima de 130" o tal vez sea "3 de 5 valores consecutivos por encima de 140". Eso es para que usted decida.

Por otro lado, si solo está buscando algún programa general para detectar picos, bueno, eso se ha examinado. Existen varios métodos de suavizado (por ejemplo, loess, splines de varios tipos, promedios móviles, etc.). No es un campo en el que soy experto, pero hay mucha literatura sobre esto.

Peter Flom - Restablece a Monica
fuente
4

Mire en SiZer (cruces ZERo significativos ... o pendientes, no recuerdo), aunque podría decirse que es más una herramienta de sección transversal que de series de tiempo. La idea es suavizar los datos en diferentes anchos de banda (que varían en unos tres órdenes de magnitud) y aplicar algunas pruebas locales para ver si la pendiente de una regresión local es significativamente positiva o negativa (o indecisa). Produce una imagen convincente que lo ayudará a determinar qué características hay. (Me sorprende que no haya implementación de R, solo Matlab).

StasK
fuente