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

24

Я ищу модуль Python, который выполняет анализ точек изменения во временных рядах. Существует ряд различных алгоритмов, и я хотел бы изучить эффективность некоторых из них, не прибегая к ручному раскручиванию каждого из алгоритмов.

В идеале я хотел бы, чтобы некоторые модули, такие как bcp (Bayesian Change Point) или strucchange пакетов в Р. я ожидал найти некоторые в SciPy , но я не был в состоянии оказаться что угодно.

Я удивлен, что нет никаких средств в:

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

Есть ли в Python модули с алгоритмами обнаружения точек изменения?

Эрик Шилтс
источник
Я также ищу анализ точек изменения в Python. Вы нашли что-нибудь полезное (например, с помощью RPy?).
Джек Келли
Используйте плавленое лассо в SPAMS spams-devel.gforge.inria.fr (имеет привязки Python).
Владислав Довгальец
Кто-нибудь нашел какую-либо хорошую библиотеку анализа точек изменения (реализуя различные алгоритмы, скажем, двоичную сегментацию, соседство сегментов)?
Маха
Для данных временных рядов в режиме онлайн, как реализация Change-Point Detection, скажем, Changefinder может масштабироваться? Это кажется мне неотъемлемой проблемой.
HoofarLotusX

Ответы:

7

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

Есть также некоторые реализации Python методик обнаружения статистического Изменения точки Микеле Basseville можно ознакомиться в учебнике формата на этом Github репо.

kushan_s
источник
3
Реализация Bayesian Change Point Detection на Python также может быть найдена в этом репозитории Github.
kushan_s
1
Похоже, первая ссылка в ответе (amanahuja) неполная? другой, который вы разместили в комментарии, полезен!
окхой
6

В библиотеке Python все еще есть некоторые пробелы для использования пакетов расширенной статистики. Вы пытались использовать модуль RPy? При использовании RPy вы можете загрузить R модулей.

краткое руководство по RPy: http://www.sciprogblog.com/2012/08/using-r-from-within-python.html strucchange

sk8asd123
источник
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. Так что, если кто-нибудь сможет рассказать мне о менее хакерском методе извлечения, я бы хотел знать!

scottlittle
источник
3

Я только что натолкнулся на библиотеку обнаружения точек изменения в Python с именем «разрыв»: https://arxiv.org/abs/1801.00826

Может быть, это может быть полезным.

Basileios
источник
0

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

pip install changefinder

также Bayesian_changepoint_detection GitHub-код можно найти здесь: GitHub-код

user185876
источник