【Python数学建模常用算法代码(一)之ARIMA时间序列预测模型】_arimapython代码(2)

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

from statsmodels.tsa.stattools import adfuller as ADF

def tagADF(t):
result = pandas.DataFrame(index=[
“Test Statistic Value”, “p-value”, “Lags Used”,
“Number of Observations Used”,
“Critical Value(1%)”, “Critical Value(5%)”, “Critical Value(10%)”
], columns=[‘销量’]
);
result[‘销量’][‘Test Statistic Value’] = t[0]
result[‘销量’][‘p-value’] = t[1]
result[‘销量’][‘Lags Used’] = t[2]
result[‘销量’][‘Number of Observations Used’] = t[3]
result[‘销量’][‘Critical Value(1%)’] = t[4][‘1%’]
result[‘销量’][‘Critical Value(5%)’] = t[4][‘5%’]
result[‘销量’][‘Critical Value(10%)’] = t[4][‘10%’]
return result;

print(‘原始序列的ADF检验结果为:’,tagADF(ADF(data[u’销量’]))) # 添加标签后展现

平稳判断:得到统计量大于三个置信度(1%,5%,10%)临界统计值,p值显著大于0.05,该序列为非平稳序列。

备注:得到的统计量显著小于3个置信度(1%,5%,10%)的临界统计值时,为平稳 此时p值接近于0 此处不为0,尝试增加数据量,原数据太少

2 进行数据差分,一般一阶差分就可以

D_data = data.diff(1).dropna()
D_data.columns = [u’销量差分’]

#差分图趋势查看

D_data.plot()
plt.show()

附加:查看自相关系数合片自相关系数(查分之后),可以用于平稳性的检测,也可用于定阶系数预估

#自相关图

plot_acf(D_data).show()

plt.show()

#偏自相关图

from statsmodels.graphics.tsaplots import plot_pacf

plot_pacf(D_data).show()

3 平稳性检测

print(u’差分序列的ADF检验结果为:‘, tagADF(ADF(D_data[u’销量差分’])))

解释:Test Statistic Value值小于两个水平值,p值显著小于0.05,一阶差分后序列为平稳序列。

4 白噪声检验

from statsmodels.stats.diagnostic import acorr_ljungbox

#返回统计量和p值

print(u’差分序列的白噪声检验结果为:', acorr_ljungbox(D_data, lags=1)) # 分别为stat值(统计量)和P值

P值小于0.05,所以一阶差分后的序列为平稳非白噪声序列。

5 p,q定阶

from statsmodels.tsa.arima_model import ARIMA

#一般阶数不超过length/10

pmax = int(len(D_data)/10)

#一般阶数不超过length/10

qmax = int(len(D_data)/10)

#bic矩阵

bic_matrix = []
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 = pandas.DataFrame(bic_matrix)

#先用stack展平,然后用idxmin找出最小值位置。

p,q = bic_matrix.stack().idxmin()

print(u’BIC最小的p值和q值为:%s、%s’ %(p,q))

取BIC信息量达到最小的模型阶数,结果p为0,q为1,定阶完成。

6 建立模型和预测

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

ics/618679757)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 42
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值