Filtre à particules dans R - exemple de code trivial

9

Je cherche un exemple de code simple sur la façon d'exécuter un filtre à particules dans R. Le package pomp semble prendre en charge le bit mathématique de l'espace d'état, mais les exemples sont un peu difficiles à suivre par programme pour un développeur OO simple comme moi, en particulier comment charger les données observées dans un objet pompeux.

Disons que j'ai un fichier csv avec 1 colonne de données bruyantes en entrée, et je voudrais le faire passer par un filtre à particules afin de l'espérer le nettoyer, avec la sortie étant les estimations, dans un autre fichier csv.

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

La principale difficulté avec les exemples est le chargement de données csv dans un objet pompe.

Un modèle d'espace d'état très simple devrait être suffisant pour l'instant.

Des idées pour les R-curieux?

user1180428
la source
Cela peut être utile pour tous ceux qui recherchent le trading de paires, ou le trading algorithmique en général, où il s'agit d'une relation économique entourée de bruit.
À mon humble avis, vous feriez mieux de coder le filtre vous-même ...
Dr G
Impressionnant! Échantillons / conseils / pointeurs pour tout le monde qui regarde ça? Une solution alternative vaut mieux que pas de solution.
user1180428
@ user1180428: J'ai modifié ma réponse, qui peut maintenant vous offrir une alternative possible.
Wayne

Réponses:

1

EDIT: Il semble que la plupart des packages de filtres à particules ont disparu maintenant. Cependant, j'ai joué avec LaplacesDemon (un package MCMC bayésien) et il a la fonction PMC (Population Monte Carlo) qui implémente PMC, qui est un type de filtre à particules. Peut-être trop de machines pour une sorte de filtre à particules rapide, mais un package qui mérite d'être étudié.

Vous pouvez trouver des packages et des tutoriels sur CRAN .

ORIGINAL: Pour être honnête, dans le cas le plus simple, il pompest difficile à utiliser. Il est très flexible pour tout ce que vous pourriez vouloir faire, mais c'est comme utiliser un vaisseau spatial pour aller à l'épicerie.

Avez-vous essayé de regarder les filtres Kalman (si vos données peuvent satisfaire aux hypothèses du filtre Kalman), y compris les fonctions de base tsSmoothet StructTS(univariées uniquement), et le package dlm? Je jetterais également un coup d'œil à d' loessautres lissoirs.

J'espère que je me trompe et que quelqu'un le houblon ici avec un rapide «voici comment faire pour les données unidimensionnelles simples comme vous avez avec quelques hypothèses modestes. » J'adorerais pouvoir utiliser le package moi-même.

Wayne
la source
1
Vous avez piraté cela. Malheureusement, une moyenne mobile simple semble clouer un signal utilisable mieux que le filtre de Kalman dans ce cas, et de nombreux autres exemples - Kalman: link , SMA: link Les données sont stationnaires, jusqu'à un Dickey Fuller p <0,01. Peut-être que je me trompe. Un script pour exécuter un filtre à particules sur ces données, et d'autres paires de candidats au trading serait génial (je pense).
user1180428