[原]灰色预测原理及MATLAB实现:
作者:金良(golden1314521@gmail.com) csdn博客:http://blog.csdn.net/u012176591
灰色模型预测的结果比较稳定,不仅适用于大数据量的预测,在数据量较少时(大于3个即可)预测结果依然较准确。
灰色系统理论是中国著名学者邓聚龙教授在1982年创立的一门新兴横断学科,它以“部分信息已知,部分信息未知”的“小样本”、“贫信息”不确定性系统为研究对象,主要通过对部分已知信息的生成、开发,提取有价值的信息,实现对系统运行规律的正确认识和确切描述,并据以进行科学预测。
所谓灰色系统是介于白色系统和黑箱系统之间的过渡系统,其具体的含义是:如果某一系统的全部信息已知为白色系统,全部信息未知为黑箱系统,部分信息已知,部分信息未知,那么这一系统就是灰箱系统。一般地说,社会系统、经济系统、生态系统都是灰色系统。
灰色预测Grey Prediction是以灰色模型Grey Model 为基础的,在诸多的灰色模型中,以灰色系统中单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要介绍GM(1,1)模型。
设有原始数据,n为数据个数。
例子中的原始数据为:
(1)原始数据累加以便弱化随机序列的波动性和随机性,得到新数据序列:
例子中的相应数据为:
(2)对建立一阶线性微分方程:
其中,a,u为待定系数,分别称为发展系数和灰色作用量,a的有效区间是(-2,2),并记a,u构成的矩阵为
第(3)步和第(4)步为求a,u的过程。
(3)对累加生成数据做均值得到列项量并加上一列全1列向量,生成矩阵,对原始序列进行截取获得列向量,即
例子中的相应数据依次是:
(4)用最小二乘法求解灰参数
例子中得到a= -0.146 u=69891
(5)将
带入,并求解得
为了与原序列区分开来,故记为。
(6)对函数表达式及进行离散,并将二者做差以便还原原序列,得到近似数据序列如下:
(7)对建立的灰色模型进行检验,步骤如下:
1.计算和之间的残差和相对误差:
2.求原始数据的均值以及方差。
3.求的平均值以及残差的方差。
4.计算方差比。
5.求小误差概率。
6.灰色模型精度检验如表所列:
作者:金良(golden1314521@gmail.com) csdn博客:http://blog.csdn.net/u012176591
灰色模型预测的结果比较稳定,不仅适用于大数据量的预测,在数据量较少时(大于3个即可)预测结果依然较准确。
灰色系统理论是中国著名学者邓聚龙教授在1982年创立的一门新兴横断学科,它以“部分信息已知,部分信息未知”的“小样本”、“贫信息”不确定性系统为研究对象,主要通过对部分已知信息的生成、开发,提取有价值的信息,实现对系统运行规律的正确认识和确切描述,并据以进行科学预测。
所谓灰色系统是介于白色系统和黑箱系统之间的过渡系统,其具体的含义是:如果某一系统的全部信息已知为白色系统,全部信息未知为黑箱系统,部分信息已知,部分信息未知,那么这一系统就是灰箱系统。一般地说,社会系统、经济系统、生态系统都是灰色系统。
灰色预测Grey Prediction是以灰色模型Grey Model 为基础的,在诸多的灰色模型中,以灰色系统中单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要介绍GM(1,1)模型。
设有原始数据,n为数据个数。
例子中的原始数据为:
A=[89677,99215,109655,120333,135823,159878,182321,209407,246619,300670];如果根据数据列建立GM(1,1)来实现预测功能,则基本步骤如下:
(1)原始数据累加以便弱化随机序列的波动性和随机性,得到新数据序列:
例子中的相应数据为:
B=[89677,188892,298547,418880,554703,714581,896902,1106309,1352928,1653598]
(2)对建立一阶线性微分方程:
其中,a,u为待定系数,分别称为发展系数和灰色作用量,a的有效区间是(-2,2),并记a,u构成的矩阵为
。只要求出a,u,就能求出,进而求出的未来预测值。
第(3)步和第(4)步为求a,u的过程。
(3)对累加生成数据做均值得到列项量并加上一列全1列向量,生成矩阵,对原始序列进行截取获得列向量,即
例子中的相应数据依次是:
E=-139284.5,-243719.5,-358713.5,-486791.5,-634642,-805741.5,-1001605.5,-1229618.5,-1503263 1, 1, 1, 1, 1, 1, 1, 1, 1 D=99215 109655 120333 135823 159878 182321 209407 246619 300670
(4)用最小二乘法求解灰参数
,则
例子中得到a= -0.146 u=69891
(5)将
为了与原序列区分开来,故记为。
(6)对函数表达式及进行离散,并将二者做差以便还原原序列,得到近似数据序列如下:
clear syms a b; c=[a b]'; A=[89677,99215,109655,120333,135823,159878,182321,209407,246619,300670]; B=cumsum(A); % 原始数据累加 n=length(A); for i=1:(n-1) C(i)=(B(i)+B(i+1))/2; % 生成累加矩阵 end % 计算待定参数的值 D=A;D(1)=[]; D=D'; E=[-C;ones(1,n-1)]; c=inv(E*E')*E*D; c=c'; a=c(1);b=c(2); % 预测后续数据 F=[];F(1)=A(1); for i=2:(n+10) F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a ; end G=[];G(1)=A(1); for i=2:(n+10) G(i)=F(i)-F(i-1); %得到预测出来的数据 end t1=1999:2008; t2=1999:2018; plot(t1,A,'o',t2,G,'.r') %原始数据与预测数据的比较 xlabel('年份') ylabel('利润')
(7)对建立的灰色模型进行检验,步骤如下:
1.计算和之间的残差和相对误差:
2.求原始数据的均值以及方差。
3.求的平均值以及残差的方差。
4.计算方差比。
5.求小误差概率。
6.灰色模型精度检验如表所列:
作者:u012176591 发表于2014-7-12 22:47:19 原文链接
阅读:57 评论:0 查看评论
Comments
Post a Comment