Bewertung von Peaks in Zeitreihen von Zellsignaldaten

9

Ich messe das Vorhandensein einer Reaktion bei Zellsignalmessungen. Ich habe zuerst einen Glättungsalgorithmus (Hanning) auf die Zeitreihen der Daten angewendet und dann Spitzen erkannt. Was ich bekomme ist folgendes: Zeitreihe der Zellensignalantwort

Wenn ich die Erkennung der Antwort etwas objektiver gestalten wollte als "Ja, Sie sehen eine Erhöhung des kontinuierlichen Abfalls", was wäre der beste Ansatz? Soll der Abstand der Peaks von einer durch lineare Regression bestimmten Basislinie ermittelt werden?

(Ich bin ein Python-Codierer und habe fast kein Verständnis für Statistik)

Vielen Dank

Radek
quelle
4
Ich glaube nicht, dass es "den besten Ansatz" gibt. Es gibt viele Möglichkeiten, Peaks in Zeitreihen zu analysieren oder zu melden. Ihre Frage gibt keinen Hinweis darauf, wonach Sie suchen. Vielleicht konsultieren Sie Artikel in Ihrem Bereich, um Hinweise oder Benchmarks zu erhalten.
ttnphns
Ich weiß nicht, welche Informationen ich geben soll, um Ihnen die Hinweise zu geben. Grundsätzlich haben Sie ein Diagramm mit einem Abwärtstrend (Sie erhalten im Laufe der Zeit weniger Antworten von einer Zelle) und irgendwo in der Mitte sehen Sie möglicherweise einen Anstieg der Ausgabe. Das ist es. Denken Sie, dass es im Grunde an mir liegt, subjektiv zu sagen, dass 10% mehr Antwort = was ich will?
Radek
1
Angenommen, Sie sehen das Verhalten manchmal wie gezeigt und manchmal nur kontinuierlich (ungefähr), haben Sie viel bessere Chancen, hier eine vernünftige Antwort zu erhalten, wenn Sie ein großes Diagramm durch 6-10 kleine ersetzen, wobei eine Hälfte vorhanden ist diese Zunahme und die andere Hälfte nicht.
AVB
Kann es mehr als ein lokales Maximum (Beule) haben?
Emre
1
Warum postest du nicht deine Daten und ich werde mich darum kümmern. Die von Ihnen und anderen vorgeschlagene vermutete Filterung hat Nebenwirkungen. Wenn Sie einen objektiven Weg suchen, um damit umzugehen, kann ich Ihnen möglicherweise einige Hinweise geben. Aber alles beginnt mit den Daten, nicht mit Vermutungen!
IrishStat

Antworten:

2

Aus Ihrem Kommentar vom 25. Oktober geht hervor, dass Sie daran interessiert sind, zwei Hauptmerkmale algorithmisch zu finden und zu charakterisieren: den anfänglichen Antwortabfall, gefolgt von einem Zyklus erhöhter Antwort und anschließendem Abfall. Ich gehe davon aus, dass die Daten in diskreten Zeitintervallen beobachtet werden.

Folgendes würde ich versuchen:

  1. Verwenden Sie eine Routine wie numpy.ma.polyfit , um beispielsweise ein Polynom 4. Grades durch Ihre Daten zu passen. Dies sollte den anfänglichen Abfall, gefolgt vom Anstieg / Abfall, berücksichtigen, aber die zahlreichen, aber geringfügigen Schwankungen ausgleichen. Hoffentlich wäre dieser Polynomgrad flexibel genug, um gut zu anderen, ähnlichen Reihen zu passen. Ich denke, das Hauptziel wäre es, eine Funktion zu erhalten, die das Hauptmuster berücksichtigt, nach dem Sie suchen.
  2. Verwenden Sie Python-Routinen, um die Ableitung der Polynomfunktion zu berechnen, die an die Daten angepasst ist. Beispielroutinen sind scipy.misc.derivative und numpy.diff. Sie suchen nach den Zeitwerten, bei denen die 1. Ableitung Null ist, was auf ein mögliches lokales Min oder Max der Funktion hinweist. Ein zweiter Ableitungstest könnte verwendet werden, um zu bestätigen, welcher Punkt einem min oder max entspricht. Vermutlich haben Sie drei solcher Punkte, wenn das von Ihnen gezeigte Diagramm repräsentativ ist. Beachten Sie, dass das Salbei-Projekt hier sehr wertvoll sein kann.
  3. Zu diesem Zeitpunkt sind Ihnen die Zeitwerte zugeordnet

    ein. der Beginn des anfänglichen Zerfalls

    b. der Beginn des Aufschwungs

    c. der Beginn des zweiten Zerfalls

Sie können dann analytisch tun, was Sie möchten, um die Änderungen zu bewerten.

Es ist möglicherweise am besten, die Daten für sich selbst sprechen zu lassen: Wenn Sie diese Methode über mehrere Serien hinweg anwenden, wie groß ist die typische Größenänderung beim Aufschwung, wann tritt sie normalerweise in der Abklingzeit auf und wie lange dauert sie? Und wie sieht die Verteilung dieses Aufschwungs in Bezug auf wo, wie groß und wie lange aus? Wenn Sie diese Statistiken kennen, können Sie einen bestimmten Aufschwung besser als innerhalb der Toleranz liegend charakterisieren, in Bezug auf den Zeitpunkt, zu dem er auftritt, sowie seine Größe und Dauer. Der Schlüssel meines Verständnisses wäre, leicht zu identifizieren, wo diese Änderungen auftreten. Der Rest von dem, was ich beschrieben habe, ist einfach zu berechnen.

Josh Hemann
quelle
4
Polynome funktionieren mit diesen Daten nur, wenn Sie den Grad so groß machen, dass sie zu falschen Spitzen führen können.
whuber
Vielleicht sollte ich meine Antwort klarstellen, dass er die Hanning-Funktion noch anwenden und dann die Polynomanpassung durchführen muss. Das Hanning-Fenster muss möglicherweise geändert werden, um eine reibungslosere Funktion zu erhalten. Oder sagen Sie, dass ein Polynom niedrigen Grades für die geglätteten Daten nicht funktioniert?
Josh Hemann
5
Ein Polynom niedrigen Grades wird definitiv nicht funktionieren, Josh. Sie benötigen einen lokalen Glätter - denken Sie an einen glatten Kernel oder bestimmte Arten von Splines - und es muss kein Polynom sein, das schreckliche Eigenschaften hat. (Polynome können unechte, riesige Peaks zwischen scheinbar gut erzogenen Datenreihen
einführen
@whuber, obwohl ich der Meinung bin, dass die globale Anpassung eines Polynoms wahrscheinlich eine schlechte Idee wäre, ist die Taylor-Erweiterung einer Funktion um einen Punkt ist ein Polynom niedrigen Grades, und daher sollten die Koeffizienten aus einer lokalen quadratischen Anpassung der Schätzung der ersten Ableitung entsprechen. Wäre die lokale quadratische Regression nicht der einfachste, wenn nicht der "beste" Weg? f(x)=f(x0)+(xx0)f(x0)+(xx0)22!f(x0)+...
Sameer
3
Vielen Dank für die Klarstellung dieses Punktes, @Sameer. Ich stimme zu, dass eine lokale Polynomanpassung mit niedrigem Grad effektiv sein könnte, und ich wollte in meinem vorherigen Kommentar nicht das Gegenteil implizieren (was bedeutete, dass "Polynom" als globale Anpassung verstanden werden sollte). Ob es jedoch "am besten" ist, muss ich einem Kommentar von ttnphns zur ursprünglichen Frage zustimmen: Es hängt alles davon ab. Ich würde erwarten, dass lokale quadratische Anpassungen mit dichten Datenreihen den Gaußschen Kernel-Glättungen sehr nahe kommen, was uns einen Ansatz gibt. Ein anderes Gefühl von "am besten" ist das BLUP des Kriging, das spline-artig sein kann.
whuber
1

Hier sind einige Ideen, aber ich bin völlig außer mir, die vielleicht funktionieren ...

Ableitungen: Wenn Sie Ihr Array nehmen und die Elemente voneinander subtrahieren, um ein Array mit einem Punkt weniger zu erhalten, ist dies jedoch die erste Ableitung. Wenn Sie das jetzt glätten und nach dem Vorzeichenwechsel suchen, kann dies Ihre Beule erkennen.

Gleitende Durchschnitte: Wenn Sie möglicherweise 2 verzögerte (exponentielle oder fenstergesteuerte) gleitende Durchschnitte verwenden, wird die große Beule sichtbar, während der kleine ignoriert wird. Grundsätzlich muss die Breite des gleitenden Durchschnitts des kleineren Fensters größer sein als die Breite der Unebenheiten, die Sie ignorieren möchten. Die breitere EMA muss breiter, aber nicht zu breit sein, um die Beule zu erkennen.

Sie suchen, wann sie die Verzögerung kreuzen und subtrahieren (Fenster / 2), und das ist eine Schätzung, wo sich Ihre Beule befindet. http://www.stockopedia.com/content/trading-the-golden-cross-does-it-really-work-69694/

Lineare Modelle: Machen Sie eine Reihe von linearen Modellen mit ausreichender Breite, die mehrere kleine Unebenheiten breit sind, sagen wir 100 Punkte. Durchlaufen Sie nun den Datensatz und erzeugen Sie lineare Regressionen für die X-Variable. Schauen Sie sich einfach den Koeffizienten von X an und sehen Sie, wo der große Vorzeichenwechsel stattgefunden hat. Das ist eine große Beule.

Das Obige ist nur eine Vermutung von meiner Seite und es gibt wahrscheinlich bessere Möglichkeiten, dies zu tun.

Chris
quelle