The structure of the package has changed slightly due to enhancements of the `early_warnings` package and significant improvements of the already implemented methods. The update is backwards compatible. It might only be necessary to adapt the antiCPy import statements of old Python scripts.
This **antiCPy** "James Bond" release 0.0.7 contains significant enhancements and improvements:
- The MCMC based `LangevinEstimation` model is complemented by a two dimensional model in the `NonMarkovEstimation` class. Instead of a Wiener process noise term, an Ornstein-Uhlenbeck process Y couples into X. It is possible to define _a priori_ a time scale separation between X and Y to mirror prior knowledge.
- The implemented models including the new two dimensional model can be estimated via a maximum posterior (MAP) approach which is much faster than the MCMC version. The corresponding method is `perform_MAP_resilience_scan(...)`. This is thought to be advantageous to scan new data for resilience changes without time-consuming computations. Special attention might be dedicated to the confidence bands of the MAP estimates (cf. documentation).
- Furthermore, the MAP approach is implemented in the child class `BinningLangevinEstimation`. The binned version leads to additional speed ups if the time windows contain much data. Otherwise, use the normal MAP approach.
- Additionally, the computation time of the MCMC and MAP versions is optimized by implementing the resilience estimation of multiple windows at the same time by `multiprocessing`. In that way, the serial computation times are basically divided by the number of dedicated processes. To this end, a superclass `RocketFastResilienceEstimation` implements a `fast_resilience_scan(...)` and `fast_MAP_resilience_scan(...)` method. They make use of the child classes per parallel window calculation.
- A second resilience measure, the _dominant eigenvalue_ is introduced under `early_warnings`: first, the _drift slope_ (in the `drift_slope` package) and second, the _dominant eigenvalue_. The `dominant_eigenvalue` package implements basic functions to perform a dominant eigenvalue estimation. It is not structured by classes, but by procedural modules.
Further notes:
- The documentation is largely enhanced and includes now comments on the efficient change point analysis as well as a description of the added classes and methods which are mentioned above.
- In case of the `dominant_eigenvalue` package, a tutorial and mathematical chapters are added to the documentation.