weixin_63121413 2021-11-15 17:40 采纳率: 50%
浏览 784

在python机器学习中使用ARIMA模型,用BIC矩阵确定p、q参数的时候BIC矩阵输出全是Nane,怎么回事

import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.tsa.stattools import adfuller as ADF
from statsmodels.graphics.tsaplots import plot_pacf
from statsmodels.stats.diagnostic import acorr_ljungbox
from statsmodels.tsa.arima_model import ARIMA
from statsmodels.tsa.arima_model import ARMA
discfile = 'D:/pycharm/ARIMA/arima_data.xlsx'
forecastunum=5
#读取数据,指定日期作为指标,pandas自动将日期识别为Datatime格式
data=pd.read_excel(discfile,index_col='日期')
# print(data)

#时序图
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
data.plot()
plt.show()

#自相关图
plot_acf(data,lags=36)
plt.show()

#平稳性检验
print("原始数据的ADF检验结果为",ADF(data[u'销量']))
# 返回值依次为adf、p-value、usedlag、nobs、critical values、icbest、regresults、resstore

#差分
# 一阶差分
D_data = data.diff().dropna()
D_data.columns = [u'销量差分']
# 时序图
D_data.plot()
plt.show()

# 自相关图
plot_acf(D_data,lags=35)
plt.show()

# 偏自相关图
plot_pacf(D_data,lags=17)
plt.show()

# 平稳性检测
print(u'差分序列的ADF检验结果为:', ADF(D_data[u'销量差分']))

# 白噪声检验
print(u'差分序列的白噪声检验结果为:\n', acorr_ljungbox(D_data, lags=1))  # 返回统计量和p值

# 定阶
data[u'销量'] = data[u'销量'].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:  # 存在部分报错,所以用try来跳过报错。
            tmp.append(ARIMA(data, (p,1,q)).fit().bic)
        except:
            tmp.append(None)
    bic_matrix.append(tmp)

bic_matrix = pd.DataFrame(bic_matrix)  # 从中可以找出最小值
print(bic_matrix)
p, q = bic_matrix.stack().idxmin()  # 先用stack展平,然后用idxmin找出最小值位置。
print(u'BIC最小的p值和q值为:%s、%s' % (p, q))

model = ARIMA(data, (p, 1, q)).fit()  # 建立ARIMA(0, 1, 1)模型
print('模型报告为:\n', model.summary2())
print('预测未来5天,其预测结果、标准误差、置信区间如下:\n', model.forecast(5))


img

  • 写回答

1条回答 默认 最新

  • qq_43317335 2021-11-17 16:24
    关注

    请问这个问题你解决了么?

    评论

报告相同问题?

问题事件

  • 创建了问题 11月15日

悬赏问题

  • ¥50 如何在不能联网影子模式下的电脑解决usb锁
  • ¥20 服务器redhat5.8网络问题
  • ¥15 如何利用c++ MFC绘制复杂网络多层图
  • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变
  • ¥15 python螺旋图像
  • ¥15 算能的sail库的运用
  • ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??重点是下面那个冒号啊
  • ¥15 找代写python里的jango设计在线书店
  • ¥15 请教如何关于Msg文件解析
  • ¥200 sqlite3数据库设置用户名和密码