Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

auto.arima() equivalent for python

I am trying to predict weekly sales using ARMA ARIMA models. I could not find a function for tuning the order(p,d,q) in statsmodels. Currently R has a function forecast::auto.arima() which will tune the (p,d,q) parameters.

How do I go about choosing the right order for my model? Are there any libraries available in python for this purpose?

like image 244
Ajax Avatar asked Mar 31 '14 19:03

Ajax


People also ask

Is there Auto Arima in Python?

The auto_arima is an automated arima function of this library, which is created to find the optimal order and the optimal seasonal order, based on determined criterion such as AIC, BIC, etc., and within the designated parameter restrictions, that fits the best model to a single variable (univariable) time series.

What is ARIMA model in python?

ARIMA Model- Complete Guide to Time Series Forecasting in Python. AutoRegressive Integrated Moving Average(ARIMA) is a time series forecasting model that incorporates autocorrelation measures to model temporal structures within the time series data to predict future values.

What package is auto Arima in?

In this case, auto. arima from the forecast package in R allows us to implement a model of this type with relative ease.


1 Answers

You can implement a number of approaches:

  1. ARIMAResults include aic and bic. By their definition, (see here and here), these criteria penalize for the number of parameters in the model. So you may use these numbers to compare the models. Also scipy has optimize.brute which does grid search on the specified parameters space. So a workflow like this should work:

    def objfunc(order, exog, endog):     from statsmodels.tsa.arima_model import ARIMA     fit = ARIMA(endog, order, exog).fit()     return fit.aic()  from scipy.optimize import brute grid = (slice(1, 3, 1), slice(1, 3, 1), slice(1, 3, 1)) brute(objfunc, grid, args=(exog, endog), finish=None) 

    Make sure you call brute with finish=None.

  2. You may obtain pvalues from ARIMAResults. So a sort of step-forward algorithm is easy to implement where the degree of the model is increased across the dimension which obtains lowest p-value for the added parameter.

  3. Use ARIMAResults.predict to cross-validate alternative models. The best approach would be to keep the tail of the time series (say most recent 5% of data) out of sample, and use these points to obtain the test error of the fitted models.

like image 78
behzad.nouri Avatar answered Oct 13 '22 04:10

behzad.nouri