He estado jugando con algunas formas de clasificar regiones contiguas de un histograma como: 1) pico, 2) valle o 3) bit intermedio.
El umbral global me ha funcionado mínimamente bien hasta ahora, pero estoy pensando que un enfoque mejor será clasificar los picos/valles por un umbral de cambio, por ejemplo el derivado .
He aproximado la derivada en cada punto del histograma a partir de sus puntos vecinos. A continuación, defino las regiones extremas como todo aquello cuya derivada sea inferior a un umbral determinado (por ejemplo, las "partes planas"). Esto parece clasificar generalmente los extremos (picos + valles), y los puntos intermedios, bien para mi aplicación.
Me encuentro con un pequeño problema a la hora de clasificar las regiones extremas en picos o valles. Tomar la derivada de 2º orden es problemático cuando los datos son inestables. La prueba de concavidad de la segunda derivada no será coherente en un pico o valle moderadamente agitado.
De ahí se derivan dos preguntas:
- ¿Estoy en el buen camino, o hay algún otro enfoque de la clasificación pico/valle que debería considerar antes de continuar por este camino?
- Una solución a este problema parece ser
polyfit
osmooth
sobre los datos para generar una función suavemente diferenciable, pero al examinar este enfoque observo que los ajustes polinómicos de orden cada vez más alto son cada vez más propensos a mostrar un comportamiento ondulante no muy diferente de la fluctuación original en los datos. Entonces, ¿cuál es un buen método para evitar este problema? Por ejemplo, ¿cómo clasificar toda una región extrema como pico o valle?