Модуль 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.