10 votos

Evaluar los picos en series temporales de datos de señales celulares

Estoy midiendo la existencia de respuesta en las mediciones de señales celulares. Lo que hice fue aplicar primero un algoritmo de suavizado (Hanning) a las series temporales de datos, y luego detectar los picos. Lo que obtengo es esto: time series of cell signal response

Si quisiera hacer la detección de la respuesta un poco más objetiva que "sí se ve un aumento en la caída continua", ¿cuál sería el mejor enfoque? ¿Es obtener la distancia de los picos de una línea de base determinada por una regresión lineal?

(Soy un codificador de pitones y casi no entiendo las estadísticas)

Gracias.

4 votos

No creo que exista "el mejor enfoque". Hay muchas formas de analizar o informar sobre los picos en las series temporales. Tu pregunta no da ninguna pista para entender lo que podrías estar buscando. Tal vez debas consultar artículos en tu campo, para obtener pistas o puntos de referencia.

0 votos

No sé qué información proporcionar para darle las pistas. Básicamente tienes una gráfica que tiene una tendencia a la baja (se obtiene menos respuesta de una célula a medida que pasa el tiempo) y en algún lugar en el medio podrías ver un aumento en la producción. Eso es todo. ¿Crees que básicamente depende de mí decir subjetivamente que, por ejemplo, un aumento del 10% en la respuesta = lo que busco?

1 votos

Asumiendo que a veces se ve el comportamiento como se muestra, y a veces sólo la disminución continua (aproximadamente), tendrá muchas más posibilidades de obtener una respuesta razonable aquí si reemplaza un gráfico grande por 6-10 pequeños, donde una mitad tiene este aumento y la otra mitad no.

2voto

christy Puntos 51

Por su comentario del 25 de octubre, parece que está interesado en encontrar y caracterizar algorítmicamente dos rasgos principales: el decaimiento de la respuesta inicial seguido de un ciclo de aumento de la respuesta y posterior decaimiento. Supongo que los datos se observan en intervalos de tiempo discretos.

Esto es lo que yo probaría:

  1. Utilice una rutina como numpy.ma.polyfit para ajustar, digamos, un polinomio de 4º grado a través de sus datos. Esto debería dar cuenta de la caída inicial seguida de la subida/bajada, pero suavizar las numerosas pero menores fluctuaciones. Es de esperar que este grado de polinomio sea lo suficientemente flexible como para ajustarse a otras series similares. Creo que el objetivo principal es conseguir una función que tenga en cuenta el patrón principal que está buscando.
  2. Utilice las rutinas de Python para calcular la derivada de la función polinómica ajustada a los datos. Las rutinas de ejemplo son scipy.misc.derivative y numpy.diff. Se buscan los valores de tiempo en los que la primera derivada es cero, lo que indica un posible mínimo o máximo local de la función. A prueba de la segunda derivada podría utilizarse para confirmar qué punto corresponde a un mínimo o a un máximo. Es de suponer que tendrás tres de esos puntos si el gráfico que has mostrado es representativo. Tenga en cuenta que el proyecto sage podría ser muy valioso aquí.
  3. En este punto tendrás los valores de tiempo asociados a

    a. el comienzo de la decadencia inicial

    b. el inicio de la fase ascendente

    c. el inicio de la segunda decadencia

A continuación, puedes hacer lo que quieras de forma analítica para evaluar los cambios.

Tal vez sea mejor dejar que los datos hablen por sí mismos: en múltiples series, cuando se aplica este método, ¿cuál es el cambio de tamaño típico en el repunte, cuándo suele producirse en el periodo de decaimiento y cuánto dura? ¿Y cómo es la distribución de este repunte en términos de dónde, cuán grande y cuánto tiempo? Conociendo estas estadísticas, se puede caracterizar mejor una subida concreta como si estuviera dentro de la tolerancia, con respecto al momento en que se produce, así como a su tamaño y duración. En mi opinión, la clave sería identificar fácilmente donde estos cambios se están produciendo. El resto de lo que he descrito es fácil de calcular.

4 votos

Los polinomios no funcionarán con estos datos, a menos que el grado sea tan grande que amenace con introducir picos espurios.

0 votos

Tal vez debería aclarar mi respuesta de que todavía tiene que aplicar la función de Hanning y luego hacer el ajuste polinómico. Es posible que haya que cambiar la ventana de Hanning para obtener una función más suave. ¿O está diciendo que un polinomio de bajo grado no funcionará para los datos suavizados?

5 votos

Un polinomio de bajo grado definitivamente no funcionará, Josh. Necesitas un suavizador local - piensa en un suavizado de núcleo o ciertos tipos de splines - y necesita no para ser un polinomio, que tiene propiedades terribles. (Los polinomios pueden introducir picos espurios y enormes entre lo que, de otro modo, parecen ser series de datos que se comportan bien).

1voto

Chris Puntos 116

Estas son algunas ideas que se me ocurren y que pueden funcionar...

Derivados: Si tomas tu matriz y restas los elementos entre sí para obtener una matriz con un punto menos, pero esa es la primera derivada. Si ahora suavizas eso y buscas el cambio de signo, eso puede detectar tu bache.

Medias móviles: Quizás el uso de 2 medias móviles retardadas (exponenciales o de ventana) podría revelar el gran bache mientras se ignora el pequeño. Básicamente, la anchura de la media móvil de la ventana más pequeña debe ser mayor que la anchura de los baches que desea ignorar. La EMA más amplia debe ser más ancha pero no demasiado para detectar el bache.

Buscas cuando se cruzan y les restas el desfase (ventana/2) y eso es una estimación de dónde está tu bache. http://www.stockopedia.com/content/trading-the-golden-cross-does-it-really-work-69694/

Modelos lineales: Haz una serie de modelos lineales de suficiente amplitud que tengan varios bultos de ancho, digamos 100 puntos. Ahora haz un bucle a través del conjunto de datos generando regresiones lineales sobre la variable X. Mira el coeficiente de X y observa dónde se produjo el gran cambio de signo. Eso es un gran bache.

Lo anterior es sólo una conjetura por mi parte y probablemente haya mejores formas de hacerlo.

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