Ich bin kürzlich bei Gelman et al. Auf Gaußsche Prozesse gestoßen. (2013), und ich versuche, mehr über ihre mögliche Anwendung zur Verwendung bei der Eingabe von Zeitreihendaten zu erfahren. Die interessierenden Daten sind eine einzelne variable Zeitreihe der Herzfrequenz einer Person, die unter Verwendung eines Fotoplethysmogramms (PPG; ein optischer Sensor, der am Ende des Fingers einer Person angebracht ist und Änderungen des Blutvolumens misst) erfasst wird.
Das Problem ist, dass wir bestimmte Datenabschnitte haben, die unordentlich sind. Bestehende Bearbeitungsstrategien für den Umgang mit diesen Artefakten wurden entwickelt, sie wurden jedoch weitgehend auf der Grundlage von Daten optimiert, die von EKG-Sensoren gesammelt wurden. Die langsamwellige Form des PPG macht ihre Anwendung auf unsere erhaltenen Daten manchmal etwas umständlich.
Kurz gesagt, hier ist ein Beispiel für einen isolierten, unordentlichen Abschnitt, der von einem guten Signal der R Shiny App umgeben ist, die ich erstellt habe, um die manuelle Bearbeitung unserer Daten zu verbessern:
Die hellgraue Linie repräsentiert das ursprüngliche Signal (von 2 kH auf 100 Hz heruntergesampelt). Die durchgezogene schwarze Linie mit den roten Punkten ist eine grafische Darstellung der Interbeat-Intervalle (die Zeit in Sekunden zwischen aufeinanderfolgenden Herzschlägen), die über die Zeit aufgetragen wurden. Die Interbeat-Intervalle sind die Hauptvariable bei jeder Analyse dieser Daten.
Zum Beispiel können wir anhand der Interbeat-Intervalle einer Person ihre Herzfrequenzvariabilität beurteilen. Leider neigen die meisten Bearbeitungsstrategien dazu, die Variabilität zu verringern. Darüber hinaus gibt es bestimmte Aufgaben, bei denen es wahrscheinlicher ist, dass diese Artefakte vorhanden sind (aufgrund der Bewegung der Teilnehmer), was bedeutet, dass ich diese unordentlichen Abschnitte nicht einfach zum Entfernen markieren und sie als zufällig fehlend behandeln konnte.
Der Vorteil ist, dass wir viel über die Eigenschaften der Herzfrequenz wissen. Beispielsweise liegen Erwachsene in Ruhe im Allgemeinen zwischen 60 und 100 BPM. Wir wissen auch, dass die Herzfrequenz in Abhängigkeit vom Atmungszyklus variiert, der selbst einen bekannten Bereich wahrscheinlicher Frequenzen in Ruhe aufweist. Schließlich wissen wir, dass es einen Niederfrequenzzyklus gibt, der die Variabilität der Herzfrequenz beeinflusst (vermutlich beeinflusst durch eine Kombination von sympathischen und parasympathischen Einflüssen auf die Herzfrequenz).
Der oben abgebildete relativ kleine Abschnitt mit "schlechten Daten" ist eigentlich nicht mein Hauptanliegen. Ich habe einige ziemlich genaue saisonale Interpolationsansätze entwickelt, die in solchen Einzelfällen gut zu funktionieren scheinen.
Meine Probleme treten mehr auf, wenn ich mich mit Datenabschnitten befasse, die regelmäßig schlechtes Signal mit dem guten vermischt haben:
Wie ich aus Gelman et al. (2013) scheint es möglich zu sein, verschiedene Kovarianzfunktionen für Gaußsche Prozesse zu spezifizieren. Diese Kovarianzfunktionen können anhand der beobachteten Daten und einigermaßen bekannter früherer Verteilungen für Messungen des Herz- und Atemleistungsvolumens von Erwachsenen (oder Kindern) ermittelt werden.
Angenommen, ich habe eine beobachtete Herzfrequenz ( ), könnte ich einen Gaußschen Prozess wie folgt spezifizieren, der von dieser durchschnittlichen Herzfrequenz bestimmt wird (und bitte lassen Sie mich wissen, wenn ich hier nicht rechnen kann, da dies meine ist beim ersten Versuch, diese Modelle anzuwenden):
wo
Dabei ist meine Abtastrate und mein Zeitindex.
Basierend auf dem Beispiel von Gelman et al. (2013) sehen in ihrem Text vor, dass es möglich scheint, diese Kovarianzfunktion zu modifizieren, um Variationen über bestimmte Zeiträume zu ermöglichen. Für mich möchte ich Variationen in den Schätzungen von innerhalb des Atemzyklus und innerhalb des oben erwähnten niederfrequenten Herzfrequenzvariabilitätszyklus berücksichtigen.
Um mein erstes Ziel zu erreichen, würde dies nach meinem Verständnis die Angabe eines Gaußschen Prozesses und einer Kovarianzfunktion für die Atemfrequenz ( ) und eines Gaußschen Prozesses , der Merkmale beider Prozesse in die Kovarianzfunktion einbezieht:
wo
und...
wo
Wenn ich an diesem Punkt anhalten würde, wäre mein Modell ungefähr so:
EDITS / UPDATES :
Zunächst ist eine korrektere Spezifikation meiner drei Gaußschen Prozesse:
Beginnend mit dem quadratischen exponentiellen Kovarianzkern:
Als nächstes eine Kovarianzfunktion, die ein quasi-periodisches Muster basierend auf der Herzfrequenz des Individuums enthält.
Und schließlich eine Kovarianzfunktion, die die Herzfrequenzvariation als Funktion des Atmungszyklus modelliert:
ALTE FRAGEN (mit aktualisierten Antworten in Kursivschrift ):
1) Wenig über guassianische Prozesse zu wissen, scheint dies eine vertretbare Anwendung zu sein? Sie scheinen sehr flexibel zu sein und scheinen eine Reihe wünschenswerter Eigenschaften zu haben, die meine Probleme lösen könnten, so viel echte Variabilität wie möglich in meinen Daten beizubehalten, aber ich bin erst kürzlich auf sie gestoßen und möchte sicherstellen, dass ich nicht enttäuscht werde in dieses Kaninchenloch gehen.
Meine bisherige Antwort auf diese Frage lautet: Nein, dies war kein Kaninchenloch oder zumindest kein unproduktives. Ich bin mit diesen Modellen der Wiederherstellung "wahrer" Werte in einem unordentlichen Signal näher gekommen als mit jedem anderen. Ich wünschte, ich könnte einen Weg finden, um die Laufzeit zu reduzieren, da die Schätzung dieser Modelle rechenintensiv ist. Obwohl ich hier Fortschritte gemacht habe (Randnotiz mit Stan und rstan
), habe ich noch einen weiten Weg vor mir.
2) Verstehe und repräsentiere ich die Grundmerkmale der Kovarianzfunktionen richtig, und was noch wichtiger ist, ist mein Versuch, eine Variation von als Funktion von korrekt (dh Funktion )?
Ich glaube, dass die oben angegebenen Kernel mit meinen primären Modellierungszielen übereinstimmen. Abgesehen davon kann es Möglichkeiten geben, die Komplexität zu reduzieren, die sicherlich zu meinen zu langen Laufzeiten führt. Dies bleibt ein Bereich, den ich aktiv verfolge, wenn ich versuche, meine Modelle zu optimieren, nachdem ich die Grundlagen verstanden habe.
3) Technisch gesehen, wie geht man vor, um Werte für identifizieren ? Und was genau repräsentiert in jeder Kovarianzfunktion? Es scheint auch etwas zu sein, für das ich eine vorherige Verteilung angeben muss, aber ich verstehe nicht ganz, was es in diesem Fall darstellt. Vermutlich eine Art Varianz ...
Im Moment und mit ziemlicher Sicherheit ein Faktor in meiner Zeit bis zur Konvergenz schätze ich diese Werte aus den Daten. Wenn ich diese Werte entweder korrigieren oder ihre vorherigen Verteilungen stark einschränken könnte, um den von den Modellen abgedeckten Parameterraum (vertretbar) zu verkleinern, würde dies meiner Meinung nach einen großen Beitrag zur Verbesserung der Laufzeit leisten.
4) Ich habe eine zusätzliche Quelle gefunden, die ich über Gaußsche Prozesse durchführe (Rasmussen & Williams, 2006). Gibt es andere empfohlene Ressourcen, die ich prüfen sollte, um diese Modelle besser zu verstehen?
Ich habe eine Reihe zusätzlicher Quellen gefunden, die für meine weitere Verfolgung einer endgültigen Modellierungsstrategie nützlich sind. Siehe unten.
Schnelle Methoden zum Trainieren von Gaußschen Prozessen an großen Datensätzen - Moore et al., 2016
Schnelle Gaußsche Prozessmodelle in Stan - Nate Lemoine
Noch schnellere Gaußsche Prozesse in Stan - Nate Lemoine
Robuste Gaußsche Prozesse in Stan - Michael Betancourt
Hierarchische Gaußsche Prozesse in Stan - Trangucci, 2016
NEUE FRAGEN
Gibt es eine vertretbare Möglichkeit, die Längenskalenparameter im Modell (die ) basierend auf den Frequenzen, mit denen ich arbeite, zu beschränken (1,5 Hz, 0,25 Hz und die x-Achse in Sekunden auf 10 Hz heruntergerechnet).
Auf welche Faktoren sollte ich mich konzentrieren, um die Modellierungszeit zu verkürzen? Ich weiß, dass ein Teil davon darin besteht, meinen Stan-Code zu optimieren, aber gibt es noch etwas, das ich an der Parametrisierung meines Modells tun oder ändern könnte?
ERGEBNISSE ZUM DATUM Hier ist das bisher beste Ergebnis (in einem stark heruntergesampelten Datensatz). Die rote Linie repräsentiert das "wahre" Signal. Das Blau ist das vom Modell geschätzte Signal für denselben Zeitraum:
Hinweis : Ich wäre mit diesem Ergebnis weitgehend zufrieden, wenn ich seine Schätzung beschleunigen und etwas glätten könnte.
Gelman, A., Carlin, JB, Stern, HS, Dunson, DB, Vehtari, A. & Rubin, DB (2013). Bayesianische Datenanalyse (3. Aufl.) . CRC Press: New York.
Rasmussen, CE & Williams, CKI (2006). Gaußsche Prozesse für maschinelles Lernen . MIT Press: Boston, MA.
rstan
.