Simple auto_arima modelΒΆ
This is a simple example of how we can fit an ARIMA model in several lines without knowing anything about our data or optimal hyper parameters.
Out:
Performing stepwise search to minimize aic
ARIMA(2,1,2)(1,0,1)[12] intercept : AIC=2915.641, Time=7.58 sec
ARIMA(0,1,0)(0,0,0)[12] intercept : AIC=3049.597, Time=0.01 sec
ARIMA(1,1,0)(1,0,0)[12] intercept : AIC=2954.973, Time=3.59 sec
ARIMA(0,1,1)(0,0,1)[12] intercept : AIC=2947.014, Time=3.61 sec
ARIMA(0,1,0)(0,0,0)[12] : AIC=3047.612, Time=0.02 sec
ARIMA(2,1,2)(0,0,1)[12] intercept : AIC=2938.457, Time=6.20 sec
ARIMA(2,1,2)(1,0,0)[12] intercept : AIC=2915.636, Time=5.70 sec
ARIMA(2,1,2)(0,0,0)[12] intercept : AIC=2984.606, Time=0.16 sec
ARIMA(2,1,2)(2,0,0)[12] intercept : AIC=2915.168, Time=23.57 sec
ARIMA(2,1,2)(2,0,1)[12] intercept : AIC=2917.256, Time=29.10 sec
ARIMA(1,1,2)(2,0,0)[12] intercept : AIC=2924.379, Time=27.08 sec
ARIMA(2,1,1)(2,0,0)[12] intercept : AIC=2911.007, Time=26.72 sec
ARIMA(2,1,1)(1,0,0)[12] intercept : AIC=2911.505, Time=6.69 sec
ARIMA(2,1,1)(2,0,1)[12] intercept : AIC=2912.933, Time=27.09 sec
ARIMA(2,1,1)(1,0,1)[12] intercept : AIC=2911.904, Time=6.92 sec
ARIMA(1,1,1)(2,0,0)[12] intercept : AIC=2919.168, Time=21.13 sec
ARIMA(2,1,0)(2,0,0)[12] intercept : AIC=2927.636, Time=26.15 sec
ARIMA(3,1,1)(2,0,0)[12] intercept : AIC=2912.748, Time=31.83 sec
ARIMA(1,1,0)(2,0,0)[12] intercept : AIC=2954.725, Time=21.69 sec
ARIMA(3,1,0)(2,0,0)[12] intercept : AIC=2914.169, Time=30.99 sec
ARIMA(3,1,2)(2,0,0)[12] intercept : AIC=2915.130, Time=35.19 sec
ARIMA(2,1,1)(2,0,0)[12] : AIC=2908.085, Time=22.00 sec
ARIMA(2,1,1)(1,0,0)[12] : AIC=2908.791, Time=5.72 sec
ARIMA(2,1,1)(2,0,1)[12] : AIC=2909.997, Time=18.79 sec
ARIMA(2,1,1)(1,0,1)[12] : AIC=2907.980, Time=5.58 sec
ARIMA(2,1,1)(0,0,1)[12] : AIC=2932.875, Time=5.21 sec
ARIMA(2,1,1)(1,0,2)[12] : AIC=2909.946, Time=21.81 sec
ARIMA(2,1,1)(0,0,0)[12] : AIC=2979.838, Time=0.12 sec
ARIMA(2,1,1)(0,0,2)[12] : AIC=2920.616, Time=18.78 sec
ARIMA(2,1,1)(2,0,2)[12] : AIC=2911.929, Time=22.50 sec
ARIMA(1,1,1)(1,0,1)[12] : AIC=2915.102, Time=4.16 sec
ARIMA(2,1,0)(1,0,1)[12] : AIC=2925.280, Time=4.24 sec
ARIMA(3,1,1)(1,0,1)[12] : AIC=2910.007, Time=7.27 sec
ARIMA(2,1,2)(1,0,1)[12] : AIC=2913.030, Time=6.83 sec
ARIMA(1,1,0)(1,0,1)[12] : AIC=2952.472, Time=3.79 sec
ARIMA(1,1,2)(1,0,1)[12] : AIC=2922.341, Time=5.10 sec
ARIMA(3,1,0)(1,0,1)[12] : AIC=2912.111, Time=5.78 sec
ARIMA(3,1,2)(1,0,1)[12] : AIC=2913.230, Time=7.41 sec
Best model: ARIMA(2,1,1)(1,0,1)[12]
Total fit time: 506.264 seconds
print(__doc__)
# Author: Taylor Smith <taylor.smith@alkaline-ml.com>
import pmdarima as pm
from pmdarima import model_selection
import numpy as np
from matplotlib import pyplot as plt
# #############################################################################
# Load the data and split it into separate pieces
data = pm.datasets.load_wineind()
train, test = model_selection.train_test_split(data, train_size=150)
# Fit a simple auto_arima model
arima = pm.auto_arima(train, error_action='ignore', trace=True,
suppress_warnings=True, maxiter=10,
seasonal=True, m=12)
# #############################################################################
# Plot actual test vs. forecasts:
x = np.arange(test.shape[0])
plt.scatter(x, test, marker='x')
plt.plot(x, arima.predict(n_periods=test.shape[0]))
plt.title('Actual test samples vs. forecasts')
plt.show()
Total running time of the script: ( 8 minutes 26.365 seconds)