Module Python pour l'analyse des points de changement

24

Je recherche un module Python qui effectue une analyse de point de changement sur une série chronologique. Il existe un certain nombre d'algorithmes différents et j'aimerais explorer l'efficacité de certains d'entre eux sans avoir à lancer manuellement chacun des algorithmes.

Idéalement, j'aimerais que certains modules comme les paquets bcp (Bayesian Change Point) ou strucchange dans R. Je m'attendais à en trouver dans Scipy mais je n'ai rien pu trouver.

Je suis surpris qu'il n'y ait pas d'installations dans:

Existe-t-il des modules avec des algorithmes de détection des points de changement en Python?

Erik Shilts
la source
Je recherche également une analyse des points de changement en Python. Avez-vous trouvé quelque chose d'utile (par exemple en utilisant RPy?).
Jack Kelly
Utilisez le lasso fusionné dans SPAMS spams-devel.gforge.inria.fr (a des liaisons Python).
Vladislavs Dovgalecs
quelqu'un a-t-il déjà trouvé une bonne bibliothèque d'analyse des points de changement (implémentant divers algorithmes comme la segmentation binaire, le voisinage des segments)?
Maha
Pour les données de séries chronologiques en ligne, comment une implémentation de détection de changement de point, par exemple, changefinder peut-elle évoluer ? Cela me semble être un problème inhérent.
HoofarLotusX du

Réponses:

7

Vous pouvez essayer la bibliothèque changefinder sur PyPI. La description indique qu'il s'agit d'une bibliothèque de détection des modifications en ligne basée sur l'algorithme ChangeFinder

Il existe également des implémentations Python des techniques de détection des points de changement statistique de Michele Basseville disponibles en format tutoriel sur ce dépôt Github.

kushan_s
la source
3
Une implémentation Python de la détection des points de changement bayésiens peut également être trouvée dans ce dépôt Github.
kushan_s
1
ressemble au premier lien dans la réponse (amanahuja) est incomplet? l'autre que vous avez posté dans le commentaire est utile!
okkhoy
6

Il y a encore quelques lacunes dans la bibliothèque Python pour l'utilisation de packages de statistiques avancées. Avez-vous essayé d'utiliser le module RPy? Lorsque vous utilisez RPy, vous pouvez charger des modules R.

bref tutoriel sur RPy: http://www.sciprogblog.com/2012/08/using-r-from-within-python.html strucchange

sk8asd123
la source
2
Est-ce toujours le cas? Dois-je toujours utiliser le pont R-Python?
Maha
quelqu'un a-t-il déjà trouvé une bonne bibliothèque d'analyse des points de changement (implémentant divers algorithmes comme la segmentation binaire, le voisinage des segments)?
Maha
4

Cette implémentation du package Python rpy2 a fonctionné pour moi:

import numpy as np
from rpy2.robjects.packages import importr
import rpy2.robjects as robjects

r = robjects.r #allows access to r object with r.

bcp = importr('bcp') #import bayesian change point package in python

values = bcp.bcp( r.c( r.rnorm(50) , r.rnorm(50,5,1), r.rnorm(50) ) ) #use bcp function on vector

posterior_means = np.array(values[5]).flatten()
posterior_probability = np.array(values[7]).flatten()

Ensuite, vous pouvez tracer les moyennes postérieures et la probabilité postérieure par rapport au vecteur d'origine. Voir l'exemple de fonction bcp dans R pour des informations plus détaillées sur cet exemple.

De plus, les valeurs d'indexation en dur avec un nombre (c'est-à-dire les valeurs [5]) ne sont pas idéales, mais j'avais du mal à utiliser l'extracteur rx et rx2. Donc, si quelqu'un peut m'éclairer sur une méthode d'extraction moins hacky, j'aimerais savoir!

scottlittle
la source
3

Je viens de découvrir une bibliothèque de détection de points de changement en Python nommée "ruptures": https://arxiv.org/abs/1801.00826

Peut-être que cela peut être utile.

Basileios
la source
0

Avez-vous essayé la bibliothèque ChangeFinder, vous pouvez l'installer sur linux en:

pip install changefinder

le code GitHub Bayesian_changepoint_detection peut également être trouvé ici: Code GitHub

user185876
la source