Suche nach Muster von Ereignissen in einer Zeitreihe

8

Ich habe ein Zeitverlaufsexperiment, das 8 Behandlungsgruppen von 12 Fischen für 24 Stunden mit Beobachtungen in Intervallen von 5 Sekunden folgt. Unter den durchgeführten Messungen ist, wie weit sich jeder Fisch zwischen den Beobachtungen bewegt (in mm). Die 24 Stunden sind in 1 Dunkelperiode und 1 Hellperiode unterteilt.

Hier ist eine grafische Darstellung der Bewegungen der 12 einzelnen Fische in der Behandlungsgruppe H für die erste Stunde der Dunkelperiode:

Kontrollgruppe während der 1. Stunde der Dunkelheit

Sie können sehen, dass einige Fische lange Zeiträume der Inaktivität haben, einige kurze Zeiträume und einige während dieses bestimmten Fensters keine . Ich muss die Daten aller 12 Fische in der Behandlungsgruppe so kombinieren, dass die Länge und Häufigkeit der Ruheperioden während der gesamten Dunkelperiode und der gesamten Lichtperiode ermittelt werden. Ich muss dies für jede Behandlungsgruppe tun. Dann muss ich die Unterschiede zwischen ihren Ruheperiodenlängen und Frequenzen vergleichen.

Ich bin kein Statistik-Mädchen und ich bin komplett auf See. Das Problem ähnelt für mich der Sequenzausrichtung (meinem bioinfomatischen Hintergrund), daher denke ich an Hidden Markov-Modelle, aber dies kann weit von der Basis entfernt sein. Könnte jemand einen guten Ansatz für dieses Problem und vielleicht ein kleines Beispiel in R vorschlagen?

Vielen Dank!

dnagirl
quelle
1
Dies scheint mehrere Unterprobleme zu haben. Zunächst müssen Sie die Inaktivitätsperioden für jeden Fisch ermitteln und extrahieren. Eine Person kann dies tun, indem sie nur hinschaut. Wenn Sie jedoch viele Daten haben, möchten Sie dies möglicherweise automatisch tun. Zweitens müssen Sie sie für alle Fische in einer Gruppe kombinieren. Drittens müssen Sie sie gruppenübergreifend vergleichen. Mit welchen von diesen brauchen Sie Hilfe? Da Sie HMMs erwähnt haben, vermute ich das erste. Wenn ja, wäre eine triviale Methode nur, ein Intervall zu finden, in dem Bewegung = 0. Warum würde es nicht funktionieren? Wenn es in der Ruhezeit eine kurze Spitze gibt, zählen Sie diese als eine lange Periode
SheldonCooper
oder zwei kurze Perioden? Wenn die Bewegung nicht 0 ist, sondern sehr nahe bei 0, möchten Sie das als Pause zählen?
SheldonCooper
@SheldonCooper: Es ist das erste Problem, mit dem ich Probleme habe. Minimale Aktivität sollte nicht als Unterbrechung der Ruhe gelten. Probe c93 hat also 1 (oder möglicherweise 2) Inaktivitätsperioden, Probe c87 hat 4. Ich habe darüber nachgedacht, die Aktivitätsskala basierend auf einzelnen Maxima auf 1 zu normalisieren, damit die Änderung der Aktivität eher proportional als absolut ist. Ich hatte auch den Gedanken, dass eine Fourier-Analyse der geeignete Ansatz sein könnte, da diese Beobachtungen ungefähr zyklisch erscheinen.
Dnagirl
1
Ich denke, wir brauchen eine formale Definition von "Inaktivität" oder "Ruhe". Es ist in Ordnung, wenn Sie angeben, was der Fisch tut, und nicht, wie die Parzellen aussehen (wir können sie später übersetzen), aber es muss formal sein. Wenn eine formale Definition genau das ist, bei dem Sie Hilfe benötigen, sollten Sie Folgendes beachten: 1. Ich glaube, es gibt keine Standarddefinition für "Inaktivität in Zeitreihen", die Sie einfach verwenden könnten. 2. Es könnte nützlich sein, mehr Kontext über Ihre Experimente zu wissen, um eine Definition zu erhalten.
SheldonCooper
3. In der Biologie akzeptieren Menschen oft einfache und unkomplizierte Definitionen wie "Inaktivität ist jede kontinuierliche Periode, in der die Bewegung weniger als 0,1 beträgt, möglicherweise unterbrochen durch Spitzen von nicht mehr als 2 und eine Dauer von nicht mehr als 20 Sekunden, die mindestens einen Abstand haben 5 Minuten auseinander ". Sicher, diese Definition ist spröde und die Schwellenwerte scheinen willkürlich zu sein (was ist, wenn sie einen Abstand von 4 Minuten und 55 Sekunden haben?), Aber der Hauptzweck besteht darin, die Verzerrung zu beseitigen, die eine Person bei der Klassifizierung von Ruhezeiten mit gesundem Menschenverstand haben könnte.
SheldonCooper

Antworten:

1

Ich denke, eine HMM-basierte Analyse könnte für Sie hilfreich sein. Da Sie wissen, dass Sie nach einer Unterscheidung zwischen Ruhe und Bewegung suchen, können Sie einfach ein 2-Zustands-Modell postulieren. Für HMMs müssen Sie die Emissionswahrscheinlichkeit für jeden Zustand angeben. Mein erster Versuch wäre, ein Exponential (oder ein Gamma?) Für die Ruhephase zu verwenden (da es von unten durch Null und eine Normalverteilung für den anderen Zustand begrenzt ist (Sie sollten die Anfangsparameter auf einen vernünftigen Wert einstellen) kann dann die posteriore Zustandsverteilung zusammen mit den Maximum-Likelihood-Schätzungen für Ihre Parameter berechnen. Die posteriore Zustandssequenz kann Ihnen die geschätzten Längen der Ruhe- und Aktivitätsperioden geben (zählen Sie einfach die Anzahl der aufeinanderfolgenden Zustände). Sie können sogar die Dunkel- / Hellperiode als Kovariate in das Modell.

Dieses http://cran.r-project.org/web/packages/depmixS4/index.html ist ein großartiges Paket für HMMs. Diese http://cran.r-project.org/web/packages/depmixS4/vignettes/depmixS4.pdf Vignette enthält sehr nützliche Informationen zu ihrer Anwendung und zur Verwendung von Einschränkungen und Kovariaten auch bei HMMs.

Ein Problem, das ich sehe, ist, dass Sie mehrere Fische haben. Sie sollten zunächst für jeden Fisch ein HMM separat anbringen. Vielleicht könnten Sie Fische kombinieren, wenn Sie die Aktivität irgendwie "normalisieren" könnten, so dass sie die gleichen Emissionswahrscheinlichkeitsparameter liefern könnten. Oder Sie könnten die Fischnummer als Kovariate verwenden.

Ein Beispielcode:

require(depmixS4)
set.seed(1)
mod <- depmix( activity~1, data=yourdata, nstates=2,
               family=gaussian() );
fitted <- fit(mod)

Aber es gibt viele, viele Möglichkeiten, sehen Sie sich die obigen Links an!

Viel Glück bei Ihrem Projekt!

thias
quelle