Модуль Python для аналізу точок зміни


24

Я шукаю модуль Python, який виконує аналіз точки зміни за тимчасовим рядом. Існує декілька різних алгоритмів, і я хотів би вивчити ефективність деяких з них без необхідності обробляти кожен з алгоритмів.

В ідеалі я хотів би, щоб такі модулі, як bcp (Bayesian Change Point) або strucchange пакети в R. Я очікував, що знайду їх у Scipy, але мені нічого не вдалося знайти.

Я здивований, що в цьому закладі немає:

  • statsmodels.tsa : Засоби статистичного аналізу часових рядів
  • scikits.timeseries : Інструменти аналізу часових рядів для розширення scipy
  • scipy.signal : засоби обробки сигналів у scipy

Чи є в Python модулі з алгоритмами визначення точки зміни?


Я також шукаю аналіз точок зміни в Python. Чи знайшли ви щось корисне (наприклад, використання RPy?).
Джек Келлі

Використовуйте плавлене ласо в SPAMS spams-devel.gforge.inria.fr (має прив'язки Python).
Владислав Довгалеч

хтось знайшов якусь хорошу бібліотеку аналізу змін змін (реалізуючи різні алгоритми, наприклад, двійкова сегментація, сусідство сегментів)?
Маха

Для даних онлайн часових рядів, як це реалізація виявлення розладнання, скаже changefinder можна масштабувати? Це здається мені притаманною проблемою.
HoofarLotusX

Відповіді:


7

Ви можете спробувати changefinder бібліотеку на PyPI. В описі йдеться, що це онлайн-бібліотека виявлення змін, заснована на алгоритмі ChangeFinder

Існує також кілька реалізацій Python методів статистичного виявлення точок зміни Мішеля Бассевіля, доступних у форматі підручника на цьому репортажі Github.


3
Реалізація Python байєсівського виявлення точок зміни також може бути знайдена в цьому репо-версії Github.
kushan_s

1
схоже, що перша посилання у відповіді (аманахуя) неповна? інша, яку ви опублікували в коментарі, корисна!
окхой

6

У бібліотеці Python все ще є деякі прогалини щодо використання розширених пакетів статистики. Ви намагалися використовувати модуль RPy? Під час використання RPy ви можете завантажувати модулі R.

короткий посібник з RPy: http://www.sciprogblog.com/2012/08/using-r-from-within-python.html strucchange


2
це все-таки так? Чи потрібно все-таки використовувати мост R-Python?
Маха

хтось знайшов якусь хорошу бібліотеку аналізу змін змін (реалізуючи різні алгоритми, наприклад, двійкова сегментація, сусідство сегментів)?
Маха

4

Ця реалізація пакету Python rpy2 працювала для мене:

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()

Потім ви зможете побудувати задні засоби та задню ймовірність проти вихідного вектора. Дивіться приклад функції bcp в R для отримання більш детальної інформації про цей приклад.

Крім того, важке значення індексації числом (тобто значенням [5]) не є ідеальним, але мені було важко використовувати витяжку rx та rx2. Тож якщо хтось може просвітити мене менш хакітним методом видобутку, я хотів би знати!



0

Ви спробували бібліотеку ChangeFinder, ви можете встановити її на Linux:

pip install changefinder

також Bayesian_changepoint_detection код GitHub можна знайти тут: GitHub Code

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.