时间序列预测模型ARIMA工程使用实践和问题

内容分享5小时前发布
0 0 0

1. 时间序列预测

时间是构成世界的一个维度,很难找到哪个现象或哪个事物和时间无关。气象、金融、工业、市场以及个人健康等众多领域中,时间序列预测都得到了大量应用。尤其是在工业领域,预测性维护,能耗预测与优化已得到了广泛应用。
尤其在数字孪生(DT)领域,原来都是基于物理方程算法,如CAE计算获得外部载荷下的数字响应模拟,时间长,计算代价大,也造成DT逐渐变成了3D可视化大屏。近10年,一些基于机器学习的代理模型算法逐渐多起来,在DT上应用广泛。但代理模型的采用也逃不出只能对部件和设备级仿真的限制。要想进行产线级、车间级的仿真,运行参数的模拟,时间序列预测可能会起到一定的作用。

预测模型
预测算法基本可以分为两类:基于统计模型的,比如ARMA、SARIMAX、GBRT、VAR、Prophet,基于神经网络的,如LSTM,CNN,Transformer等。

2. ARIMA实践

2.1 ARIMA介绍

ARIMA模型是差分自回归移动平均模型的缩写,可以对非平稳时间序列进行预测,公式为:

ARIMA(p,d,q) = yt=C+φ1yt-1+…+φpyt-p1εt-1+…+θqεt-qt
其中,
p是AR§自回归过程的阶数
d是积分的阶数
q是MA(q)移动平均过程的阶数
也就是说,它可以退化成自回归模型AR§或移动平均过程MA(q)
MA过程,当前值取决于序列的均值μ、当前误差项εt,以及过去误差项εt-q的线性组合
AR过程,当前值取决于序列过去值yt-p和当前误差项εt的线性组合

2. 2项目实践

2.2.1 项目目标及数据

数据集:从SCADA中导出了30天的电压数据,数据为每15分钟一个。格式如下:
时间序列预测模型ARIMA工程使用实践和问题
目标:取电压均值Ua进行预测。使用29天的数据进行训练,预测未来1天的每15分钟的电压值。

2.2.2 实验过程

1. 读入数据


import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('c:/TSF/voltage.csv')
df.head()

2. 数据处理
读取数据后,查看数据的基本情况,补充缺失值,去掉不完整天数据。


#查看数据,数量,平均值、标准差、四分位、最小最大值
df.describe()  
#去掉第一天不完整的数据
df2= df.iloc[61:]
#重置index
df=df.reset_index()
# 时间戳转换为datetime格式
df['Timestamp']=pd.to_datetime(df['Timestamp'])

# 查看空值
df.isna().sum()
rows_with_na=df[df.isna().any(axis=1)]
print(rows_with_na)

# 去掉空值
#df2=df.dropna()
# 回头看,我们预测一天的数据,第一天数据不完整,需要去掉,中间24号数据关键,所以不能简单干掉,要进行填充,用前后5个平均值
uh_aver= np.mean(df['Uh'][109:112])
ua_aver=np.mean(df['Ua'][109:112])
# 数据填充
df['Uh'][113]=uh_aver
df['Ua'][113] =ua_aver
#检查是否还有空值
df.isna().sum()
df.
© 版权声明

相关文章

暂无评论

none
暂无评论...