import pandas as pd
import numpy as np
# TSA from Statsmodelsimport statsmodels.api as sm
import statsmodels.formula.api as smf
import statsmodels.tsa.api as smt
# Display and Plottingimport matplotlib.pylab as plt
import seaborn as sns
pd.set_option('display.float_format',lambda x:'%.5f'% x)# pandas
np.set_printoptions(precision=5, suppress=True)# numpy
pd.set_option('display.max_columns',100)
pd.set_option('display.max_rows',100)# seaborn plotting style
sns.set(style='ticks', context='poster')
tsplot(ts_train, title='A Given Training Series', lags=20)
(<matplotlib.axes._subplots.AxesSubplot at 0xb199160>,
<matplotlib.axes._subplots.AxesSubplot at 0xb21e160>,
<matplotlib.axes._subplots.AxesSubplot at 0xb241b00>)
C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\base\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency MS will be used.
% freq, ValueWarning)
import itertools
p_min =0
d_min =0
q_min =0
p_max =4
d_max =0
q_max =4# Initialize a DataFrame to store the results
results_bic = pd.DataFrame(
index=['AR{}'.format(i)for i inrange(p_min, p_max +1)],
columns=['MA{}'.format(i)for i inrange(q_min, q_max +1)])for p, d, q in itertools.product(range(p_min, p_max +1),range(d_min, d_max +1),range(q_min, q_max +1)):if p ==0and d ==0and q ==0:
results_bic.loc['AR{}'.format(p),'MA{}'.format(q)]= np.nan
continuetry:
model = sm.tsa.SARIMAX(
ts_train,
order=(p, d, q),#enforce_stationarity=False,#enforce_invertibility=False,)
results = model.fit()
results_bic.loc['AR{}'.format(p),'MA{}'.format(q)]= results.bic
except:continue
results_bic = results_bic[results_bic.columns].astype(float)
# Alternative model selection method, limited to only searching AR and MA parameters
train_results = sm.tsa.arma_order_select_ic(
ts_train, ic=['aic','bic'], trend='nc', max_ar=4, max_ma=4)print('AIC', train_results.aic_min_order)print('BIC', train_results.bic_min_order)
import pandas as pdimport numpy as np# TSA from Statsmodelsimport statsmodels.api as smimport statsmodels.formula.api as smfimport statsmodels.tsa.api as smt# Display and Plottingimport matplot...