In [3]:
!pip install seaborn


Requirement already satisfied: seaborn in c:\users\dell\anaconda3\lib\site-packages

In [1]:
%matplotlib inline
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime
from dateutil.relativedelta import relativedelta
import seaborn as sns
import statsmodels.api as sm  
from statsmodels.tsa.stattools import acf  
from statsmodels.tsa.stattools import pacf
from statsmodels.tsa.seasonal import seasonal_decompose

In [4]:
dir(sm)


Out[4]:
['GEE',
 'GLM',
 'GLS',
 'GLSAR',
 'Logit',
 'MICE',
 'MICEData',
 'MNLogit',
 'MixedLM',
 'NegativeBinomial',
 'NominalGEE',
 'OLS',
 'OrdinalGEE',
 'PCA',
 'PHReg',
 'Poisson',
 'ProbPlot',
 'Probit',
 'QuantReg',
 'RLM',
 'RecursiveLS',
 'SurvfuncRight',
 'WLS',
 '__builtins__',
 '__cached__',
 '__doc__',
 '__file__',
 '__loader__',
 '__name__',
 '__package__',
 '__spec__',
 'add_constant',
 'categorical',
 'cov_struct',
 'datasets',
 'distributions',
 'duration',
 'emplike',
 'families',
 'formula',
 'genmod',
 'graphics',
 'iolib',
 'load',
 'nonparametric',
 'qqline',
 'qqplot',
 'qqplot_2samples',
 'regression',
 'robust',
 'show_versions',
 'stats',
 'test',
 'tools',
 'tsa',
 'version',
 'webdoc']

In [5]:
dir(sm.tsa)


Out[5]:
['AR',
 'ARIMA',
 'ARMA',
 'ArmaProcess',
 'DynamicFactor',
 'DynamicVAR',
 'MarkovAutoregression',
 'MarkovRegression',
 'SARIMAX',
 'SVAR',
 'UnobservedComponents',
 'VAR',
 'VARMAX',
 '__builtins__',
 '__cached__',
 '__doc__',
 '__file__',
 '__loader__',
 '__name__',
 '__package__',
 '__spec__',
 'acf',
 'acovf',
 'add_lag',
 'add_trend',
 'adfuller',
 'arma_generate_sample',
 'arma_order_select_ic',
 'bds',
 'ccf',
 'ccovf',
 'coint',
 'datetools',
 'detrend',
 'filters',
 'graphics',
 'interp',
 'kpss',
 'lagmat',
 'lagmat2ds',
 'pacf',
 'pacf_ols',
 'pacf_yw',
 'periodogram',
 'q_stat',
 'seasonal_decompose',
 'statespace',
 'stattools',
 'tsatools',
 'var',
 'x13_arima_analysis',
 'x13_arima_select_order']

In [7]:
dir(sm.tsa.SARIMAX)


Out[7]:
['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__getitem__',
 '__gt__',
 '__hash__',
 '__init__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__setitem__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 '_conditional_sum_squares',
 '_forecasts_error_partial_derivatives',
 '_get_dates_loc',
 '_get_exog_names',
 '_get_init_kwds',
 '_get_model_names',
 '_get_predict_end',
 '_get_predict_start',
 '_handle_data',
 '_hessian_complex_step',
 '_hessian_finite_difference',
 '_hessian_oim',
 '_hessian_opg',
 '_init_dates',
 '_make_predict_dates',
 '_score_complex_step',
 '_score_finite_difference',
 '_score_harvey',
 '_score_obs_harvey',
 '_set_exog_names',
 '_set_predict_start_date',
 '_str_to_date',
 'endog_names',
 'exog_names',
 'filter',
 'fit',
 'from_formula',
 'hessian',
 'impulse_responses',
 'information',
 'initial_design',
 'initial_selection',
 'initial_state_intercept',
 'initial_transition',
 'initial_variance',
 'initialization',
 'initialize',
 'initialize_approximate_diffuse',
 'initialize_known',
 'initialize_state',
 'initialize_statespace',
 'initialize_stationary',
 'loglike',
 'loglikelihood_burn',
 'loglikeobs',
 'model_latex_names',
 'model_names',
 'model_orders',
 'observed_information_matrix',
 'opg_information_matrix',
 'param_names',
 'param_terms',
 'params_complete',
 'predict',
 'prepare_data',
 'score',
 'score_obs',
 'set_conserve_memory',
 'set_filter_method',
 'set_inversion_method',
 'set_smoother_output',
 'set_stability_method',
 'simulate',
 'smooth',
 'start_params',
 'tolerance',
 'transform_jacobian',
 'transform_params',
 'untransform_params',
 'update']

In [8]:
df=pd.read_csv("http://vincentarelbundock.github.io/Rdatasets/csv/datasets/AirPassengers.csv")

In [9]:
df=df.drop('Unnamed: 0',1)

In [10]:
df.head()


Out[10]:
time AirPassengers
0 1949.000000 112
1 1949.083333 118
2 1949.166667 132
3 1949.250000 129
4 1949.333333 121

In [11]:
df.tail()


Out[11]:
time AirPassengers
139 1960.583333 606
140 1960.666667 508
141 1960.750000 461
142 1960.833333 390
143 1960.916667 432

In [12]:
df.shape[0]


Out[12]:
144

In [13]:
df.shape


Out[13]:
(144, 2)

In [14]:
start = datetime.datetime.strptime("1949-01-01", "%Y-%m-%d")
print(start)


1949-01-01 00:00:00

In [15]:
date_list = [start + relativedelta(months=x) for x in range(0,df.shape[0])]
print(date_list[0:4])


[datetime.datetime(1949, 1, 1, 0, 0), datetime.datetime(1949, 2, 1, 0, 0), datetime.datetime(1949, 3, 1, 0, 0), datetime.datetime(1949, 4, 1, 0, 0)]

In [16]:
df['index'] =date_list
df.set_index(['index'], inplace=True)
df.index.name=None

In [17]:
df.head()


Out[17]:
time AirPassengers
1949-01-01 1949.000000 112
1949-02-01 1949.083333 118
1949-03-01 1949.166667 132
1949-04-01 1949.250000 129
1949-05-01 1949.333333 121

In [18]:
df=df.drop('time',1)
df.head()


Out[18]:
AirPassengers
1949-01-01 112
1949-02-01 118
1949-03-01 132
1949-04-01 129
1949-05-01 121

In [19]:
df['AirPassengers'] = df.AirPassengers.apply(lambda x: int(x)*1000)

In [24]:
df.head()


Out[24]:
AirPassengers
1949-01-01 112000
1949-02-01 118000
1949-03-01 132000
1949-04-01 129000
1949-05-01 121000

In [22]:
df.AirPassengers.plot(figsize=(12,8), title= 'Monthly Passengers', fontsize=14)
plt.savefig('month_ridership.png', bbox_inches='tight')



In [23]:
decomposition = seasonal_decompose(df.AirPassengers, freq=12)  
fig = plt.figure()  
fig = decomposition.plot()  
fig.set_size_inches(15, 8)


<matplotlib.figure.Figure at 0xb3b6ac8>

In [25]:
# Define the p, d and q parameters to take any value between 0 and 2
p = d = q = range(0, 2)
print(p)


range(0, 2)

In [27]:
import itertools
import warnings

In [28]:
# Generate all different combinations of p, d and q triplets
pdq = list(itertools.product(p, d, q))
print(pdq)


[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]

In [29]:
# Generate all different combinations of seasonal p, q and q triplets
seasonal_pdq = [(x[0], x[1], x[2], 12) for x in list(itertools.product(p, d, q))]

print('Examples of parameter combinations for Seasonal ARIMA...')
print('SARIMAX: {} x {}'.format(pdq[1], seasonal_pdq[1]))
print('SARIMAX: {} x {}'.format(pdq[1], seasonal_pdq[2]))
print('SARIMAX: {} x {}'.format(pdq[2], seasonal_pdq[3]))
print('SARIMAX: {} x {}'.format(pdq[2], seasonal_pdq[4]))


Examples of parameter combinations for Seasonal ARIMA...
SARIMAX: (0, 0, 1) x (0, 0, 1, 12)
SARIMAX: (0, 0, 1) x (0, 1, 0, 12)
SARIMAX: (0, 1, 0) x (0, 1, 1, 12)
SARIMAX: (0, 1, 0) x (1, 0, 0, 12)

In [30]:
y=df

In [31]:
#warnings.filterwarnings("ignore") # specify to ignore warning messages

for param in pdq:
    for param_seasonal in seasonal_pdq:
        try:
            mod = sm.tsa.statespace.SARIMAX(y,
                                            order=param,
                                            seasonal_order=param_seasonal,
                                            enforce_stationarity=False,
                                            enforce_invertibility=False)

            results = mod.fit()

            print('ARIMA{}x{}12 - AIC:{}'.format(param, param_seasonal, results.aic))
        except:
            continue


ARIMA(0, 0, 0)x(0, 0, 1, 12)12 - AIC:3618.0303991426763
ARIMA(0, 0, 0)x(0, 1, 1, 12)12 - AIC:2824.7439963684233
ARIMA(0, 0, 0)x(1, 0, 0, 12)12 - AIC:2942.2733127230185
ARIMA(0, 0, 0)x(1, 0, 1, 12)12 - AIC:2922.178151133141
ARIMA(0, 0, 0)x(1, 1, 0, 12)12 - AIC:2767.105066400224
ARIMA(0, 0, 0)x(1, 1, 1, 12)12 - AIC:2691.233398643673
ARIMA(0, 0, 1)x(0, 0, 0, 12)12 - AIC:3890.816777796087
ARIMA(0, 0, 1)x(0, 0, 1, 12)12 - AIC:3541.1171286722
ARIMA(0, 0, 1)x(0, 1, 0, 12)12 - AIC:3028.8377323188824
ARIMA(0, 0, 1)x(0, 1, 1, 12)12 - AIC:2746.77973129136
ARIMA(0, 0, 1)x(1, 0, 0, 12)12 - AIC:3583.523640623017
ARIMA(0, 0, 1)x(1, 0, 1, 12)12 - AIC:3531.2937768990187
ARIMA(0, 0, 1)x(1, 1, 0, 12)12 - AIC:2781.198675746594
ARIMA(0, 0, 1)x(1, 1, 1, 12)12 - AIC:2720.7023088205974
ARIMA(0, 1, 0)x(0, 0, 1, 12)12 - AIC:3029.089945668332
ARIMA(0, 1, 0)x(0, 1, 1, 12)12 - AIC:2568.2832251221016
ARIMA(0, 1, 0)x(1, 0, 0, 12)12 - AIC:2841.315781459511
ARIMA(0, 1, 0)x(1, 0, 1, 12)12 - AIC:2815.4011044132576
ARIMA(0, 1, 0)x(1, 1, 0, 12)12 - AIC:2588.533386513587
ARIMA(0, 1, 0)x(1, 1, 1, 12)12 - AIC:2569.9453272483315
ARIMA(0, 1, 1)x(0, 0, 0, 12)12 - AIC:3327.5177587522303
ARIMA(0, 1, 1)x(0, 0, 1, 12)12 - AIC:2984.716706112334
ARIMA(0, 1, 1)x(0, 1, 0, 12)12 - AIC:2789.128542154043
ARIMA(0, 1, 1)x(0, 1, 1, 12)12 - AIC:2537.0293659293943
ARIMA(0, 1, 1)x(1, 0, 0, 12)12 - AIC:2984.4555708516436
ARIMA(0, 1, 1)x(1, 0, 1, 12)12 - AIC:2939.460958374472
ARIMA(0, 1, 1)x(1, 1, 0, 12)12 - AIC:2578.7862352774437
ARIMA(0, 1, 1)x(1, 1, 1, 12)12 - AIC:2537.771484229265
ARIMA(1, 0, 0)x(0, 0, 0, 12)12 - AIC:3391.5248913820797
ARIMA(1, 0, 0)x(0, 0, 1, 12)12 - AIC:3038.142074281268
C:\Users\Dell\Anaconda3\lib\site-packages\statsmodels\base\model.py:496: ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals
  "Check mle_retvals", ConvergenceWarning)
ARIMA(1, 0, 0)x(0, 1, 0, 12)12 - AIC:2839.809192263449
ARIMA(1, 0, 0)x(0, 1, 1, 12)12 - AIC:2588.50367175184
ARIMA(1, 0, 0)x(1, 0, 0, 12)12 - AIC:2993.4630440139595
ARIMA(1, 0, 0)x(1, 0, 1, 12)12 - AIC:2995.049216326931
ARIMA(1, 0, 0)x(1, 1, 0, 12)12 - AIC:2588.2463284315304
ARIMA(1, 0, 0)x(1, 1, 1, 12)12 - AIC:2592.80110502723
ARIMA(1, 0, 1)x(0, 0, 0, 12)12 - AIC:3352.0350133621478
ARIMA(1, 0, 1)x(0, 0, 1, 12)12 - AIC:3006.5493366627807
ARIMA(1, 0, 1)x(0, 1, 0, 12)12 - AIC:2810.6423724894516
ARIMA(1, 0, 1)x(0, 1, 1, 12)12 - AIC:2559.584031948852
ARIMA(1, 0, 1)x(1, 0, 0, 12)12 - AIC:2981.2250436794675
ARIMA(1, 0, 1)x(1, 0, 1, 12)12 - AIC:2959.3142304724834
ARIMA(1, 0, 1)x(1, 1, 0, 12)12 - AIC:2579.8245645892207
ARIMA(1, 0, 1)x(1, 1, 1, 12)12 - AIC:2563.13922589258
ARIMA(1, 1, 0)x(0, 0, 0, 12)12 - AIC:3354.7462930846423
ARIMA(1, 1, 0)x(0, 0, 1, 12)12 - AIC:3006.702997636003
ARIMA(1, 1, 0)x(0, 1, 0, 12)12 - AIC:2809.3844175191666
ARIMA(1, 1, 0)x(0, 1, 1, 12)12 - AIC:2558.484602766447
ARIMA(1, 1, 0)x(1, 0, 0, 12)12 - AIC:2959.885810636943
ARIMA(1, 1, 0)x(1, 0, 1, 12)12 - AIC:2960.712709764296
ARIMA(1, 1, 0)x(1, 1, 0, 12)12 - AIC:2557.945907092698
ARIMA(1, 1, 0)x(1, 1, 1, 12)12 - AIC:2559.274166458508
ARIMA(1, 1, 1)x(0, 0, 0, 12)12 - AIC:3326.3285511700374
ARIMA(1, 1, 1)x(0, 0, 1, 12)12 - AIC:2985.868532151721
ARIMA(1, 1, 1)x(0, 1, 0, 12)12 - AIC:2790.7677149967103
ARIMA(1, 1, 1)x(0, 1, 1, 12)12 - AIC:2538.820635541546
ARIMA(1, 1, 1)x(1, 0, 0, 12)12 - AIC:2963.2789505804294
ARIMA(1, 1, 1)x(1, 0, 1, 12)12 - AIC:2941.2436984747465
ARIMA(1, 1, 1)x(1, 1, 0, 12)12 - AIC:2559.8258191422606
ARIMA(1, 1, 1)x(1, 1, 1, 12)12 - AIC:2539.712354465328

In [32]:
warnings.filterwarnings("ignore") # specify to ignore warning messages
c3=[]
for param in pdq:
    for param_seasonal in seasonal_pdq:
        try:
            mod = sm.tsa.statespace.SARIMAX(y,
                                            order=param,
                                            seasonal_order=param_seasonal,
                                            enforce_stationarity=False,
                                            enforce_invertibility=False)

            results = mod.fit()

            c3.append( results.aic)
        except:
            continue

In [33]:
c3


Out[33]:
[3618.0303991426763,
 2824.7439963684233,
 2942.2733127230185,
 2922.178151133141,
 2767.1050664002241,
 2691.2333986436729,
 3890.8167777960871,
 3541.1171286722001,
 3028.8377323188824,
 2746.7797312913599,
 3583.5236406230169,
 3531.2937768990187,
 2781.1986757465938,
 2720.7023088205974,
 3029.0899456683319,
 2568.2832251221016,
 2841.3157814595111,
 2815.4011044132576,
 2588.5333865135872,
 2569.9453272483315,
 3327.5177587522303,
 2984.7167061123341,
 2789.1285421540429,
 2537.0293659293943,
 2984.4555708516436,
 2939.4609583744718,
 2578.7862352774437,
 2537.7714842292648,
 3391.5248913820797,
 3038.1420742812679,
 2839.8091922634489,
 2588.5036717518401,
 2993.4630440139595,
 2995.0492163269309,
 2588.2463284315304,
 2592.8011050272298,
 3352.0350133621478,
 3006.5493366627807,
 2810.6423724894516,
 2559.584031948852,
 2981.2250436794675,
 2959.3142304724834,
 2579.8245645892207,
 2563.1392258925798,
 3354.7462930846423,
 3006.7029976360031,
 2809.3844175191666,
 2558.4846027664471,
 2959.885810636943,
 2960.7127097642961,
 2557.9459070926978,
 2559.2741664585078,
 3326.3285511700374,
 2985.868532151721,
 2790.7677149967103,
 2538.8206355415459,
 2963.2789505804294,
 2941.2436984747465,
 2559.8258191422606,
 2539.7123544653282]

In [36]:
len(c3)


Out[36]:
60

In [34]:
index_min = np.argmin(c3)

In [35]:
index_min


Out[35]:
23

In [37]:
from statsmodels.tsa.x13 import x13_arima_select_order

In [ ]:


In [38]:
mod = sm.tsa.statespace.SARIMAX(df.AirPassengers, trend='n', order=(0,1,1), seasonal_order=(0,1,1,12))
results = mod.fit()
print (results.summary())


                                 Statespace Model Results                                 
==========================================================================================
Dep. Variable:                      AirPassengers   No. Observations:                  144
Model:             SARIMAX(0, 1, 1)x(0, 1, 1, 12)   Log Likelihood               -1413.963
Date:                            Mon, 29 May 2017   AIC                           2833.926
Time:                                    20:35:50   BIC                           2842.835
Sample:                                01-01-1949   HQIC                          2837.546
                                     - 12-01-1960                                         
Covariance Type:                              opg                                         
==============================================================================
                 coef    std err          z      P>|z|      [0.025      0.975]
------------------------------------------------------------------------------
ma.L1         -0.2174      0.054     -4.011      0.000      -0.324      -0.111
ma.S.L12      -0.1069      0.094     -1.138      0.255      -0.291       0.077
sigma2      1.424e+08   1.64e-10   8.67e+17      0.000    1.42e+08    1.42e+08
===================================================================================
Ljung-Box (Q):                       54.51   Jarque-Bera (JB):                10.78
Prob(Q):                              0.06   Prob(JB):                         0.00
Heteroskedasticity (H):               2.38   Skew:                             0.16
Prob(H) (two-sided):                  0.00   Kurtosis:                         4.37
===================================================================================

Warnings:
[1] Covariance matrix calculated using the outer product of gradients (complex-step).
[2] Covariance matrix is singular or near-singular, with condition number 2.47e+33. Standard errors may be unstable.

In [39]:
results.predict(start=138,end=154)


Out[39]:
1960-07-01    606873.955870
1960-08-01    629882.608813
1960-09-01    515108.700644
1960-10-01    454595.480491
1960-11-01    414268.710944
1960-12-01    436615.191517
1961-01-01    445967.930514
1961-02-01    420788.308017
1961-03-01    452420.585549
1961-04-01    488822.325998
1961-05-01    501099.437177
1961-06-01    563144.145745
1961-07-01    648722.910934
1961-08-01    635628.280420
1961-09-01    537833.345343
1961-10-01    489983.278061
1961-11-01    421727.227980
Freq: MS, dtype: float64

In [43]:
df2=pd.DataFrame(results.predict(start=0,end=154))

In [44]:
df2


Out[44]:
0
1949-01-01 0.000000
1949-02-01 89058.777560
1949-03-01 111769.729264
1949-04-01 127635.153436
1949-05-01 128705.492363
1949-06-01 122662.705144
1949-07-01 132337.835494
1949-08-01 144620.388881
1949-09-01 147270.741198
1949-10-01 138432.021594
1949-11-01 123193.077927
1949-12-01 110722.291890
1950-01-01 215991.276581
1950-02-01 142197.656384
1950-03-01 142053.954960
1950-04-01 138546.542951
1950-05-01 128613.429544
1950-06-01 138316.659262
1950-07-01 158315.110297
1950-08-01 167460.313631
1950-09-01 158704.672979
1950-10-01 142932.738219
1950-11-01 121728.192862
1950-12-01 128433.662270
1951-01-01 145387.184067
1951-02-01 155484.186595
1951-03-01 165928.403362
1951-04-01 169730.859476
1951-05-01 154766.901190
1951-06-01 191028.223113
... ...
1959-06-01 488809.426478
1959-07-01 530228.286425
1959-08-01 556730.003688
1959-09-01 461737.123886
1959-10-01 416548.365776
1959-11-01 360902.880719
1959-12-01 389240.307597
1960-01-01 422597.141368
1960-02-01 399888.534634
1960-03-01 454900.145015
1960-04-01 416449.467057
1960-05-01 474259.995726
1960-06-01 526557.563686
1960-07-01 606873.955870
1960-08-01 629882.608813
1960-09-01 515108.700644
1960-10-01 454595.480491
1960-11-01 414268.710944
1960-12-01 436615.191517
1961-01-01 445967.930514
1961-02-01 420788.308017
1961-03-01 452420.585549
1961-04-01 488822.325998
1961-05-01 501099.437177
1961-06-01 563144.145745
1961-07-01 648722.910934
1961-08-01 635628.280420
1961-09-01 537833.345343
1961-10-01 489983.278061
1961-11-01 421727.227980

155 rows × 1 columns


In [45]:
df2.plot()


Out[45]:
<matplotlib.axes._subplots.AxesSubplot at 0xb382048>

In [46]:
aus=pd.read_csv("https://vincentarelbundock.github.io/Rdatasets/csv/datasets/austres.csv ")

In [48]:
aus=aus.drop('Unnamed: 0',1)

In [49]:
aus.head()


Out[49]:
time austres
0 1971.25 13067.3
1 1971.50 13130.5
2 1971.75 13198.4
3 1972.00 13254.2
4 1972.25 13303.7

In [52]:
start = datetime.datetime.strptime("1971-03-31", "%Y-%m-%d")
print(start)


1971-03-31 00:00:00

In [53]:
date_list = [start + relativedelta(months=x) for x in range(0,3*aus.shape[0])]

In [54]:
date_list


Out[54]:
[datetime.datetime(1971, 3, 31, 0, 0),
 datetime.datetime(1971, 4, 30, 0, 0),
 datetime.datetime(1971, 5, 31, 0, 0),
 datetime.datetime(1971, 6, 30, 0, 0),
 datetime.datetime(1971, 7, 31, 0, 0),
 datetime.datetime(1971, 8, 31, 0, 0),
 datetime.datetime(1971, 9, 30, 0, 0),
 datetime.datetime(1971, 10, 31, 0, 0),
 datetime.datetime(1971, 11, 30, 0, 0),
 datetime.datetime(1971, 12, 31, 0, 0),
 datetime.datetime(1972, 1, 31, 0, 0),
 datetime.datetime(1972, 2, 29, 0, 0),
 datetime.datetime(1972, 3, 31, 0, 0),
 datetime.datetime(1972, 4, 30, 0, 0),
 datetime.datetime(1972, 5, 31, 0, 0),
 datetime.datetime(1972, 6, 30, 0, 0),
 datetime.datetime(1972, 7, 31, 0, 0),
 datetime.datetime(1972, 8, 31, 0, 0),
 datetime.datetime(1972, 9, 30, 0, 0),
 datetime.datetime(1972, 10, 31, 0, 0),
 datetime.datetime(1972, 11, 30, 0, 0),
 datetime.datetime(1972, 12, 31, 0, 0),
 datetime.datetime(1973, 1, 31, 0, 0),
 datetime.datetime(1973, 2, 28, 0, 0),
 datetime.datetime(1973, 3, 31, 0, 0),
 datetime.datetime(1973, 4, 30, 0, 0),
 datetime.datetime(1973, 5, 31, 0, 0),
 datetime.datetime(1973, 6, 30, 0, 0),
 datetime.datetime(1973, 7, 31, 0, 0),
 datetime.datetime(1973, 8, 31, 0, 0),
 datetime.datetime(1973, 9, 30, 0, 0),
 datetime.datetime(1973, 10, 31, 0, 0),
 datetime.datetime(1973, 11, 30, 0, 0),
 datetime.datetime(1973, 12, 31, 0, 0),
 datetime.datetime(1974, 1, 31, 0, 0),
 datetime.datetime(1974, 2, 28, 0, 0),
 datetime.datetime(1974, 3, 31, 0, 0),
 datetime.datetime(1974, 4, 30, 0, 0),
 datetime.datetime(1974, 5, 31, 0, 0),
 datetime.datetime(1974, 6, 30, 0, 0),
 datetime.datetime(1974, 7, 31, 0, 0),
 datetime.datetime(1974, 8, 31, 0, 0),
 datetime.datetime(1974, 9, 30, 0, 0),
 datetime.datetime(1974, 10, 31, 0, 0),
 datetime.datetime(1974, 11, 30, 0, 0),
 datetime.datetime(1974, 12, 31, 0, 0),
 datetime.datetime(1975, 1, 31, 0, 0),
 datetime.datetime(1975, 2, 28, 0, 0),
 datetime.datetime(1975, 3, 31, 0, 0),
 datetime.datetime(1975, 4, 30, 0, 0),
 datetime.datetime(1975, 5, 31, 0, 0),
 datetime.datetime(1975, 6, 30, 0, 0),
 datetime.datetime(1975, 7, 31, 0, 0),
 datetime.datetime(1975, 8, 31, 0, 0),
 datetime.datetime(1975, 9, 30, 0, 0),
 datetime.datetime(1975, 10, 31, 0, 0),
 datetime.datetime(1975, 11, 30, 0, 0),
 datetime.datetime(1975, 12, 31, 0, 0),
 datetime.datetime(1976, 1, 31, 0, 0),
 datetime.datetime(1976, 2, 29, 0, 0),
 datetime.datetime(1976, 3, 31, 0, 0),
 datetime.datetime(1976, 4, 30, 0, 0),
 datetime.datetime(1976, 5, 31, 0, 0),
 datetime.datetime(1976, 6, 30, 0, 0),
 datetime.datetime(1976, 7, 31, 0, 0),
 datetime.datetime(1976, 8, 31, 0, 0),
 datetime.datetime(1976, 9, 30, 0, 0),
 datetime.datetime(1976, 10, 31, 0, 0),
 datetime.datetime(1976, 11, 30, 0, 0),
 datetime.datetime(1976, 12, 31, 0, 0),
 datetime.datetime(1977, 1, 31, 0, 0),
 datetime.datetime(1977, 2, 28, 0, 0),
 datetime.datetime(1977, 3, 31, 0, 0),
 datetime.datetime(1977, 4, 30, 0, 0),
 datetime.datetime(1977, 5, 31, 0, 0),
 datetime.datetime(1977, 6, 30, 0, 0),
 datetime.datetime(1977, 7, 31, 0, 0),
 datetime.datetime(1977, 8, 31, 0, 0),
 datetime.datetime(1977, 9, 30, 0, 0),
 datetime.datetime(1977, 10, 31, 0, 0),
 datetime.datetime(1977, 11, 30, 0, 0),
 datetime.datetime(1977, 12, 31, 0, 0),
 datetime.datetime(1978, 1, 31, 0, 0),
 datetime.datetime(1978, 2, 28, 0, 0),
 datetime.datetime(1978, 3, 31, 0, 0),
 datetime.datetime(1978, 4, 30, 0, 0),
 datetime.datetime(1978, 5, 31, 0, 0),
 datetime.datetime(1978, 6, 30, 0, 0),
 datetime.datetime(1978, 7, 31, 0, 0),
 datetime.datetime(1978, 8, 31, 0, 0),
 datetime.datetime(1978, 9, 30, 0, 0),
 datetime.datetime(1978, 10, 31, 0, 0),
 datetime.datetime(1978, 11, 30, 0, 0),
 datetime.datetime(1978, 12, 31, 0, 0),
 datetime.datetime(1979, 1, 31, 0, 0),
 datetime.datetime(1979, 2, 28, 0, 0),
 datetime.datetime(1979, 3, 31, 0, 0),
 datetime.datetime(1979, 4, 30, 0, 0),
 datetime.datetime(1979, 5, 31, 0, 0),
 datetime.datetime(1979, 6, 30, 0, 0),
 datetime.datetime(1979, 7, 31, 0, 0),
 datetime.datetime(1979, 8, 31, 0, 0),
 datetime.datetime(1979, 9, 30, 0, 0),
 datetime.datetime(1979, 10, 31, 0, 0),
 datetime.datetime(1979, 11, 30, 0, 0),
 datetime.datetime(1979, 12, 31, 0, 0),
 datetime.datetime(1980, 1, 31, 0, 0),
 datetime.datetime(1980, 2, 29, 0, 0),
 datetime.datetime(1980, 3, 31, 0, 0),
 datetime.datetime(1980, 4, 30, 0, 0),
 datetime.datetime(1980, 5, 31, 0, 0),
 datetime.datetime(1980, 6, 30, 0, 0),
 datetime.datetime(1980, 7, 31, 0, 0),
 datetime.datetime(1980, 8, 31, 0, 0),
 datetime.datetime(1980, 9, 30, 0, 0),
 datetime.datetime(1980, 10, 31, 0, 0),
 datetime.datetime(1980, 11, 30, 0, 0),
 datetime.datetime(1980, 12, 31, 0, 0),
 datetime.datetime(1981, 1, 31, 0, 0),
 datetime.datetime(1981, 2, 28, 0, 0),
 datetime.datetime(1981, 3, 31, 0, 0),
 datetime.datetime(1981, 4, 30, 0, 0),
 datetime.datetime(1981, 5, 31, 0, 0),
 datetime.datetime(1981, 6, 30, 0, 0),
 datetime.datetime(1981, 7, 31, 0, 0),
 datetime.datetime(1981, 8, 31, 0, 0),
 datetime.datetime(1981, 9, 30, 0, 0),
 datetime.datetime(1981, 10, 31, 0, 0),
 datetime.datetime(1981, 11, 30, 0, 0),
 datetime.datetime(1981, 12, 31, 0, 0),
 datetime.datetime(1982, 1, 31, 0, 0),
 datetime.datetime(1982, 2, 28, 0, 0),
 datetime.datetime(1982, 3, 31, 0, 0),
 datetime.datetime(1982, 4, 30, 0, 0),
 datetime.datetime(1982, 5, 31, 0, 0),
 datetime.datetime(1982, 6, 30, 0, 0),
 datetime.datetime(1982, 7, 31, 0, 0),
 datetime.datetime(1982, 8, 31, 0, 0),
 datetime.datetime(1982, 9, 30, 0, 0),
 datetime.datetime(1982, 10, 31, 0, 0),
 datetime.datetime(1982, 11, 30, 0, 0),
 datetime.datetime(1982, 12, 31, 0, 0),
 datetime.datetime(1983, 1, 31, 0, 0),
 datetime.datetime(1983, 2, 28, 0, 0),
 datetime.datetime(1983, 3, 31, 0, 0),
 datetime.datetime(1983, 4, 30, 0, 0),
 datetime.datetime(1983, 5, 31, 0, 0),
 datetime.datetime(1983, 6, 30, 0, 0),
 datetime.datetime(1983, 7, 31, 0, 0),
 datetime.datetime(1983, 8, 31, 0, 0),
 datetime.datetime(1983, 9, 30, 0, 0),
 datetime.datetime(1983, 10, 31, 0, 0),
 datetime.datetime(1983, 11, 30, 0, 0),
 datetime.datetime(1983, 12, 31, 0, 0),
 datetime.datetime(1984, 1, 31, 0, 0),
 datetime.datetime(1984, 2, 29, 0, 0),
 datetime.datetime(1984, 3, 31, 0, 0),
 datetime.datetime(1984, 4, 30, 0, 0),
 datetime.datetime(1984, 5, 31, 0, 0),
 datetime.datetime(1984, 6, 30, 0, 0),
 datetime.datetime(1984, 7, 31, 0, 0),
 datetime.datetime(1984, 8, 31, 0, 0),
 datetime.datetime(1984, 9, 30, 0, 0),
 datetime.datetime(1984, 10, 31, 0, 0),
 datetime.datetime(1984, 11, 30, 0, 0),
 datetime.datetime(1984, 12, 31, 0, 0),
 datetime.datetime(1985, 1, 31, 0, 0),
 datetime.datetime(1985, 2, 28, 0, 0),
 datetime.datetime(1985, 3, 31, 0, 0),
 datetime.datetime(1985, 4, 30, 0, 0),
 datetime.datetime(1985, 5, 31, 0, 0),
 datetime.datetime(1985, 6, 30, 0, 0),
 datetime.datetime(1985, 7, 31, 0, 0),
 datetime.datetime(1985, 8, 31, 0, 0),
 datetime.datetime(1985, 9, 30, 0, 0),
 datetime.datetime(1985, 10, 31, 0, 0),
 datetime.datetime(1985, 11, 30, 0, 0),
 datetime.datetime(1985, 12, 31, 0, 0),
 datetime.datetime(1986, 1, 31, 0, 0),
 datetime.datetime(1986, 2, 28, 0, 0),
 datetime.datetime(1986, 3, 31, 0, 0),
 datetime.datetime(1986, 4, 30, 0, 0),
 datetime.datetime(1986, 5, 31, 0, 0),
 datetime.datetime(1986, 6, 30, 0, 0),
 datetime.datetime(1986, 7, 31, 0, 0),
 datetime.datetime(1986, 8, 31, 0, 0),
 datetime.datetime(1986, 9, 30, 0, 0),
 datetime.datetime(1986, 10, 31, 0, 0),
 datetime.datetime(1986, 11, 30, 0, 0),
 datetime.datetime(1986, 12, 31, 0, 0),
 datetime.datetime(1987, 1, 31, 0, 0),
 datetime.datetime(1987, 2, 28, 0, 0),
 datetime.datetime(1987, 3, 31, 0, 0),
 datetime.datetime(1987, 4, 30, 0, 0),
 datetime.datetime(1987, 5, 31, 0, 0),
 datetime.datetime(1987, 6, 30, 0, 0),
 datetime.datetime(1987, 7, 31, 0, 0),
 datetime.datetime(1987, 8, 31, 0, 0),
 datetime.datetime(1987, 9, 30, 0, 0),
 datetime.datetime(1987, 10, 31, 0, 0),
 datetime.datetime(1987, 11, 30, 0, 0),
 datetime.datetime(1987, 12, 31, 0, 0),
 datetime.datetime(1988, 1, 31, 0, 0),
 datetime.datetime(1988, 2, 29, 0, 0),
 datetime.datetime(1988, 3, 31, 0, 0),
 datetime.datetime(1988, 4, 30, 0, 0),
 datetime.datetime(1988, 5, 31, 0, 0),
 datetime.datetime(1988, 6, 30, 0, 0),
 datetime.datetime(1988, 7, 31, 0, 0),
 datetime.datetime(1988, 8, 31, 0, 0),
 datetime.datetime(1988, 9, 30, 0, 0),
 datetime.datetime(1988, 10, 31, 0, 0),
 datetime.datetime(1988, 11, 30, 0, 0),
 datetime.datetime(1988, 12, 31, 0, 0),
 datetime.datetime(1989, 1, 31, 0, 0),
 datetime.datetime(1989, 2, 28, 0, 0),
 datetime.datetime(1989, 3, 31, 0, 0),
 datetime.datetime(1989, 4, 30, 0, 0),
 datetime.datetime(1989, 5, 31, 0, 0),
 datetime.datetime(1989, 6, 30, 0, 0),
 datetime.datetime(1989, 7, 31, 0, 0),
 datetime.datetime(1989, 8, 31, 0, 0),
 datetime.datetime(1989, 9, 30, 0, 0),
 datetime.datetime(1989, 10, 31, 0, 0),
 datetime.datetime(1989, 11, 30, 0, 0),
 datetime.datetime(1989, 12, 31, 0, 0),
 datetime.datetime(1990, 1, 31, 0, 0),
 datetime.datetime(1990, 2, 28, 0, 0),
 datetime.datetime(1990, 3, 31, 0, 0),
 datetime.datetime(1990, 4, 30, 0, 0),
 datetime.datetime(1990, 5, 31, 0, 0),
 datetime.datetime(1990, 6, 30, 0, 0),
 datetime.datetime(1990, 7, 31, 0, 0),
 datetime.datetime(1990, 8, 31, 0, 0),
 datetime.datetime(1990, 9, 30, 0, 0),
 datetime.datetime(1990, 10, 31, 0, 0),
 datetime.datetime(1990, 11, 30, 0, 0),
 datetime.datetime(1990, 12, 31, 0, 0),
 datetime.datetime(1991, 1, 31, 0, 0),
 datetime.datetime(1991, 2, 28, 0, 0),
 datetime.datetime(1991, 3, 31, 0, 0),
 datetime.datetime(1991, 4, 30, 0, 0),
 datetime.datetime(1991, 5, 31, 0, 0),
 datetime.datetime(1991, 6, 30, 0, 0),
 datetime.datetime(1991, 7, 31, 0, 0),
 datetime.datetime(1991, 8, 31, 0, 0),
 datetime.datetime(1991, 9, 30, 0, 0),
 datetime.datetime(1991, 10, 31, 0, 0),
 datetime.datetime(1991, 11, 30, 0, 0),
 datetime.datetime(1991, 12, 31, 0, 0),
 datetime.datetime(1992, 1, 31, 0, 0),
 datetime.datetime(1992, 2, 29, 0, 0),
 datetime.datetime(1992, 3, 31, 0, 0),
 datetime.datetime(1992, 4, 30, 0, 0),
 datetime.datetime(1992, 5, 31, 0, 0),
 datetime.datetime(1992, 6, 30, 0, 0),
 datetime.datetime(1992, 7, 31, 0, 0),
 datetime.datetime(1992, 8, 31, 0, 0),
 datetime.datetime(1992, 9, 30, 0, 0),
 datetime.datetime(1992, 10, 31, 0, 0),
 datetime.datetime(1992, 11, 30, 0, 0),
 datetime.datetime(1992, 12, 31, 0, 0),
 datetime.datetime(1993, 1, 31, 0, 0),
 datetime.datetime(1993, 2, 28, 0, 0),
 datetime.datetime(1993, 3, 31, 0, 0),
 datetime.datetime(1993, 4, 30, 0, 0),
 datetime.datetime(1993, 5, 31, 0, 0)]

In [56]:
c2=[]
for i in range(0,3*len(aus),3):
    c2.append(date_list[i])

In [57]:
c2


Out[57]:
[datetime.datetime(1971, 3, 31, 0, 0),
 datetime.datetime(1971, 6, 30, 0, 0),
 datetime.datetime(1971, 9, 30, 0, 0),
 datetime.datetime(1971, 12, 31, 0, 0),
 datetime.datetime(1972, 3, 31, 0, 0),
 datetime.datetime(1972, 6, 30, 0, 0),
 datetime.datetime(1972, 9, 30, 0, 0),
 datetime.datetime(1972, 12, 31, 0, 0),
 datetime.datetime(1973, 3, 31, 0, 0),
 datetime.datetime(1973, 6, 30, 0, 0),
 datetime.datetime(1973, 9, 30, 0, 0),
 datetime.datetime(1973, 12, 31, 0, 0),
 datetime.datetime(1974, 3, 31, 0, 0),
 datetime.datetime(1974, 6, 30, 0, 0),
 datetime.datetime(1974, 9, 30, 0, 0),
 datetime.datetime(1974, 12, 31, 0, 0),
 datetime.datetime(1975, 3, 31, 0, 0),
 datetime.datetime(1975, 6, 30, 0, 0),
 datetime.datetime(1975, 9, 30, 0, 0),
 datetime.datetime(1975, 12, 31, 0, 0),
 datetime.datetime(1976, 3, 31, 0, 0),
 datetime.datetime(1976, 6, 30, 0, 0),
 datetime.datetime(1976, 9, 30, 0, 0),
 datetime.datetime(1976, 12, 31, 0, 0),
 datetime.datetime(1977, 3, 31, 0, 0),
 datetime.datetime(1977, 6, 30, 0, 0),
 datetime.datetime(1977, 9, 30, 0, 0),
 datetime.datetime(1977, 12, 31, 0, 0),
 datetime.datetime(1978, 3, 31, 0, 0),
 datetime.datetime(1978, 6, 30, 0, 0),
 datetime.datetime(1978, 9, 30, 0, 0),
 datetime.datetime(1978, 12, 31, 0, 0),
 datetime.datetime(1979, 3, 31, 0, 0),
 datetime.datetime(1979, 6, 30, 0, 0),
 datetime.datetime(1979, 9, 30, 0, 0),
 datetime.datetime(1979, 12, 31, 0, 0),
 datetime.datetime(1980, 3, 31, 0, 0),
 datetime.datetime(1980, 6, 30, 0, 0),
 datetime.datetime(1980, 9, 30, 0, 0),
 datetime.datetime(1980, 12, 31, 0, 0),
 datetime.datetime(1981, 3, 31, 0, 0),
 datetime.datetime(1981, 6, 30, 0, 0),
 datetime.datetime(1981, 9, 30, 0, 0),
 datetime.datetime(1981, 12, 31, 0, 0),
 datetime.datetime(1982, 3, 31, 0, 0),
 datetime.datetime(1982, 6, 30, 0, 0),
 datetime.datetime(1982, 9, 30, 0, 0),
 datetime.datetime(1982, 12, 31, 0, 0),
 datetime.datetime(1983, 3, 31, 0, 0),
 datetime.datetime(1983, 6, 30, 0, 0),
 datetime.datetime(1983, 9, 30, 0, 0),
 datetime.datetime(1983, 12, 31, 0, 0),
 datetime.datetime(1984, 3, 31, 0, 0),
 datetime.datetime(1984, 6, 30, 0, 0),
 datetime.datetime(1984, 9, 30, 0, 0),
 datetime.datetime(1984, 12, 31, 0, 0),
 datetime.datetime(1985, 3, 31, 0, 0),
 datetime.datetime(1985, 6, 30, 0, 0),
 datetime.datetime(1985, 9, 30, 0, 0),
 datetime.datetime(1985, 12, 31, 0, 0),
 datetime.datetime(1986, 3, 31, 0, 0),
 datetime.datetime(1986, 6, 30, 0, 0),
 datetime.datetime(1986, 9, 30, 0, 0),
 datetime.datetime(1986, 12, 31, 0, 0),
 datetime.datetime(1987, 3, 31, 0, 0),
 datetime.datetime(1987, 6, 30, 0, 0),
 datetime.datetime(1987, 9, 30, 0, 0),
 datetime.datetime(1987, 12, 31, 0, 0),
 datetime.datetime(1988, 3, 31, 0, 0),
 datetime.datetime(1988, 6, 30, 0, 0),
 datetime.datetime(1988, 9, 30, 0, 0),
 datetime.datetime(1988, 12, 31, 0, 0),
 datetime.datetime(1989, 3, 31, 0, 0),
 datetime.datetime(1989, 6, 30, 0, 0),
 datetime.datetime(1989, 9, 30, 0, 0),
 datetime.datetime(1989, 12, 31, 0, 0),
 datetime.datetime(1990, 3, 31, 0, 0),
 datetime.datetime(1990, 6, 30, 0, 0),
 datetime.datetime(1990, 9, 30, 0, 0),
 datetime.datetime(1990, 12, 31, 0, 0),
 datetime.datetime(1991, 3, 31, 0, 0),
 datetime.datetime(1991, 6, 30, 0, 0),
 datetime.datetime(1991, 9, 30, 0, 0),
 datetime.datetime(1991, 12, 31, 0, 0),
 datetime.datetime(1992, 3, 31, 0, 0),
 datetime.datetime(1992, 6, 30, 0, 0),
 datetime.datetime(1992, 9, 30, 0, 0),
 datetime.datetime(1992, 12, 31, 0, 0),
 datetime.datetime(1993, 3, 31, 0, 0)]

In [59]:
aus['index'] =c2
aus.set_index(['index'], inplace=True)
aus.index.name=None

In [60]:
aus.head()


Out[60]:
time austres
1971-03-31 1971.25 13067.3
1971-06-30 1971.50 13130.5
1971-09-30 1971.75 13198.4
1971-12-31 1972.00 13254.2
1972-03-31 1972.25 13303.7

In [61]:
aus=aus.drop('time',1)

In [62]:
y=aus

In [63]:
warnings.filterwarnings("ignore") # specify to ignore warning messages
c4=[]
for param in pdq:
    for param_seasonal in seasonal_pdq:
        try:
            mod = sm.tsa.statespace.SARIMAX(y,
                                            order=param,
                                            seasonal_order=param_seasonal,
                                            enforce_stationarity=False,
                                            enforce_invertibility=False)

            results = mod.fit()

            print('ARIMA{}x{}12 - AIC:{}'.format(param, param_seasonal, results.aic))
            c4.append('ARIMA{}x{}12 - AIC:{}'.format(param, param_seasonal, results.aic))
        except:
            continue


ARIMA(0, 0, 0)x(0, 0, 1, 12)12 - AIC:1640.498695405866
ARIMA(0, 0, 0)x(0, 1, 1, 12)12 - AIC:957.7157324475122
ARIMA(0, 0, 0)x(1, 0, 0, 12)12 - AIC:901.8737542488778
ARIMA(0, 0, 0)x(1, 0, 1, 12)12 - AIC:893.4970589310027
ARIMA(0, 0, 0)x(1, 1, 0, 12)12 - AIC:821.5535708474058
ARIMA(0, 0, 0)x(1, 1, 1, 12)12 - AIC:789.9330545732091
ARIMA(0, 0, 1)x(0, 0, 0, 12)12 - AIC:1866.0471769096082
ARIMA(0, 0, 1)x(0, 0, 1, 12)12 - AIC:3925.760426368583
ARIMA(0, 0, 1)x(0, 1, 0, 12)12 - AIC:1086.733456078065
ARIMA(0, 0, 1)x(0, 1, 1, 12)12 - AIC:917.9195061799221
ARIMA(0, 0, 1)x(1, 0, 0, 12)12 - AIC:808.5017824725799
ARIMA(0, 0, 1)x(1, 0, 1, 12)12 - AIC:1543.673635439925
ARIMA(0, 0, 1)x(1, 1, 0, 12)12 - AIC:742.4302886984069
ARIMA(0, 0, 1)x(1, 1, 1, 12)12 - AIC:722.8237967086055
ARIMA(0, 1, 0)x(0, 0, 1, 12)12 - AIC:751.9874335168838
ARIMA(0, 1, 0)x(0, 1, 1, 12)12 - AIC:518.4115822594365
ARIMA(0, 1, 0)x(1, 0, 0, 12)12 - AIC:642.4135683750286
ARIMA(0, 1, 0)x(1, 0, 1, 12)12 - AIC:618.5002080638922
ARIMA(0, 1, 0)x(1, 1, 0, 12)12 - AIC:531.3805164392139
ARIMA(0, 1, 0)x(1, 1, 1, 12)12 - AIC:523.4816750307536
ARIMA(0, 1, 1)x(0, 0, 0, 12)12 - AIC:840.8735543936959
ARIMA(0, 1, 1)x(0, 0, 1, 12)12 - AIC:682.127882296428
ARIMA(0, 1, 1)x(0, 1, 0, 12)12 - AIC:603.9099307476866
ARIMA(0, 1, 1)x(0, 1, 1, 12)12 - AIC:495.8422863919097
ARIMA(0, 1, 1)x(1, 0, 0, 12)12 - AIC:617.5943005442614
ARIMA(0, 1, 1)x(1, 0, 1, 12)12 - AIC:591.2669779528502
ARIMA(0, 1, 1)x(1, 1, 0, 12)12 - AIC:513.4941880115649
ARIMA(0, 1, 1)x(1, 1, 1, 12)12 - AIC:499.3274255512188
ARIMA(1, 0, 0)x(0, 0, 0, 12)12 - AIC:693.3693646362891
ARIMA(1, 0, 0)x(0, 0, 1, 12)12 - AIC:602.5140387938435
ARIMA(1, 0, 0)x(0, 1, 0, 12)12 - AIC:645.001916659511
ARIMA(1, 0, 0)x(0, 1, 1, 12)12 - AIC:547.3449848000671
ARIMA(1, 0, 0)x(1, 0, 0, 12)12 - AIC:602.4556470408446
ARIMA(1, 0, 0)x(1, 0, 1, 12)12 - AIC:624.5638559731884
ARIMA(1, 0, 0)x(1, 1, 0, 12)12 - AIC:531.2783134356048
ARIMA(1, 0, 0)x(1, 1, 1, 12)12 - AIC:533.5546859038316
ARIMA(1, 0, 1)x(0, 0, 0, 12)12 - AIC:666.2777676583347
ARIMA(1, 0, 1)x(0, 0, 1, 12)12 - AIC:580.9817850545888
ARIMA(1, 0, 1)x(0, 1, 0, 12)12 - AIC:612.6194903691924
ARIMA(1, 0, 1)x(0, 1, 1, 12)12 - AIC:521.6892013270732
ARIMA(1, 0, 1)x(1, 0, 0, 12)12 - AIC:587.6090324333155
ARIMA(1, 0, 1)x(1, 0, 1, 12)12 - AIC:591.7145943326105
ARIMA(1, 0, 1)x(1, 1, 0, 12)12 - AIC:528.2690148815029
ARIMA(1, 0, 1)x(1, 1, 1, 12)12 - AIC:522.7935221968817
ARIMA(1, 1, 0)x(0, 0, 0, 12)12 - AIC:672.9256770997605
ARIMA(1, 1, 0)x(0, 0, 1, 12)12 - AIC:585.9149198758939
ARIMA(1, 1, 0)x(0, 1, 0, 12)12 - AIC:583.4588768991518
ARIMA(1, 1, 0)x(0, 1, 1, 12)12 - AIC:488.7871526210009
ARIMA(1, 1, 0)x(1, 0, 0, 12)12 - AIC:579.4968615966471
ARIMA(1, 1, 0)x(1, 0, 1, 12)12 - AIC:577.250438697217
ARIMA(1, 1, 0)x(1, 1, 0, 12)12 - AIC:489.46855508137503
ARIMA(1, 1, 0)x(1, 1, 1, 12)12 - AIC:491.36637011306703
ARIMA(1, 1, 1)x(0, 0, 0, 12)12 - AIC:647.409736875269
ARIMA(1, 1, 1)x(0, 0, 1, 12)12 - AIC:562.1176939708737
ARIMA(1, 1, 1)x(0, 1, 0, 12)12 - AIC:568.0507913265876
ARIMA(1, 1, 1)x(0, 1, 1, 12)12 - AIC:477.45261483171817
ARIMA(1, 1, 1)x(1, 0, 0, 12)12 - AIC:564.4880395495423
ARIMA(1, 1, 1)x(1, 0, 1, 12)12 - AIC:558.0865701996705
ARIMA(1, 1, 1)x(1, 1, 0, 12)12 - AIC:485.3372280690333
ARIMA(1, 1, 1)x(1, 1, 1, 12)12 - AIC:480.32582361973095

In [64]:
warnings.filterwarnings("ignore") # specify to ignore warning messages
c3=[]
for param in pdq:
    for param_seasonal in seasonal_pdq:
        try:
            mod = sm.tsa.statespace.SARIMAX(y,
                                            order=param,
                                            seasonal_order=param_seasonal,
                                            enforce_stationarity=False,
                                            enforce_invertibility=False)

            results = mod.fit()

            c3.append( results.aic)
        except:
            continue

In [65]:
c3


Out[65]:
[1640.4986954058661,
 957.71573244751221,
 901.87375424887784,
 893.4970589310027,
 821.55357084740581,
 789.93305457320912,
 1866.0471769096082,
 3925.760426368583,
 1086.733456078065,
 917.91950617992211,
 808.50178247257986,
 1543.673635439925,
 742.43028869840691,
 722.82379670860553,
 751.98743351688381,
 518.4115822594365,
 642.4135683750286,
 618.50020806389216,
 531.38051643921392,
 523.48167503075365,
 840.87355439369594,
 682.12788229642797,
 603.90993074768664,
 495.84228639190968,
 617.59430054426139,
 591.2669779528502,
 513.49418801156492,
 499.32742555121882,
 693.36936463628911,
 602.5140387938435,
 645.00191665951104,
 547.3449848000671,
 602.45564704084461,
 624.56385597318842,
 531.27831343560479,
 533.55468590383157,
 666.27776765833471,
 580.98178505458884,
 612.61949036919236,
 521.68920132707319,
 587.60903243331552,
 591.71459433261055,
 528.26901488150293,
 522.79352219688167,
 672.92567709976049,
 585.91491987589393,
 583.45887689915185,
 488.78715262100093,
 579.49686159664714,
 577.25043869721696,
 489.46855508137503,
 491.36637011306703,
 647.409736875269,
 562.11769397087369,
 568.05079132658761,
 477.45261483171817,
 564.48803954954235,
 558.08657019967052,
 485.3372280690333,
 480.32582361973095]

In [66]:
index_min = np.argmin(c3)

In [67]:
index_min


Out[67]:
55

In [68]:
c3[index_min]


Out[68]:
477.45261483171817

In [ ]:
#ARIMA(1, 1, 1)x(0, 1, 1, 12)12 - AIC:477.45261483171817

In [69]:
from statsmodels.tsa.x13 import x13_arima_select_order

In [71]:
order1=c4[index_min][6:13]
order1


Out[71]:
'1, 1, 1'

In [72]:
order1=[int(s) for s in order1.split(',')]
order1


Out[72]:
[1, 1, 1]

In [73]:
seasonal_order1=c4[index_min][16:27]
seasonal_order1


Out[73]:
'0, 1, 1, 12'

In [74]:
seasonal_order1=[int(s) for s in seasonal_order1.split(',')]
seasonal_order1


Out[74]:
[0, 1, 1, 12]

In [76]:
mod = sm.tsa.statespace.SARIMAX(y.austres, trend='n', order=order1, seasonal_order=seasonal_order1)

In [77]:
results = mod.fit()
print (results.summary())


                                 Statespace Model Results                                 
==========================================================================================
Dep. Variable:                            austres   No. Observations:                   89
Model:             SARIMAX(1, 1, 1)x(0, 1, 1, 12)   Log Likelihood                -283.908
Date:                            Mon, 29 May 2017   AIC                            575.816
Time:                                    20:52:06   BIC                            585.771
Sample:                                03-31-1971   HQIC                           579.829
                                     - 03-31-1993                                         
Covariance Type:                              opg                                         
==============================================================================
                 coef    std err          z      P>|z|      [0.025      0.975]
------------------------------------------------------------------------------
ar.L1          0.9163      0.066     13.797      0.000       0.786       1.047
ma.L1         -0.4557      0.139     -3.283      0.001      -0.728      -0.184
ma.S.L12      -0.4914      0.210     -2.345      0.019      -0.902      -0.081
sigma2        97.8677     10.160      9.633      0.000      77.955     117.781
===================================================================================
Ljung-Box (Q):                       20.99   Jarque-Bera (JB):                79.64
Prob(Q):                              0.99   Prob(JB):                         0.00
Heteroskedasticity (H):               3.34   Skew:                            -1.19
Prob(H) (two-sided):                  0.00   Kurtosis:                         7.42
===================================================================================

Warnings:
[1] Covariance matrix calculated using the outer product of gradients (complex-step).

In [78]:
results.predict(start=78,end=99)


Out[78]:
1990-09-30    17154.504726
1990-12-31    17232.721671
1991-03-31    17292.787820
1991-06-30    17356.532926
1991-09-30    17416.677379
1991-12-31    17478.884490
1992-03-31    17483.140550
1992-06-30    17521.456437
1992-09-30    17573.650282
1992-12-31    17618.031624
1993-03-31    17673.833098
1993-06-30    17686.742802
1993-09-30    17735.686265
1993-12-31    17793.317610
1994-03-31    17836.466110
1994-06-30    17890.975226
1994-09-30    17944.622703
1994-12-31    17986.865712
1995-03-31    18023.737569
1995-06-30    18066.224321
1995-09-30    18111.537395
1995-12-31    18166.767228
Freq: Q-DEC, dtype: float64

In [79]:
results.predict(start=78,end=99).plot()


Out[79]:
<matplotlib.axes._subplots.AxesSubplot at 0xc8f45c0>

In [ ]: