Estou procurando um módulo Python que execute uma análise de ponto de mudança em uma série temporal. Existem vários algoritmos diferentes e eu gostaria de explorar a eficácia de alguns deles sem precisar rolar manualmente cada um dos algoritmos.
Idealmente, eu gostaria de alguns módulos como o bcp (Bayesian Change Point) ou pacotes strucchange na R. Eu esperava encontrar alguns no Scipy, mas não consegui encontrar nada.
Estou surpreso que não haja instalações em:
- statsmodels.tsa : Ferramentas de análise estatística de séries temporais
- scikits.timeseries : Ferramentas de análise de séries temporais para estender o scipy
- scipy.signal : ferramentas de processamento de sinal no scipy
Existem módulos com algoritmos de detecção de ponto de mudança no Python?
time-series
python
change-point
Erik Shilts
fonte
fonte
Respostas:
Você pode experimentar a biblioteca do changefinder no PyPI. A descrição diz que é uma biblioteca de detecção de alterações on-line baseada no algoritmo ChangeFinder
Existem também algumas implementações em Python das técnicas de Detecção de ponto de mudança estatística de Michele Basseville, disponíveis em formato de tutorial neste repositório do Github.
fonte
Ainda existem algumas lacunas na biblioteca Python para o uso de pacotes estatísticos avançados. Você já tentou usar o módulo RPy? Ao usar o RPy, você pode carregar os módulos R.
breve tutorial sobre RPy: http://www.sciprogblog.com/2012/08/using-r-from-within-python.html strucchange
fonte
Esta implementação do pacote Python rpy2 funcionou para mim:
Em seguida, você pode plotar as médias posteriores e a probabilidade posterior contra o vetor original. Veja o exemplo da função bcp em R para obter informações mais detalhadas sobre este exemplo.
Além disso, valores de indexação rígidos com um número (ou seja, valores [5]) não são ideais, mas eu estava tendo dificuldades para usar o extrator rx e rx2. Portanto, se alguém puder me esclarecer sobre um método de extração menos invasivo, eu adoraria saber!
fonte
Acabei de encontrar uma biblioteca de detecção de pontos de mudança em Python chamada "rupturas": https://arxiv.org/abs/1801.00826
Talvez isso possa ser útil.
fonte
Você já experimentou a biblioteca do ChangeFinder, pode instalá-lo no linux:
pip install changefinder
também o código Bayesian_changepoint_detection GitHub pode ser encontrado aqui: Código GitHub
fonte