import pandas as pd
import numpy as np
from statsmodels.tsa.arima_model import ARIMA
from statsmodels.graphics.tsaplots import plot_acf,plot_pacf
import matplotlib.pyplot as plt
from matplotlib.pylab import style
import statsmodels.api as sm
from itertools import product
import pyflux as pf
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
listlabel=['猪肉价格','仔猪价格','玉米市场价格','通货膨胀率CPI','鸡肉价格','存栏量']
def datacf():
df=pd.read_csv("data2.csv",encoding='gbk')
df['时间'] = pd.to_datetime(df['时间'])
df.index = df['时间']
df = df.resample('3M').mean()
## 1:单位根检验检验序列的平稳性,ADF 检验
for i in listlabel:
df[i]=df[i].diff()
df[i]=df[i].dropna()
df["存栏量"]=df["存栏量"].diff()
df["存栏量"]=df["存栏量"].dropna()
def cfmapandsave():
for i in listlabel:
df[i].plot()
plt.legend()
plt.show()
df.to_csv('datacf.csv',encoding='gbk')
def chafenacfpacf():
for i in listlabel:
diff=df[i]
diff=diff.diff()
diff=diff.dropna()
dftest = sm.tsa.adfuller(diff,autolag='BIC')
dfoutput = pd.Series(dftest[0:4], index=['Test Statistic','p-value','Lags Used','Number of Observations Used'])
print(i,"一阶差分 检验结果:")
print(dfoutput)
fig = plt.figure(figsize=(10,5))
ax1 = fig.add_subplot(211)
fig = sm.graphics.tsa.plot_acf(diff, lags=20, ax=ax1)
ax2 = fig.add_subplot(212)
fig = sm.graphics.tsa.plot_pacf(diff, lags=20, ax=ax2)
plt.subplots_adjust(hspace = 0.3)
plt.show()
diff.to_csv('datacf.csv',encoding='gbk')
diff=diff.diff()
diff=diff.dropna()
dftest = sm.tsa.adfuller(diff,autolag='BIC')
dfoutput = pd.Series(dftest[0:4], index=['Test Statistic','p-value','Lags Used','Number of Observations Used'])
print("存栏量二阶差分 检验结果:")
print(dfoutput)
fig = plt.figure(figsize=(10,5))
ax1 = fig.add_subplot(211)
fig = sm.graphics.tsa.plot_acf(diff, lags=20, ax=ax1)
ax2 = fig.add_subplot(212)
fig = sm.graphics.tsa.plot_pacf(diff, lags=20, ax=ax2)
plt.subplots_adjust(hspace = 0.3)
plt.show()
def p_valuetest():
dftest = sm.tsa.adfuller(df['仔猪价格'],autolag='BIC')
dfoutput = pd.Series(dftest[0:4], index=['Test Statistic','p-value','Lags Used','Number of Observations Used'])
print("仔猪价格 检验结果:")
print(dfoutput)
dftest = sm.tsa.adfuller(df['玉米市场价格'],autolag='BIC')
dfoutput = pd.Series(dftest[0:4], index=['Test Statistic','p-value','Lags Used','Number of Observations Used'])
print("玉米市场价格 检验结果:")
print(dfoutput)
dftest = sm.tsa.adfuller(df['通货膨胀率CPI'],autolag='BIC')
dfoutput = pd.Series(dftest[0:4], index=['Test Statistic','p-value','Lags Used','Number of Observations Used'])
print("通货膨胀率CPI 检验结果:")
print(dfoutput)
dftest = sm.tsa.adfuller(df['鸡肉价格'],autolag='BIC')
dfoutput = pd.Series(dftest[0:4], index=['Test Statistic','p-value','Lags Used','Number of Observations Used'])
print("鸡肉价格 检验结果:")
print(dfoutput)
dftest = sm.tsa.adfuller(df['存栏量'],autolag='BIC')
dfoutput = pd.Series(dftest[0:4], index=['Test Statistic','p-value','Lags Used','Number of Observations Used'])
print("存栏量 检验结果:")
print(dfoutput)
org=pd.read_csv("data2.csv",encoding='gbk')
org['时间'] = pd.to_datetime(org['时间'])
org.index =org['时间']
org = org.resample('3M').mean()
df=pd.read_csv("datacf.csv",encoding='gbk')
df['时间'] = pd.to_datetime(df['时间'])
df.index = df['时间']
df = df.resample('3M').mean()
def pidchoose():
print('最优模型筛选')
num=3
best_aic = float('inf')
results = []
for i in range(num):
for j in range(num):
model = pf.ARIMAX(data=df,ar=i, ma=j,formula='猪肉价格~仔猪价格+玉米市场价格+鸡肉价格+存栏量',family=pf.Normal()).fit()
aic = model.aic
if aic < best_aic:
best_model = model
best_aic = model.aic
results.append([i,j, model.aic])
results_table = pd.DataFrame(results)
results_table.columns = ['ar','ma','aic']
best_model.summary()
model = pf.ARIMAX(data=df,ar=0, ma=2,formula='猪肉价格~仔猪价格+玉米市场价格+鸡肉价格+存栏量',family=pf.Normal())
x=model.fit()
print(x)
x.summary()
model.plot_fit(figsize=(15,10))
model.plot_predict(h=5, oos_data=df.iloc[-5:], past_values=73, figsize=(15,5))
# a=model.predict(h=5, oos_data=df.iloc[-5:])
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于ARIMAX的多变量预测模型python源码+数据集+代码注释.zip基于ARIMAX的多变量预测模型python源码+数据集+代码注释.zip基于ARIMAX的多变量预测模型python源码+数据集+代码注释.zip 基于ARIMAX的多变量预测模型python源码+数据集+代码注释.zip基于ARIMAX的多变量预测模型python源码+数据集+代码注释.zip基于ARIMAX的多变量预测模型python源码+数据集+代码注释.zip【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习
资源推荐
资源详情
资源评论
收起资源包目录
基于ARIMAX的多变量预测模型python源码+数据集+代码注释.zip (7个子文件)
微信图片_20200625141604.png 56KB
project_code
arimax.py 5KB
datacf.csv 4KB
datapre.py 2KB
data.csv 4KB
项明.md 38B
微信图片_20200625141616.png 99KB
共 7 条
- 1
onnx
- 粉丝: 9970
- 资源: 5626
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 微电网(两台)主从控制孤岛-并网平滑切的分析 分析了: 1.孤岛下VF控制 2.并网下PQ控制 3.孤岛下主从控制 4.孤岛到并网的平滑切控制 5.除模型外还对分布式发电与主动配电网一些常见问题做了
- 第四组二手产品.zip
- MVIMG_20241222_194113.jpg
- 基于小程序的在线疫苗预约小程序源代码(java+小程序+mysql+LW).zip
- 基于小程序的岳阳市美术馆预约平台源代码(java+小程序+mysql+LW).zip
- 基于小程序的音乐播放器小程序源代码(java+小程序+mysql+LW).zip
- 多功能知识付费源码下载实现流量互导多渠道变现+搭建教程
- 3. Kafka入门-安装与基本命令
- 基于小程序的养老院管理系统源代码(java+小程序+mysql+LW).zip
- 基于小程序的新冠抗原自测平台小程序源代码(java+小程序+mysql+LW).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页