基于Python的瓦斯浓度ARIMA预测模型构建及其应用
2020-06-18朱权洁李青松张尔辉刘鸿伟
张 震,朱权洁,2,李青松,张尔辉,刘鸿伟
(1. 华北科技学院 安全工程学院,北京 东燕郊 065201;2.华北科技学院 河北省矿井灾害防治重点实验室,北京 东燕郊 065201;3.贵州省矿山安全科学研究院,贵阳 550025)
0 引言
瓦斯灾害是我国煤矿生产中所面临的第一大灾害,其引起的伤亡人数远多于其它灾害[1,2]。提前获知瓦斯浓度变化趋势,能够及时、有效的防治灾害发生。因此,开展矿井瓦斯浓度变化规律的研究势在必行。
近年来,随着瓦斯灾害防治领域研究的不断深化,我国在瓦斯浓度发展变化规律研究方面取得了长足进步[3,4]。其中,黄东[5]等基于灰色系统理论的基础上有效结合了自记忆原理,构建了新型斯浓度预测模型,精准的预测出了瓦斯浓度未来变化规律的总体趋势。赵亮[6]基于混沌理论重构了瓦斯浓度时间序列的相空间,建立了适用工作面的瓦斯浓度预测模型。通过实际应用表明,实际监测的瓦斯浓度与该模型预测的瓦斯浓度具有较高的吻合度。姜雷[7]开展了各种瓦斯浓度影响因素非线性特征研究,并以BP神经网络算法为核心算法建立了瓦斯浓度预测模型,取得了较好的预测效果。由于单一的BP神经网络模型存在收敛速度慢、部分节点确定缺乏科学性的缺陷。为了提高预测精度,韩婷婷[8]等提出了一种采用马尔科夫模型修正神经网络模型瓦斯浓度未来趋势预测结果的方法,将瓦斯浓度预测值与实测值的最大误差降低到6%以下。但马尔科夫算法存在计算量大等不足,降低了预测效率。为此,姚青华[9]等通过将遗传算法与BP神经网络算法深度结合的方式,改进了传统BP神经网络系统预测模型迭代次数多等缺陷,降低了瓦斯浓度预测模型的绝对误差。由于瓦斯灾害具有破坏性、突发性,及时预测瓦斯浓度变化趋势可为煤矿提前采取安全防范措施提供依据。因此,张昭昭等基于动态神经网络算法建立了瓦斯浓度变化规律实时预测模型,该模型根据瓦斯浓度的动力学特性及时更新[10],提高了瓦斯浓度变化规律的预测精度。由于实时采集的瓦斯浓度数据海量,对算法处理数据的要求高。刘晓悦[11]等针对海量的瓦斯浓度数据处理要求高的问题,基于云计算,利用Elman神经网络模型开展了煤矿瓦斯浓度预测的可行性研究,实现了瓦斯数据的高效处理,快速的预测了瓦斯浓度变化趋势。
综上所述,针对现有随机过程预测算法复杂、难以掌握等问题,基于Python语言开展了瓦斯浓度时间序列预测研究。本研究在前人研究的基础上,探讨了时间序列分析基本原理,建立了基于差分自回归移动平均(ARIMA)模型的瓦斯浓度预测模型。通过ARIMA瓦斯浓度预测模型分析、捕获瓦斯浓度时间序列的变化规律,将该时间序列的变化规律向前延伸,从而达到精准预测瓦斯浓度的目的。
1 Python语言简介
Python语言作为一款功能完备、运行稳定的计算机程序设计语言,其被广泛应用于Web和Internet开发、人工智能及网络爬虫等众多领域。在科学计算和统计学方面,Python设计开发有大量公开源代码的分析计算模块,提供了分析计算结果可视化展现的命令窗口。Python还被称为“胶水语言”,其能轻松结合其他语言的功能模块协同工作,可扩展性强。通过Python计算机语言建立的ARIMA(p,d,q)模型简单易懂、使用灵活,因此,选用Python语言作为工具建立矿井瓦斯浓度变化规律预测模型。
如图1为构建预测模型所用到的Python工具包。其中:
图1 Python工具包示意图
Pandas含有丰富的数据模型,可用于调用采集的瓦斯浓度监测数据,包括瓦斯浓度值及对应的监测时间。
Numpy库纳入了大量优化的内置数学函数,为非稳定时间序列的平滑处理及均方根误差的计算提供了模块函数。
Matplotlib主要用于绘制瓦斯浓度数据、自相关及偏自相关图等。其绘图脚本简单易懂,支持满足论文要求的二维平面图、三维立体图的绘制。
Statsmodels为瓦斯浓度预测模型建立提供了ARIMA、ARMA、plot_acf等功能强大的模块函数。拥有时间序列分析、非参数模型和估计以及空间面板模型等各种常见的模型。
2 建模原理
时间序列预测分析主要是对具有时序特性的一组数据进行定量分析,挖掘时间序列数据潜在的趋势、周期性、循环变化规律,并利用这种规律推断出时间序列发展变化趋势。ARIMA作为时间序列预测分析方法之一,其对时间序列预测主要包括时间序列平稳性检验与处理、模型定阶、模型检验及模型预测四个步骤。具体如下:
(1) 时间序列平稳性检验与处理
由于ARIMA模型不能捕获非稳定时间序列的变化规律,因此,首先需对时间序列进行平稳性检验。时间序列平稳性检验的途径一般有两种:看图法,通过绘制时序数据的均值与方差曲线,观察其变化趋势评断时间序列是否平稳;单位根检验法,利用解算出的ADF值判断时序数据是否在给定的置信区间上显著,若显著则证明该时序数据稳定。如式(1)为随机序列均值的表达式:
μt=E(yt),t=0,±1,±2,…n
(1)
其中,E(yt)表示随机序列yt在t时刻的期望值。
若判断出时间序列为非平稳序列,就须利用平滑、差分等方法对时间序列进行平稳化处理。
① 平滑处理
平滑处理能够消除或降低时序数据中较为明显的不规则变动、随机误差等成分的影响。公式(2)为简单移动平均方程。
(2)
式中,St为时间点t的平滑值;2q+1是每次用来平均观测值的个数。
② 差分处理
差分处理是通过对周期间隔的时序数据进行求减,从而达到消除周期性因素对时间序列平稳性影响的目的。公式(3)为d次差分方程:
wt=(1-Β)dyt
(3)
式中,wt表示差分后的平稳数列;B为延迟算子,表示时间序列的时间指标。
(2) 模型定阶
自相关检验(ACF)与偏自相关检验(PACF)是获取ARIMA阶层p与阶数q的常用方法。通过观察绘制的ACF与PACF图像,将ACF与PACF曲线第一次穿过上置信区间的横坐标值确定为p、q的值。式(4)为自相关函数的数学表达式:
(4)
如下式为偏自相关函数的数学表达式:
(5)
式中,φkk=φk-1,φkkφk-j;ρk表示随机序列的自相关函数。
(3) 模型检验
在利用建立的ARIMA模型正式对瓦斯浓度变化规律预测前,需对模型开展合理性评价。模型评价是为了避免利用观看图像确定的p、q值存在偏差,影响后续瓦斯浓度预测的精准度。一般的,主要利用均方根误差(RMSE)与正态性检验对模型拟合优度进行评估。均方根误差公式为:
(6)
式中,N为观测次数。
正态性检验是通过获取的监测数据判断总体是否服从正态分布的检验。通过绘制ARIMA模型标准残差Q-Q图来评定建立的预测模型是否合理。
(4) 模型预测
时间序列分析的主要作用是利用数学模型描述一组时间序列的自相关性,进而预测时间序列未来发展的变化规律。通过上述内容确定的最优预测模型对时间序列进行预测,并观察预测数据折线是否在设定的置信区间内,来评估预测效果的优劣。
3 实例分析
贵州某矿属于高瓦斯矿井。本研究利用瓦斯传感器,采集该矿井1302综采工作面瓦斯浓度,并将采集的数据存储于地面主机硬盘。选用2018年3月5日 0点至2018年3月7日 3点时间段内采集的瓦斯数据作为样本数据,通过建立的瓦斯浓度变化规律分析模型,预测未来5小时内的瓦斯浓度值。
在实验中,通过采集的矿井瓦斯浓度数据构成的随机变量序列并非平稳的。由于ARIMA模型无法捕捉不平稳时序数据的变化规律,因此,在研究瓦斯浓度随机变量序列时,首先需对其进行平稳性检验与处理。
通过调用的瓦斯浓度历史监测数据组成时间序列,并利用均值、方差判定时间序列的稳定性。图2为利用该矿2018年3月5日 0点至2018年3月7日 3点内,监测的瓦斯浓度数据绘制的曲线图。如图2所示,该时间段内,瓦斯浓度数据均值整体趋势缓慢下降,且不同时间点的方差值也不同,因此,该瓦斯浓度时间序列为非稳定序列。本文采用平滑、差分法剔除周期性、不规则变动、随机误差等因素,使时间序列平稳。
① 瓦斯浓度时间序列平滑处理
如图3(a)为对瓦斯浓度时间序列进行平滑处理后的效果图。由图3(a)可知,平滑处理后的时间序列变得较为平稳,但仍属于不平稳序列。
② 瓦斯浓度时间序列差分处理
由图3(b)可知,差分处理后的时间序列均值与方差曲线波动较小趋于常数,可直观的判定其为稳定序列。
③ 瓦斯浓度时间序列平稳性检验
由表1得,1%的Critical value值远大于Test Statistic值,由此表明,在99%的置信度下处理后的序列稳定,满足ARIMA预测的基本要求。
图2 瓦斯浓度原始监测数据图
图3 瓦斯浓度平稳处理效果图
表1 ADF test
Test Statisticp-value#Lags UsedNumber of Observations UsedCritical value (1%)Critical value (5%)Critical value (10%)-5.702883e+007.604219e-076.000000e+001.510000e+02-3.474416e+00-2.880878e+00-2.577081e+00
当瓦斯浓度时间序列变为平稳序列后,就需利用自相关图与偏自相关图确定参数p、q。图4、图5分别为瓦斯浓度时间序列的自相关图与偏自相关图,其中,置信区间为上下灰色虚线之间的区域。通过观察ACF、PACF第一次穿过上置信区间的横坐标值,p取1,q取1。
图4 一阶差分瓦斯浓度序列ACF
图5 一阶差分瓦斯浓度序列PACF
通过调用Python的ARIMA模块函数,并结合获取的p、d、q值,建立瓦斯浓度预测模型ARIMA(1,1,1)。建模代码如下:
from statsmodels.tsa.arima_model impo-rt ARIMA
model = ARIMA(ts_diff_1, order=(1,1,1))
diff_recover_1 = predict_ts.add(diff_shift_ts)
rol_recover = diff_recover*12 - rol_sum.shift(1)
log_recover = np.exp(rol_recover)
在利用ARIMA(1,1,1)模型对瓦斯浓度预测前,需对其进行评价。模型评价是对模型的拟合优度进行评价,假如拟合效果差,则必须重新对瓦斯浓度时间序列进行差分处理,并确定模型阶数。本文通过对2018年3月5日 0点至2018年3月7日 3点时间段内瓦斯浓度历史监测数据与预测数进行拟合,拟合效果如图6。
通过图6(a)(红、绿、蓝色曲线分别为瓦斯浓度历史数据、ARIMA模型预测数据及ARMA模型预测数据)对瓦斯浓度预测数据与监测数据对比,可直观的判断出瓦斯浓度预测结果理想,且ARIMA(1,1,1)模型预测效果好于ARMA(1,1)模型。由图6(b)(红、绿、黄、蓝曲线分别代表ARIMA(1,1,1)、ARIMA(0,1,1)、ARIMA(1,1,0)瓦斯浓度预测数据及历史数据)可知,利用ARIMA(1,1,1)、ARIMA(0,1,1)、ARIMA(1,1,0)模型预测出的瓦斯浓度与原始瓦斯浓度的拟合优度较好。其中,ARIMA(1,1,1)模型预测精度高于ARIMA(0,1,1)、ARIMA(1,1,0)模型。表2为瓦斯浓度预测效果表。由表2得,ARMA(1,1)、ARIMA(1,1,1)、ARIMA(0,1,1)及ARIMA(1,1,0)模型预测的瓦斯浓度预测误差均在允许范围内,预测精度都较为理想。其中,ARIMA(1,1,1)的均方根误差最趋于0,预测精度最高。由图7可知,中间部分点几乎与直线重合,由此证明瓦斯浓度预测模型ARIMA(1,1,1)的残差相服从正态分布,即所建立的模型是合理的。
表2 瓦斯浓度预测效果
通过上述分析验证,最终确定选用ARIMA(1,1,1)模型对瓦斯浓度监测数据的发展变化规律进行预测。通过观察图8可发现,未来5小时内(2018年3月7日 3点至2018年3月7日 8点)瓦斯浓度预测曲线均在95%的置信区间里,因此,瓦斯浓度预测精度较高。
图6 瓦斯浓度拟合效果图
图7 ARIMA模型的标准残差Q-Q图
图8 瓦斯浓度未来变化规律预测效果图
4 结论
(1) 利用建立的预测模型对某矿2018年3月5日 0点至2018年3月7日 3点时间段内的瓦斯浓度进行预测。通过对该段时间内的瓦斯浓度预测数据与历史数据对比分析,发现二者之间的均方根误差为2.34%,证明该预测模型预测精度较高。
(2) 针对预测模型算法复杂、应用不灵活的问题,提出基于Python的瓦斯浓度时间序列预测方法。实例分析表明,该预测算法易于理解、开发要求低,实现了瓦斯浓度预测的可视化,预测效果较好,为降低瓦斯灾害提供了一定的技术支撑。
(3) 通过对比分析ARIMA与ARMA模型瓦斯浓度预测效果可知,ARIMA模型提高了瓦斯浓度预测精准度,可为煤矿提前获知瓦斯浓度变化规律提供科学依据。