灰色gm预测模型
一、什么是灰色系统(Grey System) 灰色分析全名为灰色系统理论分析(Grey System Theory),是由中国邓聚龙教授于1982年在国际经济学会议上提出,该理论主要是针对系统模型之不明确性,信息之不完整性之下,进行关于系统的关联分析(Relational Analysis)、模型建构(Constructing A Model)、借由预测(Prediction)及决策(Decision)之方法来探讨及了解系统。
自然界对人类社会来讲不是白色的(全部都知道),也不是黑色的(一无所知),而是灰色的(半知半解)。
人类的思考、行为也是灰色的,人类其实是生存在一个高度的灰色信息关系空间之中,例如:人体系统、粮食生产系统等。
部分信息已知,部分信息未知的系统,称为灰色系统。
控制论中主要以颜色命名,常以颜色之深浅表示研究者对内部信息(information)和对系统本身的了解及认识程度之多寡,黑色,表示信息缺乏;白色,表示信息充足;而介于白色(W)系统与黑色(B)系统之间,其信息部份已知,信息部分未知的这类系统便称之为灰色(G)系统。
二、什么是灰色系统理论 灰色系统理论是研究灰色系统分析、建模、预测、决策和控制的理论。
它把一般系统论、信息论及控制论的观点和方法延伸到社会、经济和生态等抽象系统,并结合数学方法,发展出一套解决信息不完全系统(灰色系统)的理论和方法。
灰色系统理论分析具有沟通社会科学及自然科学的作用,可将抽象的系统加以实体化、量化、模型化及做最佳化。
三、灰色系统理论建立的历史背景 1948年,美国数学家申农提出『信息论』,学者维纳(Weiner)发表『控制论』一书。
1951年,巴黎举行了第一届国际会议,确认了控制论是一们新兴的学科。
1968年,奥地利生物学加倍塔朗菲发表了--『一般系统理论-基础、发展和应用』,正式确定了一般系统理论。
四、灰色系统理论的主要内容 信息不完全是灰色系统的特征,因此研究灰色系统的关键是: (一)、如何处理灰元信息不完全的元素,称之为灰元或灰参数。
(二)、如何使系统结构上、模型上、关联上由灰变白,或使系统的白度增加(又称淡化或白化)。
灰色系统理论就是从这两方面来发展讨论的。
通过白化,我们对系统的认识变由知之不多到知之较多,由知之较多再到认识其变化规律,最后从变化规律中提取出所需要的信息。
灰色模型是灰色系统理论的核心,是灰色预测、决策、控制的基础。
利用灰色模型及其它理论,可分析事物的可控性、可观性、可达成性,说明哪些因素是可控性的,哪些是不可控性的;哪些是将要发生的,哪些是将要消灭的;哪些是需要扶持的,哪些是要制止的;从而为系统迅速、正确地提供决策。
灰色系统理论的主要内容有: (一)、GM模型 (二)、灰色预测 (三)、灰关联分析 (四)、灰色统计与聚类 (五)、灰色决策 (六)、灰色控制 五、灰色系统理论的两条基本原 (一)、信息不完全原理 (二)、过程非唯一原理 六、灰色系统的应用范畴 灰色系统的应用范畴大致分为以下几方面: (一)、灰色预测 1、人口预测;2、初霜预测;3、灾变预测…….等等 (二)、灰色关联度分析 (三)、灰色决策 (四)、灰色预测控制 现实世界中,许多系统即使是有大样本,其分布也不一定是典型的,非典型的随机过程是难以用统计方法处理的。
且现实中的许多灰系统,因为没有物理原型,信息难以完全判断,而且数据很少,这就难以用统计方法处理。
七、灰色分析的优点 (一)、不需要大量的样本。
(二)、样本不需要有规律性分布。
(三)、计算工作量小。
(四)、定量分析结果与定性分析结果不会不一致。
(五)、可用于近期、短期,和中长期预测。
(六)、灰色预测精准度高。
八、灰色系统的应用实例。
对体育界优秀选手李福恩过去十年来十项全能成绩的因素分析与成绩预测。
1、用关联分析法探讨各单项与总分之间的相互关系及他们在全能运动训练中应占的地位,对于科学安排、控制训练全部过程及其十项全能成绩能提供量化的参考。
2、以李福恩过去十年的成绩作为依据,应用GM(1,1)建模的方法预测其未来五年各单项与总分之成绩,作为其未来各阶段训练目标之精确定量描述,以供训练过程中的检查评定,期能有助于训练目标的实现。
此项研究的说明如下: 不少运动员,尽管他们也像世界优秀运动员一样多年地从事艰苦的训练,经历了无数次精疲力竭的竞赛,但他们却无法取得与世界优秀运动员相同的成绩。
这就是说,在现代运动训练中,教练与运动员不仅仅是使用身体,同时还要使用智能和科学。
在体育界,亦有人应用灰色系统理论对李福恩十项全能成绩作因素分析与成绩之预测,也就是说利用灰色系统理论来找出对增加李福恩十项全能的训练之最有效的项目。
运动训练的基本任务是充分地挖掘运动员的竞技能力,最大限度地提高其竞技能力。
男子十项全能运动被人誉为「铁人」项目,其比赛是以10个单项得分的总合决定名次。
而总分与各单项之间以及影响总分成绩的各个单项之间是相互促进、相互制约,它们既对立又统一,共处于一个统一体中,如果将十项全能总分的提高过程看成是一个系统的...
您好,我想请问您灰色模型GM(1,1)怎么预测?我手上也有近十年的...
function output=GM11(x0)%x0建模%AGOn=length(x0);x1=zeros(1,n);x1(1)=x0(1);for i=2:nx1(i)=x1(i-1)+x0(i);end%MEANz1=zeros(1,n);for i=2:nz1(i)=0.5*x1(i)+0.5*x1(i-1);end%二级参数包c=0;for i=2:nc=c+z1(i);endd=0;for i=2:nd=d+x0(i);ende=0;for i=2:ne=e+z1(i)*x0(i);endf=0;for i=2:nf=f+z1(i)*z1(i);end%发展系数a与灰作用量ba=(c*d-(n-1)*e)/((n-1)*f-c*c);b=(d*f-c*e)/((n-1)*f-c*c);%GM(1,1)模型----白化响应式x11=zeros(1,n+1);x11(1)=x0(1);for i=1:nx11(i+1)=(x0(1)-b/a)*exp(-a*i)+b/a;endx00=zeros(1,n+1);x00(1)=x0(1);for i=1:nx00(i+1)=x11(i+1)-x11(i);end%残差检验e=zeros(1,n); %相对误差o=zeros(1,n); %绝对误差for i=1:ne(i)=x0(i)-x00(i);o(i)=e(i)/x0(i);if o(i)o(i)=-o(i);elseo(i)=o(i);endend%后验差检验c=std(e)/std(x0);%残差序列e的均方差与原始序列x0的均方差的比值p=0;%绝对误差序列小的概率for i=1:nif abs(e(i)-mean(e))p=p+1;endendp=p/n;%绝对误差序列小的概率等于p的数目除以总数目%显示预测结果if p>0.95 &cdisp('good'),disp(x00(n+1))elseif p>0.85 & cdisp('eligibility'),disp(x00(n+1))elseif p>0.70 & cdisp('not good'),disp(x00(n+1))else disp('the model is bad and try again')end%画图显示temp=zeros(1,n);%存放模拟值点for i=1:ntemp(i)=x00(i);endmax=temp(1);for i=2:nif maxmax=temp(i);endendz=1:n;plot(z,x0,'-',z,temp,'r:')title('对比图');text(2,x0(2),'history data :real blue line') %在(2,x0(2))位置标注text(n/2,max/2,'simulation data:broken red line')output=x00(n+1);end
灰色系统预测GM(1,1)模型的MATLAB详细源代码
%%%%%%%%%%%%%%%%把下面函数保存为gmcal.m文件%%%%%%%%%%%function gmcal=gm1(x)sizexd2 = size(x,2);%求数组长度k=0;for y1=x k=k+1; if k>1 x1(k)=x1(k-1)+x(k); %累加生成 z1(k-1)=-0.5*(x1(k)+x1(k-1)); %z1维数减1,用于计算B yn1(k-1)=x(k); else x1(k)=x(k); endend%x1,z1,k,yn1sizez1=size(z1,2);%size(yn1);z2 = z1';z3 = ones(1,sizez1)';YN = yn1'; %转置%YNB=[z2 z3];au0=inv(B'*B)*B'*YN;au = au0';%B,au0,auafor = au(1);ufor = au(2);ua = au(2)./au(1);%afor,ufor,ua %输出预测的 a u 和 u/a的值constant1 = x(1)-ua;afor1 = -afor;x1t1 = 'x1(t+1)';estr = 'exp';tstr = 't';leftbra = '(';rightbra = ')';%constant1,afor1,x1t1,estr,tstr,leftbra,rightbrastrcat(x1t1,'=',num2str(constant1),estr,leftbra,num2str(afor1),tstr,rightbra,'+',leftbra,num2str(ua),rightbra)%输出时间响应方程,也就是最终要求的灰色模型%%%%%%%%%%%%%%%%%%%%%在workspace里输入%%%%%%%%%%%%x =[5999,5903,5848,5700,7884];gm1(x)%其中5999,5903,5848,5700,7884可以换成已知的历史数据,无论几个都可以。
...
具有周期性的时间序列资料建立灰色模型GM(1,1)能用EXCEL?
.5*max(Theta)) ;% P=0.5 R=sum(R_k)/length(R_k) %关联度 Temp0=(CA-AV).^2 ; Temp1=sum(Temp0)/X(k+1)=' end XY=[Y_k_1(1);N2*100; P=strcat(num2str(TempP),',X) %syms k; for t=1:length(X0) k(1,t)=t-1,:)=X1(i)+X1(i+1); end B=-0.5.*X2 ;X1(1:(length(X0)-1)) %对原始数据序列X0进行准光滑性检验;%' B=[B,t] ; % 求B矩阵 YN=X0(2,Y] %预测值 CA=abs(XY-X0) ;*B)*B; t=ones(n-1,1),')'.5*max(Theta)); %方差比 C=strcat(num2str(TempC),' for i=1,num2str(c)]; a=A(1) u=A(2) c=u/,'k'; %原始序列的标准差 TempC=S2/S1*100; N1=length(TempN); N2=length(CA); TempP=N1/a ; b=X0(1)-c :length(k)-1 Y(1,j)=Y_k_1(j+1)-Y_k_1(j);) %后验差检验 %方差比 %---------- SS=0.675*S1 ; Delta=abs(CA-AV) ; TempN=find(Delta<=SS); for j=1; X1=cumsum(X0);length(CA); S1=sqrt(Temp_1) , %序列x0的光滑比P(t)=X0(t)/./(Theta+0;X1(t-1) A=inv(B.'.'*YN.','(':end) ; %残差数列 Theta=CA %残差检验 绝对误差序列 XD_Theta= CA ./ % 残差数列平均值 R_k=(min(Theta)+0; X0 %残差检验 相对误差序列 AV=mean(CA); % 原始序列平均值 Temp_0=(X0-AV_0).^2 ; Temp_1=sum(Temp_0)/ %累加 X2=[],num2str(-a); strcat('%':n-1 X2(i; X=[num2str(b); P_t=YN./,n]=size(X0); end k Y_k_1=b*exp(-a*k)+c;length(CA); S2=sqrt(Temp1) ; %绝对误差序列的标准差 %---------- AV_0=mean(X0) function GM1_1(X0) %format long ; [m,'exp'
怎么用MATLAB编写程序对灰色模型进行预测
clear;clc;X0=[128453 129227 130765 129988 131448 132129 132802 133450 134091 135404];pre_num=5; %预测5年%% 级比检验n=length(X0);Xle=exp(-2/(n+1));Xre=exp(2/(n+1));lambda=X0(1:end-1)./X0(2:end);range=minmax(lambda);if range(2)Xle disp('所有的级比都落在可容覆盖区间,可以建立GM模型')else disp('没有通过级比检验')end%% 建模GM(1,1)X1=cumsum(X0);Z1=0.5*(X1(2:end)+X1(1:end-1));Y=X0(2:end)';B=[-Z1(1:end)' ones(n-1,1)];u=B\Y; %u=inv(B'*B)*B'*Ya=u(1);b=u(2);%% 输出结果Xpre=[X0(1) ones(1,n-1+pre_num)];for k=1:n-1+pre_num Xpre(k+1)=(X0(1)-b/a)*(exp(-a*k)-exp(-a*(k-1)));enderr=X0-Xpre(1:n); %计算残差epsilon=abs(err)./X0*100; %计算相对误差rho=1-(1-0.5*a)/(1+0.5*a)*lambda; %计算级比偏差值%% 画图t1=2002:2011;t2=2002:2011+pre_num;plot(t1,X0,'o',t2,Xpre,'r','LineWidth',2)xlabel('年份')ylabel('人口')legend('原始数据','预测数据', 'Location','SouthEast')...