GM(1,1)灰色预测模型IntroductionInitial给定原始序列:x(0)=(x(0)(1),x(0)(2),x(0)(3)…,x(0)(n))Step1一次AGO(1-AGO)生成序列,以弱化原始序列的随机性和波动性:x(1)=(x(1)(1),x(1)(2),x(1)(3)…,x(1)(n))MatlabProgramclearsymsab;c=[ab]';fid=fopen('.\GreyModel\test.txt');x0=fscanf(fid,'%f');x0=x0';fclose(fid);x1=cumsum(x0);%原始数据累加n=length(x0);fori=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);fori=2:(n+10)xx1(i)=(x0(1)-b/a)/exp(a*(i-1))+b/a;endxx0=[];xx0(1)=x0(1);Step2(1),式中a,u为待定系数。灰微分方程模型为:,z为背景值(2)构造矩阵B和数据向量̂[],[]̂()Step3模型响应函数̂()̂̂̂Step4检验和判断GM(1,1)模型的精度(1)残差检验fori=2:(n+10)xx0(i)=xx1(i)-xx1(i-1);end%关联度检验fori=1:ne(i)=abs(x0(i)-xx0(i));endmmax=max(e);fori=1:nee(i)=0.5*mmax/(e(i)+0.5*mmax);endr=sum(ee)/n;%后验差检验x0bar=sum(x0)/n;s1=0;fori=1:ns1=s1+(x0(i)-x0bar)^2;ends1=sqrt(s1/n);s2=0;ebar=sum(e)/n;fori=1:ns2=s2+(e(i)-ebar)^2;ends2=sqrt(s2/n);C=s2/s1;p=0;fori=1:nifabs(e(i)-ebar)0.6745*s1绝对误差:̂相对误差:(2)关联度检验分辨率𝛽一般取0.5,此时若关联度大于0.6则认为模型可接受(3)后验差检验和小误差概率原始序列标准差:√∑̅绝对误差序列标准差:√∑̅计算方差比:小误差概率:̅精度等级好合格勉强合格不合格P0.950.80.7≤0.7C0.350.50.65≥0.65p=p+1;endendp=p/n;Cpifp0.95&C0.35disp('预测精度好');elseifp0.8&C0.5disp('预测合格');elseifp0.7&C0.65disp('预测勉强合格');elsedisp('预测不合格');endendend%原始数据与预测数据进行比较t1=1:n;t2=1:(n+10);xx0plot(t1,x0,'o',t2,xx0)