Évaluation des pics dans les séries temporelles des données de signal cellulaire

9

Je mesure l'existence d'une réponse dans les mesures du signal cellulaire. J'ai d'abord appliqué un algorithme de lissage (Hanning) à la série temporelle de données, puis détecté les pics. Ce que je reçois est ceci: série temporelle de réponse du signal cellulaire

Si je voulais rendre la détection de la réponse un peu plus objective que "oui, vous voyez une augmentation de la baisse continue", quelle serait la meilleure approche? Est-ce pour obtenir la distance des pics à partir d'une ligne de base déterminée par régression linéaire?

(Je suis un codeur python et je n'ai presque aucune compréhension des statistiques)

Je vous remercie

Radek
la source
4
Je ne pense pas qu'il existe "la meilleure approche". Il existe de nombreuses façons d'analyser ou de signaler les pics dans les séries chronologiques. Votre question ne donne aucun indice pour comprendre ce que vous pourriez rechercher. Peut-être que vous consultez des articles dans votre domaine, pour des conseils ou des repères.
ttnphns
Je ne sais pas quelles informations fournir pour vous donner les indices. Fondamentalement, vous avez un graphique qui a une tendance à la baisse (vous obtenez moins de réponse d'une cellule avec le temps) et quelque part au milieu, vous pourriez voir une augmentation de la sortie. C'est ça. Pensez-vous que c'est essentiellement à moi de dire subjectivement que dire 10% d'augmentation de réponse = ce que je recherche?
Radek
1
En supposant que vous voyez parfois le comportement comme indiqué, et parfois juste une diminution continue (environ), vous aurez de bien meilleures chances d'obtenir une réponse raisonnable ici si vous remplacez un grand graphique par 6 à 10 petits, où la moitié a cette augmentation et l'autre moitié ne le fait pas.
AVB
Peut-il avoir plus d'un maximum local (bump)?
Emre
1
pourquoi ne postez-vous pas vos données et je prendrai une fissure à ce sujet. Le filtrage présomptif que vous et d'autres avez suggéré a des effets secondaires. Si vous voulez une façon objective de gérer cela, je pourrais peut-être vous donner quelques conseils. Mais tout commence par les données et non par présomption!
IrishStat

Réponses:

2

Il semble donc que d'après votre commentaire du 25 octobre, vous souhaitiez trouver et caractériser algorithmiquement deux caractéristiques principales: la décroissance de la réponse initiale suivie d'un cycle de réponse accrue et la décroissance subséquente. Je suppose que les données sont observées à des intervalles de temps discrets.

Voici ce que j'essaierais:

  1. Utilisez une routine comme numpy.ma.polyfit pour ajuster, disons, un polynôme du 4ème degré à travers vos données. Cela devrait expliquer la baisse initiale suivie de la hausse / baisse, mais atténuer les fluctuations nombreuses mais mineures. Espérons que ce degré de polynôme soit suffisamment flexible pour s'adapter à d'autres séries similaires. Le principal objectif, je pense, serait d'obtenir une fonction qui représente le motif principal que vous recherchez.
  2. Utilisez des routines Python pour calculer la dérivée de la fonction polynomiale adaptée aux données. Des exemples de routines sont scipy.misc.derivative et numpy.diff. Vous recherchez les valeurs temporelles où la dérivée 1 est nulle, indiquant un possible min ou max local de la fonction. Un deuxième test dérivé pourrait être utilisé pour confirmer quel point correspond à un min ou un max. Vraisemblablement, vous aurez trois de ces points si le graphique que vous avez montré est représentatif. Notez que le projet sage pourrait être très utile ici.
  3. À ce stade, vous aurez les valeurs de temps associées à

    une. le début de la décroissance initiale

    b. le début de la reprise

    c. le début de la deuxième désintégration

Vous pouvez ensuite faire ce que vous voulez analytiquement pour évaluer les changements.

Il peut être préférable de laisser les données parler d'elles-mêmes: sur plusieurs séries, lorsque vous appliquez cette méthode, quel est le changement de taille typique à la reprise, quand se produit-il généralement dans la période de décroissance et combien de temps dure-t-il? Et à quoi ressemble la distribution de cette reprise en termes de lieu, de taille et de durée? Connaissant ces statistiques, vous pouvez mieux caractériser une reprise particulière comme étant dans la tolérance, en ce qui concerne le moment où elle se produit ainsi que sa taille et sa durée. La clé de ma compréhension serait d'identifier facilement ces changements se produisent. Le reste de ce que j'ai décrit est simple à calculer.

Josh Hemann
la source
4
Les polynômes ne fonctionneront pas avec ces données à moins que vous n'atteigniez un degré tel qu'ils menacent d'introduire des pics parasites.
whuber
Je devrais peut-être clarifier ma réponse selon laquelle il doit toujours appliquer la fonction de Hanning et ensuite faire l'ajustement polynomial. La fenêtre Hanning devra peut-être être modifiée pour obtenir une fonction plus fluide. Ou dites-vous qu'un polynôme de faible degré ne fonctionnera pas pour les données lissées?
Josh Hemann
5
Un polynôme de faible degré ne fonctionnera certainement pas, Josh. Vous avez besoin d'un lisseur local - pensez à un noyau lisse ou à certains types de splines - et il ne doit pas être un polynôme, qui a des propriétés terribles. (Les polynômes peuvent introduire d'énormes pics parasites entre ce qui semble autrement être des séries de données bien comportées.)
whuber
f(x)=f(x0)+(xx0)f(x0)+(xx0)22!f(x0)+...
3
Merci d'avoir clarifié ce point, @Sameer. Je suis d'accord qu'un ajustement polynomial local à faible degré pourrait être efficace et je ne voulais pas impliquer le contraire dans mon commentaire précédent (qui voulait que le «polynôme» soit compris comme un ajustement global ). Quant à savoir si c'est "le meilleur", cependant, je suis d'accord avec un commentaire de ttnphns sur la question d'origine: tout dépend. Je m'attendrais à ce que les ajustements quadratiques locaux avec une série dense de données se rapprochent étroitement des lissages du noyau gaussien, ce qui nous donne une approche. Un autre sens du «meilleur» est le BLUP du krigeage, qui peut être de type spline.
whuber
1

Voici quelques idées, mais je décolle de la tête qui pourrait bien fonctionner ...

Dérivés: si vous prenez votre tableau et soustrayez les éléments les uns des autres pour obtenir un tableau d'un point de moins, mais c'est la première dérivée. Si vous lissez maintenant cela et recherchez le changement de signe, cela peut détecter votre bosse.

Moyennes mobiles: Peut-être que l'utilisation de 2 moyennes mobiles décalées (exponentielles ou fenêtrées) pourrait révéler la grosse bosse tout en ignorant la petite. Fondamentalement, la largeur de la moyenne mobile de la petite fenêtre doit être supérieure à la largeur des bosses que vous souhaitez ignorer. L'EMA plus large doit être plus large mais pas trop large pour détecter la bosse.

Vous recherchez quand ils traversent et soustraient le décalage (fenêtre / 2) et c'est une estimation où se trouve votre bosse. http://www.stockopedia.com/content/trading-the-golden-cross-does-it-really-work-69694/

Modèles linéaires: Faites une série de modèles linéaires de largeur suffisante qui font plusieurs petites bosses de large, disons 100 points. Maintenant, bouclez à travers l'ensemble de données générant des régressions linéaires sur la variable X. Regardez simplement le coefficient de X et voyez où le grand changement de signe s'est produit. C'est une grosse bosse.

Ce qui précède est juste que la conjecture est de ma part et il y a probablement de meilleures façons de le faire.

Chris
la source