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 为时间序列,可取年、季或月。
Matlab灰色预测模型GM(1,1)代码
s=0;xx0(1)=X0(1);
for jj=2:1:m2;
xx0(jj)=xx1(jj)-xx1(jj-1);
end
disp('GM(1,1)对数列进行预测结果');xx0
disp('数列1原始观测数据');X0
disp('a');AU(1)
disp('u');AU(2)
z=z+x(i,:);
be(i,:)=z;
end
for i=2:n %对原始数列平行移位
y(i-1,:)=x(i,:);
end
for i=1:n-1 %计算数据矩阵B的第一列数据
c(i,:)=-0.5*(be(i,:)+be(i+1,:));
% 本程序主要用来计算根据灰色理论建立的模型的预测值。
% 应用的数学模型是 GM(1,1)。
% 原始数据的处理方法是一次累加法。
y=input('请输入数据 ');
n=length(y);
yy=ones(n,1);
yy(1)=y(1);
for i=2:n
yy(i)=yy(i-1)+y(i);
disp(['再下个拟合值为',num2str(ys(n+2))]);
x(0)={x(0)(1),x(0)(2),……,x(0)(N)}=
{ 724.57, 746.62, 778.27, 800.8, 827.75,871.1, 912.37, 954.28, 995.01, 1037.2}
function c7fun73
灰色预测模型GM(1,1)的改进及应用
Improvement and Application of GM(1,1)GrayPrediction ModelYANG Cun-dian 1,ZHANG Yan 1,WANG Yi 2(1.College of Urban,Rural Planning and Architectural Engineering,Shangluo University,Shangluo 726000,Shaanxi;2.Faculty of Economics and Management,Shangluo 726000,Shaanxi)Abstract:The improvement of application of GM(1,1)gray prediction model solved the inaccurate problem due to the reliance on initial value and background value in the process of model prediction.With the use of least square principle,estimate of parameters in initial value and background value is obtained and a prediction model is further obtained.Empirical analysis shows that the prediction accuracy has been improved,and the application of GM (1,1)gray prediction model in actual prediction is expanded.Key words:background value construction;GM(1,1)gray prediction model;the least squares 收稿日期:2020-11-25基金项目:国家社会科学基金西部项目(19XJL002);陕西省社会科学基金项目(09E021);陕西省教育厅专项科研计划项目(08JK036)作者简介:杨存典,男,陕西山阳人,教授(1.商洛学院城乡规划与建筑工程学院,陕西商洛726000;2.商洛学院经济管理学院,陕西商洛726000)灰色预测模型GM(1,1)的改进及应用杨存典1,张雁1,王怡2摘要:通过对GM(1,1)灰色预测模型预测方法的改进,解决了模型预测过程中依赖初始值和背景值所带来的预测精度不高的问题。
数学建模-灰色预测模型GM(1,1)_MATLAB
数学建模-灰⾊预测模型GM(1,1)_MATLAB %GM(1,1).m%建⽴符号变量a(发展系数)和b(灰作⽤量)syms a b;c = [a b]';%原始数列 AA = [174, 179, 183, 189, 207, 234, 220.5, 256, 270, 285];%填⼊已有的数据列!n = length(A);%对原始数列 A 做累加得到数列 BB = cumsum(A);%对数列 B 做紧邻均值⽣成for i = 2:nC(i) = (B(i) + B(i - 1))/2;endC(1) = [];%构造数据矩阵B = [-C;ones(1,n-1)];Y = A; Y(1) = []; Y = Y';%使⽤最⼩⼆乘法计算参数 a(发展系数)和b(灰作⽤量)c = inv(B*B')*B*Y;c = c';a = c(1);b = c(2);%预测后续数据F = []; F(1) = A(1);for i = 2:(n+10) %这⾥10代表向后预测的数⽬,如果只预测⼀个的话为1F(i) = (A(1)-b/a)/exp(a*(i-1))+ b/a;end%对数列 F 累减还原,得到预测出的数据G = []; G(1) = A(1);for i = 2:(n+10) %10同上G(i) = F(i) - F(i-1); %得到预测出来的数据enddisp('预测数据为:');G%模型检验H = G(1:10); %这⾥的10是已有数据的个数%计算残差序列epsilon = A - H;%法⼀:相对残差Q检验%计算相对误差序列delta = abs(epsilon./A);%计算相对误差Qdisp('相对残差Q检验:')Q = mean(delta)%法⼆:⽅差⽐C检验disp('⽅差⽐C检验:')C = std(epsilon, 1)/std(A, 1)%法三:⼩误差概率P检验S1 = std(A, 1);tmp = find(abs(epsilon - mean(epsilon))< 0.6745 * S1);disp('⼩误差概率P检验:')P = length(tmp)/n%绘制曲线图t1 = 1995:2004;%⽤⾃⼰的,如1 2 3 4 5...t2 = 1995:2014;%⽤⾃⼰的,如1 2 3 4 5... plot(t1, A,'ro'); hold on;plot(t2, G, 'g-');xlabel('年份'); ylabel('污⽔量/亿吨');legend('实际污⽔排放量','预测污⽔排放量'); title('长江污⽔排放量增长曲线'); %都⽤⾃⼰的grid on;。
Matlab灰色预测模型GM(1,1)代码
Matlab灰色预测模型GM(1,1)代码function c7fun73X0=[2.874 3.278 3.307 3.39 3.679];AU=c7fun73(X0);a=AU(1);u=AU(2);m2=length(X0);for k=1:1:m2-1xx1(k+1)=(X0(1)-u/a)*exp(-a*k)+u/a;ends=0;xx0(1)=X0(1);for jj=2:1:m2;xx0(jj)=xx1(jj)-xx1(jj-1);enddisp('GM(1,1)对数列进行预测结果');xx0disp('数列1原始观测数据');X0disp('a');AU(1)disp('u');AU(2)function au=c7fun73(X0)m=length(X0);s1=0;for jj=1:1:m;X1(jj)=s1+X0(jj); s1=X1(jj); endfor ii=1:1:m-1; B(ii)=-(X1(ii)+X1(ii+1))/2; endB=[B(:),ones(m-1,1)];y=X0([2:m])';au=inv((B'*B))*B'*y;% 用MATLAB的灰色预测GM(1,1)模型%%程序中的变量定义;alpha是包含值的矩阵;ago是预测后累加值矩阵;var是预测值矩阵;error是残差矩阵;c是后验差比值function my_gm_test()clcdata=exprnd(5,1,10)%原始10个数据[ago alpha var error c]=gm1(data)plot(data)hold onplot(var','-r*')function [ago alpha var error c]=gm1(x); %定义函数gm1(x)%清屏,以使结果独立显示format long; %设置计算精度if length(x(:,1))==1 %对输入矩阵进行判断,如不是一维列矩阵,进行转置变换x=x';endn=length(x); %取输入数据的样本量z=0;for i=1:n %计算累加值,并将值赋予矩阵bez=z+x(i,:);be(i,:)=z;endfor i=2:n %对原始数列平行移位y(i-1,:)=x(i,:);endfor i=1:n-1 %计算数据矩阵B的第一列数据c(i,:)=-0.5*(be(i,:)+be(i+1,:));endfor j=1:n-1 %计算数据矩阵B的第二列数据e(j,:)=1;endfor i=1:n-1 %构造数据矩阵BB(i,1)=c(i,:);B(i,2)=e(i,:);endalpha=inv(B'*B)*B'*y; %计算参数矩阵for i=1:n+1 %计算数据估计值的累加数列,如改为n+1为n+m 可预测后m-1个值ago(i,:)=(x(1,:)-alpha(2,:)/alpha(1,:))*exp(-alpha(1,:)*(i-1))+alpha(2,:)/alpha(1,:);endvar(1,:)=ago(1,:)for i=1:n %如改n为n+m-1,可预测后m-1个值var(i+1,:)=ago(i+1,:)-ago(i,:); %估计值的累加数列的还原,并计算出下一预测值endfor i=1:nerror(i,:)=var(i,:)-x(i,:); %计算残差endc=std(error)/std(x); %调用统计工具箱的标准差函数计算后验差的比值cago %显示输出预测值的累加数列alpha %显示输出参数数列var %显示输出预测值error %显示输出误差c %显示后验差的比值cfunction []=greymodel(y)% 本程序主要用来计算根据灰色理论建立的模型的预测值。
灰色预测模型GM(1,1)的matlab运行代码
灰色预测模型GM(1,1)的matlab 运行代码例 由1990—2001年中国蔬菜产量,建立模型预测2002年中国蔬菜产量,并对预测结果作检验。
分析建模:给定原始时间1990—2001年资料序列X )0((k),对X )0((k)生成1-AGO(累加)序列X )1((k)及Y n 。
见下表X )1((k)=)(1i )0(i X k∑=; Y n =T X X X )]12(,),3(),2([)0()0()0( 对上述X )0((k)的GM(1,1),得到[][][][][][][][][][][]⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡+-+-+-+-+-+-+-+-+-+-+-==⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-----------=15236.2-1331173.5-1244348.01204848.5-1168369.5-1135943.5-1107892.5-186730.0-168581.5-148915.5-129308.0-112115.0111105.011095.01985.01875.01765.01655.01545.01435.01325.01215.01)12(1)11(1)10(1)9(1)8(1)7(1)6(1)5(1)4(1)3(1)2()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()()()()()()()()()()()()()()()()()()()()()()(X X X X X X X X X X X X X X X X X X X X X X z z z z z z z z z z z B 将 B 和Y n 代入辨识算式,有:10.1062105()13999.9T Tn a B B B Y b α--⎡⎤⎡⎤==•=⎢⎥⎢⎥⎣⎦⎣⎦得灰色GM(1,1)模型为(1)灰微分方程X )0((k)-0.1062105 Z )1((k)=13999.9(2)白化方程9.139991062105.0)1()1(=-X dtdX (3)白化方程的时间响应式5.1318135.151332)1()1(ˆ1062105.0)0()1(-=+⎥⎦⎤⎢⎣⎡-=+--t at e a b e a b X t X (4)还原为原始数据预测方程:)(ˆ)1(ˆ)1(ˆ)1()1()0(t X t X t X-+=+,即 t e t X1062105.0)0(15248.968)1(ˆ=+ (5)残差检验: 残差error1=e1=)()ˆ)0()0(i X i X -(,这里残差有12个。
基于Matlab和灰色模型GM(1,1)预测海岸线变化
(. 1 国家海洋局第二海洋研究所 ,浙江 杭州 30 1 :2 国家海洋局海底科学重点实验室 ,浙江 杭州 3 0 1 ) 10 2 . 0 1 2
摘 要 :使用灰色模 型的 “ 少数据”建模寻求现 实规律 的良好特性用于海岸线变迁预测 ,结合 MA L B强大的计算能力 ,解 TA
I h a e , o ii s a d 2 a e a i e r e p b s d o o s i e d t h c e e e ta td f m h  ̄so h n tep p r r n n 8 ltr ll swe e s tu a e n c a t n aa w i h w r x r ce r g n l o c a fte
计算 出海岸线变化的预测点 ,并使用 2 0 0 5年实际海岸 线对预测结果进行验证,结果表 明灰色模型 GM (,1 1 )进行海岸线预
测是合理可靠的。
关键词 :灰色模型 G ( ,1 ;海岸线 ;珠江 I ;Mal M 1 ) : 1 tb软件 :预测 a 中图分类号 :f 3 . y 71 7 文献标识码 :A 文章编号 :10 — 9 2 2 1 )4 0 0 — 5 0 1 6 3 (0 2 0 — 4 4 0
(. eo dIstt o caorp y O 1S cn ntue fO en gah ,S A,Haghu30 1 ,C ia . e a oa r f u ma n esi cs i n zo 10 2 hn ;2 K yL brt yo b r eG oce e, o S i n H nzo 10 2 hn 源自 a gh u30 1 ,C ia
灰色模型GM11matlab实现
单位:亿请根据1978-2012年的全国人口数据,用GM(1,1)来预测未来人口数量,能预测50年内的数据吗?100年呢?为什么?摘要:关键字:人口预测、GM(1,1)一、问题的重述二、问题的分析三、模型假设1、假设本问题所使用的数据均真实有效,具有统计分析价值2、不考虑战争、灾害、疾病对人口数目的影响;3、...4、...四、符号说明与名词解释4.1符号说明见模型假设。
4.2名词解释...五、模型的建立与求解5.1模型建立在灰色系统理论中,称抽象的逆过程为灰色模型,也称GM。
它是根据关联度、生成数灰导数,灰微分等观点和一系列数学方法建立起来的连续型的微分方程。
通常GM表示为GM(n,h)。
当n=h=1时即构成了单变量一阶灰色预测模型。
设原始时间序列为:(0)(0)(0)(0)(0)[(1),(2),(3),,()]X x x x x n=L设(1)X为(0)X的一次累加序列:即:(1)(0)(1)(1)(1)(1)(0)()(-1)(),2,, x xx k x k x k k n ⎧=⎪⎨⎪=+=⎩L得(1)(1)(1)(1)(1)[(1),(2),(3),,()] X x x x x n=L利用(1)X 计算GM(1,1)模型参数a 、u ,令ˆ[,]T aa u =, 则有1ˆ()T T N aB B B Y -= 其中(1)(1)(1)(1)(1)(1)1((1)(2))121((2)(3))121((1)())12x x x x B x n x n ⎡⎤-+⎢⎥⎢⎥⎢⎥-+⎢⎥=⎢⎥⎢⎥⎢⎥--+⎢⎥⎣⎦L L (0)(0)(0)[(2),(3),,()]T N Y x x x n =L由此获得:(1)(1)ˆ(1)((1))ak u uxk x e a a -+=-+ 于是:(0)(1)(1)ˆˆˆ(1)(1)()1xk x k x k +=+-()或(0)(0)ˆ(1)-((1))ak uxk a x e a-+=-(2)注:(1)式是根据(0)X 和(1)X 的关系的到的(2)式是利用数学求导还原得到的至于用哪个,最好看相对误差5.2模型求解:求解得:六、模型检验6.1残差检验残差大小检验,即对模型值和实际值的残差进行逐点检验。
用Matlab实现GM(1,1)灰色模型的供电量预测
用Matlab实现GM(1,1)灰色模型的供电量预测
梁智勇
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2009(000)024
【摘要】介绍灰色预测模型GM(1,1)在电力系统中的预测应用,同时在Matlab平台上实现了灰色模型GM(1,1)函数的编制.以某市1995~2004年供电量数据为例,并通过此函数对该供电量进行了预测,为灰色数列模型GM(1,1)的应用提供了一种简便的运算方法.
【总页数】3页(P93-94,102)
【作者】梁智勇
【作者单位】广东电网公司肇庆供电局,肇庆,526040
【正文语种】中文
【相关文献】
1.GM(1,1)模型在建筑物沉降预测中的应用及Matlab的实现 [J], 陈刚;王波;邓哲
2.灰色预测系统GM(1,1)模型及其Matlab实现 [J], 殷鹏远
3.基于Matlab和灰色模型GM(1,1)预测海岸线变化 [J], 余威;吴自银;傅斌
4.改进的灰色预测GM(1,1)模型的MATLAB实现 [J], 杨旭
5.灰色模型GM(1,1)结合Excel实现药品销售预测 [J], 查振中;王晖
因版权原因,仅展示原文概要,查看原文内容请购买。
基于Matlab和灰色模型GM(1,1)预测海岸线变化
基于Matlab和灰色模型GM(1,1)预测海岸线变化余威;吴自银;傅斌【期刊名称】《海洋通报》【年(卷),期】2012(031)004【摘要】A good method was put forward to predict the coastline change based on the grey model GM (1, 1) for its ability to seek for good solution with "a little data", combined with the powerful computing matrix with MATLAB easily. In the paper, origins and 28 lateral lines were set up based on coastline data which were extracted from charts of the Lingding Sea in the pearl estuary from 1975 to 2005. Then 28 series of intersection points of coastlines and lateral lines were used make grey model GM (1, 1) . Finally the points of coastline were calculated by MATLAB program, and test methods were adopted to verify the result with the real coastline in 2005. The result showed that the shoreline prediction based on the grey model GM (1, 1) was reasonable and reliable.%使用灰色模型的“少数据”建模寻求现实规律的良好特性用于海岸线变迁预测,结合MATLAB强大的计算能力,解决了灰色预测模型在矩阵计算方面复杂的问题.利用1975-2005年珠江口内伶仃洋海区6个时期的海图提取局部时序海岸线,设置原点和28条侧线,使用侧线与海岸线的交点,建立灰色模型GM(1,1)模型原始数列,使用MATLAB编制程序计算出海岸线变化的预测点,并使用2005年实际海岸线对预测结果进行验证,结果表明灰色模型GM(1,1)进行海岸线预测是合理可靠的.【总页数】5页(P404-408)【作者】余威;吴自银;傅斌【作者单位】国家海洋局第二海洋研究所,浙江杭州310012;国家海洋局海底科学重点实验室,浙江杭州310012;国家海洋局第二海洋研究所,浙江杭州310012;国家海洋局海底科学重点实验室,浙江杭州310012;国家海洋局第二海洋研究所,浙江杭州310012【正文语种】中文【中图分类】P737.1【相关文献】1.基于灰色模型GM(1,1)的兰州市耕地动态变化预测 [J], 陈富;孙鹏举;刘学录;张小静2.重庆直辖以来城乡居民收入差距变化趋势预测——基于灰色模型GM(1,1)的实证分析 [J], 王全意3.重庆直辖以来城乡居民收入差距变化趋势预测——基于灰色模型GM(1,1)的实证分析 [J], 王全意4.用Matlab实现GM(1,1)灰色模型的供电量预测 [J], 梁智勇5.基于灰色模型GM(1,1)的海岸线变化趋势预测——以辽河口三角洲地区为例 [J], 陈路遥;蒋卫国;陈云浩;李京;林爱华因版权原因,仅展示原文概要,查看原文内容请购买。
- 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)。