# 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 `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?

You can implement a number of approaches:

`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`

.

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.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.

From: stackoverflow.com/q/22770352