基于奇异谱分析的石油消耗预测研究

2018-08-31 05:54戴天凯
电子世界 2018年16期
关键词:组数消耗长度

戴天凯

0 引言

现代社会,能源也已成为制约我国经济社会持续发展的重大问题。石油作为一种不可再生的战略性能源,在国民经济的各个领域都发挥着重要作用。通过石油消耗预测,可以有效地为能源产业结构的改进提供参考,并且对即将到来的能源危机进行一些预测及缓和,甚至可以推动新能源的加速发展。因此,石油消耗预测是一项十分必要的研究工作。

关于应用奇异谱分析(Singular Spectrum Analysis,SSA)进行石油消耗时间序列数据预测的研究在目前的文献调研中发现并不多见,但是已有其他不少相关研究。文献[1]应用格兰杰因果关系检验和协整分析,对中国石油消耗和经济增长之间的关系进行了实证研究,结论表明,中国石油消耗与经济增长之间存在协整关系和单向因果关系。文献[2]应用灰色预测理论,以世界石油的年度消耗量为研究对象,利用2007年至2014年的石油年度消耗量数据,建立灰色预测模型GM(1,1),结果显示,未来40多年内人类对石油需求量会逐年上升,石油枯竭时间为2060年。文献[3]应用系统动力学和线性回归方法得到石油预测的探明储量、石油消耗量以及石油产量与相关因素的变化情况。文献[4]应用奇异谱分析方法,对故障时间序列进行了建模和预测,进一步以预测结果的均方根误差(Root Mean Square Error,RMSE)最小为优化目标对SSA模型参数进行了优选,实验结果表明SSA及其参数优选和模型组合方法在故障时间序列分析中具有更好的拟合和预测精度。文献[5]介绍了SSA在不同时期尺度气候研究中的应用,结果表明SSA是气候动力重建、统计分析和信息压缩的一种有效工具。文献[6]提出了分解预测的思想,通过SSA将序列分解成低频与高频两部分,分别采用最小均方(Least Mean Square,LMS)自适应自回归移动平均(Autoregressive Integrated Moving Average Model,ARIMA)与LMS自适应自回归(Augmented Reality,AR)模型进行预测,然后将两者叠加便可得原始序列预测值。

1 奇异谱分析

奇异谱分析是建立时间序列模型的一种非参数方法,其建模过程分为两个阶段:分解与重构。在分解阶段,将原始时间序列嵌入到窗口长度为的Hankel矩阵中(又称为轨迹矩阵,如公式(1)所示)。然后,可以通过奇异值分解(Singular Value Decomposition,SVD)得到一组非零特征值和相应的子矩阵。分解结果如公式(2)所示,其中是对应的特征向量,代表主成分。

在重构阶段,根据奇异值的贡献和特征,将子矩阵划分为若干个组。然后应用对角线平均方法还原出时间序列。SSA的预测过程使用了线性递归公式(Linear Recurrent Formulae,LRF),将过去数据点的线性组合作为当前的预测值。此外,SSA的预测方法可以分为递归和向量两种类型,其中向量预测方法比递归预测方法具有更好的稳定性,但需要更多的计算资源。

在SSA预测过程中,窗口长度L不应大于时间序列长度n的一半,并且可以被时间序列的潜在周期整除。在分组过程中,用于建模的子矩阵数量可以通过奇异值的累计贡献来决定。此外,SSA模型构建过程中还可以参考一些统计学方法,比如观测散点图、重构序列图以及计算重构序列之间的加权相关系数等。

2 研究方法

本文的整体研究框架大致分为以下几个步骤:首先上网搜集石油消耗总量数据,并整理成“.csv”格式的数据文件,再将数据进行预处理(时间序列化),然后将数据分为训练集与测试集,并建立SSA模型,用SSA模型进行预测,并绘制预测的18个数据点的时间序列,最后计算预测精度。

整个预测过程的实现程序如算法1所示。首先导入“Rssa”和“rminer”程序包;然后将石油月消耗数据表通过“read.csv()”函数读取进来,并保存到“tab”这个变量中;之后将tab中的石油消耗总量时间序列数据通过程序“da=tab$Total”从“tab”中取出来并保存到“da”这个变量中,并用“plot()”函数绘制其序列图;然后取数据值468个点作为训练集并划分后18个点作为测试集分别保存在“train”和“test”变量中;用“ssa()”函数对训练集建立ssa模型并保存到s变量中,然后利用ssa模型应用线性回归和向量方法分别预测后18个数据点的取值;之后绘制后18个数据点的序列图并进一步绘制预测值的18个点的序列图并进行对比;最后分别利用“RMSE”与“MAE”两个函数来计算预测精度。

3 实验

通过上述的研究方法以及实验预测程序代码的书写,我们可以初步进行实验准备,实验设计以及进行实验,进而可以得出实验结果。

3.1 实验准备

(1)实验数据

美国石油月消耗总量。数据从datamarket网站上搜集。该数据包括美国1973年1月至2013年6月中每个月的石油消耗总量,一共包含486个数据点,其中选取前468个做为训练集,后18个做为测试集。

(2)R语言/Rstudio介绍

R语言是S语言的一个分支,是S语言的一种实现。它适用于统计分析和绘图等方面,是集统计分析与图形显示于一体的。相比之下,R语言具有不少优点,R是一种可编程语言,语法通俗易懂较为简洁。它采用独特的数据恢复新技术,为恢复FAT12/16/32、NTFS、NTFS5(由 Windows 2000/XP/2003/Vista/Windows 8/Windows 10创建或更新)、Ext2FS/Ext3FS(OSX LINUX 文件系统)以及 UFS1/UFS2(FreeBSD/OpenBSD/NetBSD文件系统)分区的文件提供了最为广泛的数据恢复解决方案。

(3)精度度量标准

本文应用了两种误差度量指标,一是均方根误差(root mean square error,RMSE),用于计算预测精度,均方根误差是用来衡量观测值同真值之间的偏差,公式为:

同时均方根误差越小越好。二是平均绝对误差(mean absolute error,MAE)介绍,也用于计算预测精度,数值越小越好,公式为:

3.2 实验验证

(1)实验设计

本表格以window的窗口长度L和组数group为基础变量,并以石油月总消耗量以及部分领域的消耗量为数据,同时应用R语言与Rstudio进行编程计算,然后运用“RMSE”以及“MAE”两个函数计算预测精度,并将所得数据填入表中,得到如下表格,并进行比较。

表1 SSA模型对XXX预测的实验结果

(2)实验结果分析

1)若以沥青和道路油耗为数据,在大致范围内,则窗口长度L越接近24,组数group越接近6,由函数得到的预测精度数值较小,预测结果较准确。

2)若以馏分燃烧油为数据,在大致范围内,则窗口长度L越接近24,组数group越接近6,由函数得到的预测精度较小,预测结果较准确。

3)若以煤油为数据,在大致范围内,则窗口长度L越接近48,组数group越接近12,由函数得到的预测精度较小,预测结果较准确。

4)若以液化石油气为数据,在大致范围内,则窗口长度L越接近48,组数group越接近12,由函数得到的预测精度较小,预测结果较准确。

5)若以总油耗为数据,在大致范围内,则窗口长度L越接近36,组数group越接近6,由函数得到的预测精度较小,预测结果较准确。

6)由总体可以得知当窗口长度与组数不同时,会有一个最适值,预测精度最小,与真实值较为接近。

7)由总体数据预测结果可知,当输入的数据不相同时,最适值不全相同,且不同数据的最适值会有不同的波动,预测精度数值也不相同。

8)由此实验可以得出,SSA模型对于预测分析石油消耗量具有优秀的作用,预测结果较为准确,方便快捷。

4 结论

本文应用SSA模型建立石油消耗的预测模型,以5组1973年1月至2011年12月的石油消耗数据为基础,应用SSA模型对这5组数据进行后18个数据点的预测。实验结果表明SSA模型对于石油消耗的预测效果较好,预测精度RMSE和MAE值较小。基于目前工作,后续还可以做一些研究,比如进一步调整窗口长度以及组数,使预测结果更加准确,并分析和推测其中规律;还可以应用自回归移动平均(autoregressive integrated moving average,ARIMA)、支持向量机(support vector machine,SVM)等模型进行预测处理,比较各统计学和人工智能等模型对于5组数据预测效果的优劣。

猜你喜欢
组数消耗长度
玉钢烧结降低固体燃料消耗实践
转炉炼钢降低钢铁料消耗的生产实践
降低钢铁料消耗的生产实践
1米的长度
我们消耗很多能源
一类求不定方程正整数解的组数问题的解法及推广
爱的长度
怎样比较简单的长度
不同长度
南,兼寄屈原