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?


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.


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


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!



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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.