利用python实现arima模型中计算pq,看一下为什么跑一通宵都跑不出来

img

定阶

data['收盘价'] = data['收盘价'].astype(float)
pmax = int(len(D_data) / 10) # 一般阶数不超过length/10
qmax = int(len(D_data) / 10) # 一般阶数不超过length/10

bic_matrix = [] # BIC矩阵
for p in range(pmax + 1):
tmp = []
for q in range(qmax + 1):
try:
tmp.append(ARIMA(data, (p, 2, q)).fit().bic)
except:
tmp.append(None)
bic_matrix.append(tmp)

bic_matrix=pd.DataFrame(bic_matrix)

p,q=bic_matrix.stack().idxmin() #先用stack展平,然后用idxmin找出最小值位置
print('BIC最小的p和q值分别为:%s、%s'%(p,q))

数据格式是否正确

pmax = int(len(D_data) / 10) # 一般阶数不超过length/10
qmax = int(len(D_data) / 10) # 一般阶数不超过length/10
查一下有多大
数据多用的时间自然多,建议分成几个小段跑,如果有线程更好。
测试的时候,用一点点数据。