Comparison with Other Packages¶
Quick comparison of fastcpd-python with other change point detection libraries.
Python Packages¶
ruptures - Comprehensive offline change point detection
Pure Python (no C++ compilation)
Multiple algorithms: PELT, Binary Segmentation, Bottom-Up, Window-based
Mature codebase with large user base
Extensive documentation
fastcpd-python - This package
GLM support (Binomial, Poisson)
Time series models (AR, ARMA, VAR, GARCH)
SeGD algorithm for large datasets
Requires C++ (Armadillo)
R Packages¶
changepoint - Established R package
Mature, well-tested
CRAN distribution
Classical methods (PELT, BinSeg)
fastcpd - Original R implementation
PELT + SeGD algorithms
CRAN distribution
Native R integration
Feature Comparison¶
Feature |
fastcpd-py |
ruptures |
R fastcpd |
changepoint |
|---|---|---|---|---|
PELT |
Yes |
Yes |
Yes |
Yes |
Binary Segmentation |
No |
Yes |
No |
Yes |
SeGD |
Yes |
No |
Yes |
No |
Mean/Variance |
Yes |
Yes |
Yes |
Yes |
GLM |
Yes |
No |
Yes |
No |
Time Series |
Yes |
No |
Yes |
No |
Nonparametric |
Yes |
Yes |
Yes |
No |
Installation |
pip + C++ |
pip only |
CRAN |
CRAN |
When to Use Each¶
Use fastcpd-python for:
GLM or time series models in Python
Large datasets (SeGD algorithm)
Comprehensive evaluation metrics
Use ruptures for:
Pure Python without C++ dependencies
Binary segmentation or bottom-up algorithms
Established Python package
Use R fastcpd for:
R ecosystem integration
CRAN distribution preference
Use changepoint for:
Mature R package
Classical methods in R
Migration Examples¶
From ruptures¶
# ruptures
import ruptures as rpt
algo = rpt.Pelt(model="rbf").fit(signal)
result = algo.predict(pen=10)
# fastcpd-python
from fastcpd.segmentation import rbf
result = rbf(signal, beta=10.0)
change_points = result.cp_set
From R fastcpd¶
# R
library(fastcpd)
result <- fastcpd.mean(data, beta="MBIC")
# Python
from fastcpd.segmentation import mean
result = mean(data, beta="MBIC")
Summary¶
Choose based on:
Programming language (Python vs R)
Model requirements (standard vs GLM vs time series)
Installation constraints (pure Python vs C++)
Algorithm needs (PELT, SeGD, Binary Segmentation)