Python3: ARIMA模型定阶出来的全是空值
导致后面这个错误,企图从一个空的序列得到最小值
原始数据预览:
我觉得数据没得问题。因为前面检验那些都没问题
全部代码如下
import string
import warnings
warnings.filterwarnings("ignore")
import pandas as pd
inputfile = 'file16.csv'
forecastnum = 5
data = pd.read_csv(inputfile,index_col = u'时间',encoding='gbk')
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
data.plot()
plt.show()
from statsmodels.graphics.tsaplots import plot_acf
plot_acf(data)
plt.show()
from statsmodels.tsa.stattools import adfuller as ADF
print(u'原始序列的ADF检验结果为:', ADF(data[u'出口额']))
print(u'原始序列的ADF检验P值为:',ADF(data[u'出口额'])[1] )
D_data = data.diff().dropna()
D_data.columns = [u'出口额差分']
D_data.plot() #时序图
plt.title('差分后的时序图')
plt.show()
plot_acf(D_data) #自相关图
plt.show()
from statsmodels.graphics.tsaplots import plot_pacf
plot_pacf(D_data) #偏自相关图
plt.show()
print(u'差分序列的ADF检验结果为:', ADF(D_data[u'出口额差分'])) #平稳性检测
from statsmodels.stats.diagnostic import acorr_ljungbox
print(u'差分序列的白噪声检验结果为:', acorr_ljungbox(D_data, lags=1)) #返回统计量和p值
from statsmodels.tsa.arima_model import ARIMA
data[u'出口额'] = data[u'出口额'].astype(float)
print(type(data))
print(data)
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),req=None).fit().bic)
print(tmp)
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)模型
model.summary2()
model.forecast(5) #作为期5天的预测,返回预测结果、标准误差、置信区间。
请问楼主问题解决了吗?我也遇到了同样的问题
请问问题解决了吗?求解决方法谢谢
请问问题解决了吗