Partikelfilter im R - trivialen Codebeispiel

9

Ich suche nach einem einfachen Codebeispiel für die Ausführung eines Partikelfilters in R. Das Pomp-Paket scheint das Zustandsraum-Mathematikbit zu unterstützen, aber die Beispiele sind für einen einfachen OO-Entwickler wie mich programmgesteuert etwas schwierig zu befolgen wie man die beobachteten Daten in ein Pomp-Objekt lädt.

Nehmen wir an, ich habe eine CSV-Datei mit einer Spalte mit verrauschten Daten als Eingabe und möchte sie durch einen Partikelfilter ausführen, um sie hoffentlich mit den Schätzungen in eine andere CSV-Datei zu bereinigen.

 y <- read.csv("C:/Dev/VeryCleverStatArb/inputData.csv", header=FALSE)
 #CSV to Pomp object ???
 #Run Particle Filter
 #Write estimates to csv.

Die Hauptschwierigkeit bei den Beispielen besteht darin, CSV-Daten in ein Pomp-Objekt zu laden.

Ein sehr einfaches Zustandsraummodell sollte vorerst gut genug sein.

Irgendwelche Ideen für den R-Neugierigen?

user1180428
quelle
Dies kann für alle nützlich sein, die sich mit dem Paarhandel oder dem algorithmischen Handel im Allgemeinen befassen, bei denen es sich um eine wirtschaftliche Beziehung handelt, die von Rauschen umgeben ist.
IMHO sind Sie besser dran, den Filter selbst zu codieren ...
Dr. G
Genial! Beispiele / Tipps / Hinweise für alle, die dies sehen? Eine alternative Lösung ist besser als keine Lösung.
user1180428
@ user1180428: Ich habe meine Antwort bearbeitet, die jetzt möglicherweise eine mögliche Alternative für Sie darstellt.
Wayne

Antworten:

1

EDIT: Es scheint, dass die meisten Partikelfilterpakete jetzt weg sind. Ich habe jedoch mit LaplacesDemon (einem Bayesian MCMC-Paket) gespielt und es hat die PMC-Funktion (Population Monte Carlo), die PMC implementiert, eine Art Partikelfilter. Vielleicht zu viel Maschinen für einen schnellen Partikelfilter, aber ein Paket, das es wert ist, gelernt zu werden.

Sie finden Pakete und Tutorials bei CRAN .

ORIGINAL: Um ehrlich zu sein, ist es im einfachsten Fall pompschwer zu bedienen. Es ist sehr flexibel für alles, was Sie tun möchten, aber es ist, als würden Sie ein Raumschiff benutzen, um zum Lebensmittelgeschäft zu gelangen.

Haben Sie versucht, Kalman-Filter (wenn Ihre Daten möglicherweise den Annahmen des Kalman-Filters entsprechen), einschließlich Basisfunktionen tsSmoothund StructTS(nur univariate), und Paket zu betrachten dlm? Ich würde auch einen Blick auf loessund andere Glätter werfen .

Ich hoffe, ich liege falsch und jemand hüpft hier mit einer kurzen Frage: "Hier erfahren Sie, wie Sie dies für einfache univariate Daten tun, wie Sie sie mit einigen bescheidenen Annahmen haben." Ich würde das Paket gerne selbst verwenden können.

Wayne
quelle
1
Wurde dort gehackt. Leider scheint ein einfacher gleitender Durchschnitt in diesem und vielen anderen Beispielen ein brauchbares Signal besser zu treffen als der Kalman-Filter - Kalman: Link , SMA: Link Die Daten sind stationär, soweit ein Dickey Fuller p <0,01 ist. Vielleicht mache ich es falsch. Ein Skript zum Ausführen eines Partikelfilters für diese Daten und andere Kandidaten, die Kandidaten handeln, wäre fantastisch (denke ich).
user1180428