1. About the project

pmdarima is designed to behave as similarly to R’s well-known auto.arima as possible.

The project emerged as a result of a long-standing personal debate between my colleagues and me about why python is vastly superior to R. Since R’s forecasting capabilities far superseded those of Python’s existing libraries, pmdarima was created to close that gap and give analysts/researchers one less reason why R is a viable language for practical machine learning.

(Of course, take my soapbox speech with a grain of salt… I once was an R addict but am now recovering)

1.1. The name…

The name “pyramid” originally was the result of an anagram between the “py” prefix and the characters needed to spell “arima”. However, the popular web framework sharing the same name caused a namespace collision and the package has since been renamed pmdarima. You may still see it referred to interchangeably throughout the doc as “pyramid”.

1.2. How it works

pmdarima is essentially a Python & Cython wrapper of several different statistical and machine learning libraries (statsmodels and scikit-learn), and operates by generalizing all ARIMA models into a single class (unlike statsmodels).

It does this by wrapping the respective statsmodels interfaces (ARMA, ARIMA and SARIMAX) inside the pmdarima.ARIMA class, and as a result there is a bit of monkey patching that happens beneath the hood.

1.2.1. How auto_arima works

The auto_arima function itself operates a bit like a grid search, in that it tries various sets of p and q (also P and Q for seasonal models) parameters, selecting the model that minimizes the AIC (or BIC, or whatever information criterion you select). To select the differencing terms, auto_arima uses a test of stationarity (such as an augmented Dickey-Fuller test) and seasonality (such as the Canova-Hansen test) for seasonal models.

For more in-depth information on the process by which auto_arima selects the best model, check out the Tips to using auto_arima section.

1.3. Feedback

This is an open-source (read: FREE) project. That means several things:

  • It is not infallible

  • It’s a community effort

  • Making demands doesn’t go over well

I know that there are those who have built models with pmdarima as a tool to support their work. I also know that people can depend on the functionality of this library in order to do their job well. And for that, I’m committed to keeping things running smoothly.

However, as I’m the sole maintainer, things can sometimes stack up. Please feel free to make pull requests (see Contributing to pmdarima), file issues, and make feature requests. But note the third point: Contributors to this project do it for fun. Let’s keep it cordial.

If you encounter any issues in the project, please see the Filing a bug section for how to file an issue.