Matlab+灰色预测模型模型GM(1,1)
灰色系统G(1,1)预测步骤【模板带代码】

=3499.075e -0.1062t
3641.075
编写程序
u=alpha(2)/alpha(1) v=X0(1)-u v=3499.075 u=—3641.075
(5)进行参差检验
1)根据预测公式,计算
v=3499.075 u=—3641.075
Xˆ
1
k
1
X
0
1
for n=0:10
X2(n+1)=v*exp(-alpha(1)*n)+u
end
X2
2.0690
2)累减生成序列
Xˆ X3 =1.0e+003 * (0) 0.1420 0.4079 0.4536
0.5044
0.7713 0.8577 0.9537 1.0605
源程序:X3(1)=X2(1)
for m=1:10
kesi =
4.4388 339.0664 176.2445 203.6132
0 0.1998 1.2682 0.2130 0.8524 0.1330
0.0089
0.3767
0.2203
0.4155
{0%,19.98%,126.82%,0.89%,37.67% ,22.03% ,41.55% ,21.30%,85.24%,13.30%}
e=
179.4592 111.5134 74.1747 175.0204 159.6072 29.2461 215.2168 33.1910
3.2147 24.1540
源程序:S0=0.6745*X0std e=abs(daita0-daita0mean) 对所有的 e 都小于 S0 ,故小参差概率 P(k S0) 1 0.95
灰色预测GM_1_1_模型的Matlab实现_朱登远

平均误差
( 2 ) 后验差检验。 原始数据的平均值、 均方差计算
n - ( 0) 1 x = ∑ x ( 0) ( k) n k =1 n
S1 = 绝对残差的平均值、 均k) ∑ k =1 n -1
- x ( 0) )
-
2
42
河南城建学院学报
n - ( 0) 1 e = ∑ e ( 0) ( k) n k =1 n
2013 年 5 月
S2 = 后验差比值计算
槡
( e ( 0) ( k) ∑ k =1 n -1 S2 S1
- e ( 0) )
-
2
C = 小误差概率计算
- p = p{ e ( 0) ( k) - e ( 0 ) ( 3 ) 关联度检验。 r =
< 0 . 6745 S1 }
n min e ( 0) ( k) + 0 . 5max e ( 0) ( k) 1 ∑ n k =1 e ( 0) ( k) + 0 . 5max e ( 0) ( k)
模型精度检验标准[11] 后验差比值 C 0. 35 0. 50 0. 65 0. 80 小误差概率 p 0. 95 0. 80 0. 70 0. 60 关联度 r 0. 90 0. 80 0. 70 0. 60
z1 ( 1 , k) = 0. 5* [ x1 ( 1 , k) + x1 ( 1 , k + 1) ] ; end % 计算矩阵 B 和向量 yn B = zeros( n1 - 1 , 2) ; yn = zeros( n1 - 1 , 1) ; for k = 1 : n1 - 1 1 ) = - z1 ( 1 , k) ; B( k, B( k, 2) = 1;
灰色预测法GM(1,1)总结

灰色预测模型一、灰色预测的概念1.灰色预测法是一种对含有不确定因素的系统进行预测的方法。
灰色系统是介于白色系统和黑色系统之间的一种系统。
灰色系统内的一部分信息是已知的,另一部分信息时未知的,系统内各因素间具有不确定的关系。
2.灰色预测,是指对系统行为特征值的发展变化进行的预测,对既含有已知信息又含有不确定信息的系统进行的预测,也就是对在一定范围内变化的、与时间序列有关的灰过程进行预测。
尽管灰过程中所显示的现象是随机的、杂乱无章的,但毕竟是有序的、有界的,因此可以通过对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。
灰色预测是利用这种规律建立灰色模型对灰色系统进行预测.二、灰色预测的类型1.灰色时间序列预测;即用观察到的反映预测对象特征的时间序列来构造灰色预测模型,预测未来某一时刻的特征量,或达到某一特征量的时间.2.畸变预测;即通过灰色模型预测异常值出现的时刻,预测异常值什么时候出现在特定时区内。
3.系统预测;通过对系统行为特征指标建立一组相互关联的灰色预测模型,预测系统中众多变量间的相互协调关系的变化。
4.拓扑预测;将原始数据作曲线,在曲线上按定值寻找该定值发生的所有时点,并以该定值为框架构成时点数列,然后建立模型预测该定值所发生的时点三、GM(1,1)模型的建立1.数据处理为了弱化原始时间序列的随机性,在建立灰色预测模型之前,需先对原始时间序列进行数据处理,经过数据处理后的时间序列即称为生成列。
i.设是所要预测的某项指标的原始数据,计算数列的级比。
如果绝大部分的级比都落在可容覆盖区间内,则可以建立GM(1,1)模型且可以进行灰色预测。
否则,对数据做适当的预处理。
方法目前主要有数据开n方、数据取对数、数据平滑。
预处理的数据平滑设计为三点平滑,具体可以按照下式处理ii.预处理后对数据作一次累加生成处理,即:将原始序列的第一个数据作为生成列的第一个数据,将原始序列的第二个数据加到原始序列的第一个数据上,其和作为生成列的第二个数据。
灰色系统GM(1,1)预测模型

5.1.2 灰色系统GM(1,1)预测模型GM(1,1)模型的建立由于统计数据信息不完整,故有部分日用水量数据和70%以上的水厂日供水量数据采用曲线拟合法进行回归分析不能得到令人满意的结果,所以我们考虑用对信息质量要求不高的灰色系统分析法进行预测,建立GM(1,1)模型。
记)),(),...2(),1((n x x x x =其中)(i x 表示第i 年数值。
Step1:令)0(x 为GM (1,1)建模序列,表示灰导数(0)(0)(0)(0)((1),(2),...,())x x x x n =其中)()()0(k x k x =,...3,2,1=kStep2:令)1(x 为)0(x 的AGO 序列,对)0(x 作累加生成,即得到新的序列)1(x ,(1)(1)(1)(1)((1),(2),...,())x x x x n =(1)(0)(1)(1)x x =(1)(0)1()()km x k x m ==∑Step3:令)1(z 为)1(x 的均值(MEAN )序列,表示白化背景值(1)(1)(1)()0.5()0.5(1)z k x k x k =+- (5.9)(1)(1)(1)(1)((2),(3),...,())z z z z n =则得到GM(1,1)的灰微分方程模型为b k az k x =+)()()1()0( (5.10)式中:b a 、为待估计参数,分别称为发展灰度和内生控制灰度。
其中,∑∑∑∑∑∑∑∑∑∑∑===========---=----=n k nk n k n k n k n k n k n k n k n k n k k z k z n k x k z k z k z k z b k z k z n k x k z n k x k z a 222)1(2)1(22)0(22)1()1(2)1()1(222)1(2)1(2)0()1(22)0()1())(()()1()()()()()(;))(()()1()()()1()()( 经变换后得到)()()1()0(k az b k x -= (5.11)GM(1,1)模型的求解在(5.11)两端同时乘以ak e 得,(0)(1)()()ak ak ak e x k e az k e b +=即(1)()()ak ak t z k e be d C -=+⎰ ak b Ce a-=+ 将代入上式中,可得0(1)b C x a=- 于是得出时间函数(1)(1)x k +的估计值(1)0ˆ(1)[(1)]ak b b x k x e a a-+=-+ (5.12) 我们把上式(5.12)作为预测方程。
灰色模型预测GM(1,1)MATLAB程序代码

灰⾊模型预测GM(1,1)MATLAB程序代码版权所有引⽤请注明出处function gmcal=gm1(x)%% ⼆次拟合预测GM(1,1)模型%x = [5999,5903,5848,5700,7884];sizexd2 = size(x,2);%求数组长度k=0;for y1=xk=k+1;if k>1x1(k)=x1(k-1)+x(k);%累加⽣成z1(k-1)=-0.5*(x1(k)+x1(k-1));%z1维数减1,⽤于计算Byn1(k-1)=x(k);elsex1(k)=x(k);endend%x1,z1,k,yn1sizez1=size(z1,2);%size(yn1);z2 = z1';z3 = ones(1,sizez1)';YN = yn1'; %转置B=[z2 z3];au0=inv(B'*B)*B'*YN;au = au0';afor = au(1);ufor = au(2);ua = au(2)./au(1);constant1 = x(1)-ua;afor1 = -afor;x1t1 = 'x1(t+1)';estr = 'exp';tstr = 't';leftbra = '(';rightbra = ')';strcat(x1t1,'=',num2str(constant1),estr,leftbra,num2str(afor1),tstr,rightbra,'+',leftbra,num2str(ua),rightbra) %输出时间响应⽅程k2 = 0;for y2 = x1k2 = k2 + 1;if k2 > kelseze1(k2) = exp(-(k2-1)*afor);endendsizeze1 = size(ze1,2);z4 = ones(1,sizeze1)';G=[ze1' z4];X1 = x1';au20=inv(G'*G)*G'*X1;au2 = au20';Aval = au2(1);Bval = au2(2);strcat(x1t1,'=',num2str(Aval),estr,leftbra,num2str(afor1),tstr,rightbra,'+',leftbra,num2str(Bval),rightbra) %输出时间响应⽅程nfinal = sizexd2-1 + 1; %决定预测的步骤数5 这个步骤可以通过函数传⼊%nfinal = sizexd2 - 1 + 1;%预测的步骤数 1for k3=1:nfinalx3fcast(k3) = constant1*exp(afor1*k3)+ua;end%⼀次拟合累加值for k31=nfinal:-1:0if k31>1x31fcast(k31+1) = x3fcast(k31)-x3fcast(k31-1);elseif k31>0x31fcast(k31+1) = x3fcast(k31)-x(1);elsex31fcast(k31+1) = x(1);endendendx31fcast%⼀次拟合预测值for k4=1:nfinalx4fcast(k4) = Aval*exp(afor1*k4)+Bval;end%x4fcastfor k41=nfinal:-1:0if k41>1x41fcast(k41+1) = x4fcast(k41)-x4fcast(k41-1);elseif k41>0x41fcast(k41+1) = x4fcast(k41)-x(1);elsex41fcast(k41+1) = x(1);endendendx41fcast,x%⼆次拟合预测值%***精度检验p C************//////////////////////////////////k5 = 0;for y5 = xk5 = k5 + 1;if k5 > sizexd2elseerr1(k5) = x(k5) - x41fcast(k5);endend%err1%绝对误差xavg = mean(x);%xavg%x平均值err1avg = mean(err1);%err1avg%err1平均值k5 = 0;s1total = 0 ;for y5 = xk5 = k5 + 1;if k5 > sizexd2elses1total = s1total + (x(k5) - xavg)^2;endends1suqare = s1total ./ sizexd2;s1sqrt = sqrt(s1suqare);%s1suqare,s1sqrt%s1suqare 残差数列x的⽅差 s1sqrt 为x⽅差的平⽅根S1k5 = 0;s2total = 0 ;for y5 = xk5 = k5 + 1;if k5 > sizexd2elses2total = s2total + (err1(k5) - err1avg)^2;endends2suqare = s2total ./ sizexd2;%s2suqare 残差数列err1的⽅差S2Cval = sqrt(s2suqare ./ s1suqare);Cval%nnn = 0.6745 * s1sqrt%Cval C检验值k5 = 0;pnum = 0 ;for y5 = xk5 = k5 + 1;if abs( err1(k5) - err1avg ) < 0.6745 * s1sqrtpnum = pnum + 1;%ppp = abs( err1(k5) - err1avg )elseendendpval = pnum ./ sizexd2;pval%p检验值%arr1 = x41fcast(1:6)%预测结果为区间范围预测步长和数据长度可调整程序参数进⾏改进。
GM(1,1)模型的Matlab实现(范例2)

GM (1,1)模型的MATLAB 实现摘要 本文介绍了灰色预测()1,1GM 模型的基本原理,并在其基础上利用MATLAB 软件进行实现,给出相应的MATLAB 算法。
并通过实例检验MATLAB 算法的正确性与通用性。
关键词模型; 灰色系统; MATLAB ;1 引言1.1灰色预测理论基本介绍灰色系统是指系统论中一部分信息是已知的,但另一部分信息是未知的,系统内各因素间有不确定的关系。
而灰色预测模型是灰色系统理论的重要内容之一,其中灰色模型是邓聚龙教授在1982年提出的一种新的模型计算方法,被广泛应用于农业、工业、医学、军事、经济、交通、生态等许多科学领域,解决了许多领域中的复杂实践问题[13]-。
且对于杂乱无章表征数据,灰色预测能发现其内在必然的联系与规律,即通过鉴别系统各因素之间发展趋势的相异程度,进行关联分析,并对原始数据进行一定的处理,来寻找系统变动的规律,生成有较强规律性的数据序列,建立相应的微分方程模型,从而预见系统的未来的发展趋势及状况。
灰色预测法是用等时距观测到的反映预测对象特征的一系列数量值,构造灰色预测模型,预测未来某一时刻的特征量,或达到某一特征量的时间。
灰色预测有其四种常见的类型,分别为:灰色时间序列预测、畸变预测、系统预测、拓扑预测。
灰色模型(Grey Models )简称GM 模型,是灰色系统理论(Grey System Theory )的一个基本模型。
GM 模型的一般模型为,当中时,GM 模型不能做预测,只能用于分析因子之间的相互作用。
做预测用的一般为模型,其中,用的最多的则是用灰色微分拟合法建立的模型。
由于它预测要求所需样本量少(至少四组),不需要计算统计特征量、不用考虑样本变化的趋势、运算简便、在短期内精度高、预测效果好、容易检查等优点。
本文通过运用MATLAB 软件对模型进行程序实现。
增强模型通用性与实用性,方便今后对其使用。
假设我们有一段原始时间序列:为了弱化原始时间序列的随机性,在建立灰色预测模型之前,我们需要先对原始时间序列进行数据处理,经过数据处理后的时间序列称为生成列。
数学建模灰色预测GM(1,1)

灰色预测GM (1,1)算法原理:灰色模型建立的步骤Step1:对)0(X 作1-AGO ,得序列(1)(1)(1)(1)((1),(2),,())X x x x n =Step2:对)0(X 作准光滑性检验。
由)1()()()1()0(-=k k k x xρ 当()0.5k ρ<时准光滑条件满足。
Step3:检验)1(X 是否具有准指数规律。
由)1()()()1()1()1(-=k k k x x σ 得29.1)5(,36.1)4(,54.1)3()1()1(≈≈≈σσ当k>3时,]5.1,1[)()1(∈k σ,5.0=δ,准指数规律满足,故可对)1(X 建立GM(1,1)模型。
Step4:对)1(X 作紧邻均值生成。
令)1(5.0)(5.0)()1()1()1(-+=k k k x x z得 (1)(1)(1)(1((2),(3),,())Z z z z n = 于是 ⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡---=1)(1)3(1)2()1()1()1(n B z z z ⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=)()3()2()0()0()0(n Y x x x Step5:对参数列T b a a],[ˆ=进行最小二乘估计。
得 =aˆ1)(-B B T T B Y Step6:确定模型(1)(1)d a b dt x x +=及时间响应式ab a b k e x x k a +-=--)1()0()1())1(()(ˆ Step7:求)1(X 的模拟值))5(ˆ),4(ˆ),3(ˆ),2(ˆ),1(ˆ(ˆ)1()1()1()1()1()1(x x x x x X= Step8:还原求出)0(X 的模拟值。
由(0)(1)(1)(1)(1)()()()(1)ˆˆˆˆk k k k x x x x α==--得(0)(0)(0)(0)(0)(0)ˆˆˆˆˆˆ((1),(2),(3),(4),(5))Xx x x x x = Step9:检验误差。
灰色系统预测GM(1-1)模型及其Matlab实现

灰色系统预测GM(1,1)模型及其Matlab 实现预备知识(1)灰色系统白色系统是指系统内部特征是完全已知的;黑色系统是指系统内部信息完全未知的;而灰色系统是介于白色系统和黑色系统之间的一种系统,灰色系统其内部一部分信息已知,另一部分信息未知或不确定。
(2)灰色预测 灰色预测,是指对系统行为特征值的发展变化进行的预测,对既含有已知信息又含有不确定信息的系统进行的预测,也就是对在一定范围内变化的、与时间序列有关的灰过程进行 预测。
尽管灰过程中所显示的现象是随机的、杂乱无章的,但毕竟是有序的、有界的,因此得到的数据集合具备潜在的规律。
灰色预测是利用这种规律建立灰色模型对灰色系统进行预测。
目前使用最广泛的灰色预测模型就是关于数列预测的一个变量、一阶微分的GM(1,1)模型。
它是基于随机的原始时间序列,经按时间累加后所形成的新的时间序列呈现的规律可用一阶线性微分方程的解来逼近。
经证明,经一阶线性微分方程的解逼近所揭示的原始时间序列呈指数变化规律。
因此,当原始时间序列隐含着指数变化规律时,灰色模型GM(1,1)的预测是非常成功的。
1 灰色系统的模型GM(1,1)1.1 GM(1,1)的一般形式设有变量X (0)={X (0)(i ),i =1,2,...,n}为某一预测对象的非负单调原始数据列,为建立灰色预测模型:首先对X(0)进行一次累加(1—AGO , Acum ul at ed Ge nera ting Opera to r)生成一次累加序列: X (1)={X(1)(k ),k =1,2,…,n}其中X (1)(k )=∑=ki 1X (0)(i)=X (1)(k-1)+ X (0)(k) (1)对X(1)可建立下述白化形式的微分方程:dtdX )1(十)1(aX =u (2)即G M(1,1)模型。
上述白化微分方程的解为(离散响应): ∧X(1)(k +1)=(X (0)(1)-a u )ake -+au (3)或∧X (1)(k )=(X (0)(1)-a u ))1(--k a e +au (4)式中:k 为时间序列,可取年、季或月。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GM(1,1)灰色预测模型
Introduction
Initial
给定原始序列:
x(0) =(x(0)(1), x(0)(2), x(0)(3)…, x(0)(n))
Step 1
一次AGO(1-AGO)生成序列,以弱化原始序列的随机性和波动性:x(1) =(x(1)(1), x(1)(2), x(1)(3)…, x(1)(n)) Matlab Program
clear
syms a b;
c=[a b]';
fid=fopen('.\Grey Model\test.txt');
x0=fscanf(fid,'%f');x0=x0';
fclose(fid);
x1=cumsum(x0); %原始数据累加
n=length(x0);
for i=1:(n-1)
z(i)=(x1(i)+x1(i+1))/2; %生成累加矩阵end
%计算待定参数的值
Y=x0;Y(1)=[];
Y=Y';
B=[-z;ones(1,n-1)];B=B';
c=inv(B'*B)*B'*Y;
c=c';
a=c(1);b=c(2);
%预测后续数据
%预测之后10个时间单位的数据
xx1=[];xx1(1)=x0(1);
for i=2:(n+10)
xx1(i)=(x0(1)-b/a)/exp(a*(i-1))+b/a; end
xx0=[];xx0(1)=x0(1);
Step 2
(1) dx (1)
dt
+ax (1)(t )=u ,式中a, u 为待定系数。
灰微分方程模型为:
x (0)(k )+az (1)(k )=u ,z 为背景值
z (1)(k )=1/2(x (1)(k )+x (1)(k −1))
(2) 构造矩阵B 和数据向量Y n
Y n =Ba ̂
Y n =[ x (0)(2)x (0)(3)⋮x (0)(n )] , B =[ −1/2(x (1)(1)+x (1)(2)),−1/2(x (1)(2)+x (1)(3)),⋮−1/2(x (1)(n −1)+x (1)(n )), 1 1 ⋮ 1]
a ̂=(a
u
)=(B T B)−1B T Y n
Step 3
模型响应函数
x ̂(1)
(k +1)=(x (0)
(1)−u a )e −ak +u a
x ̂(0)(k +1)=x ̂(1)(k +1)−x ̂(1)(k )
Step 4
检验和判断GM(1,1)模型的精度 (1) 残差检验
for i=2:(n+10)
xx0(i)=xx1(i)-xx1(i-1); end
%关联度检验 for i=1:n
e(i)=abs(x0(i)-xx0(i)); end
mmax=max(e); for i=1:n
ee(i)=0.5*mmax/(e(i)+0.5*mmax); end
r=sum(ee)/n; %后验差检验
x0bar=sum(x0)/n; s1=0; for i=1:n
s1=s1+(x0(i)-x0bar)^2; end
s1=sqrt(s1/n); s2=0;
ebar=sum(e)/n; for i=1:n
s2=s2+(e(i)-ebar)^2; end
s2=sqrt(s2/n); C=s2/s1; p=0;
for i=1:n
if abs(e(i)-ebar)<0.6745*s1
绝对误差:ε(k)=|x(0)(k)−x̂(0)(k)|
相对误差:Φ(k)=ε(k)
x(0)(k)
(2) 关联度检验
分辨率β一般取0.5,此时若关联度大于0.6则认为模型可接受(3) 后验差检验和小误差概率
原始序列标准差:S1=√∑[x(0)(i)−x̅(0)]2
n
绝对误差序列标准差:S2=√∑[ε(i)−ε̅]2
n
计算方差比:C=S2
S1
小误差概率:P=P{|ε(i)−ε̅|<0.6745S1}
p=p+1;
end
end
p=p/n;
C
p
if p>0.95&C<0.35
disp('预测精度好');
else if p>0.8&C<0.5
disp('预测合格');
else if p>0.7&C<0.65
disp('预测勉强合格'); else
disp('预测不合格'); end
end
end
%原始数据与预测数据进行比较
t1=1:n;
t2=1:(n+10);
xx0
plot(t1,x0,'o',t2,xx0)。