#4)定阶
from statsmodels.tsa.arima_model import ARIMA
data['股价'] = data['股价'].astype(float)
pmax = int(len(D_data)/10) #一般阶数不超过length/10
qmax = int(len(D_data)/10) #一般阶数不超过length/10
e_matrix = [] #评价矩阵
for p in range(pmax+1):
tmp = []
for q in range(qmax+1):
try: #存在部分报错,所以用try来跳过报错。
tmp.append(ARIMA(data, (p,1,q)).fit().aic)
except:
tmp.append(None)
e_matrix.append(tmp)
e_matrix = pd.DataFrame(e_matrix) #从中可以找出最小值
p,q = e_matrix.stack().idxmin() #先用stack展平,然后用找出最小值位置。
print('AIC最小的p值和q值为:%s、%s' %(p,q))
运行结果:
C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\base\tsa_model.py:165: ValueWarning: No frequency information was provided, so inferred frequency D will be used. % freq, ValueWarning)请问这是怎么回事