首先说,为啥要引出这个灰度预测,其实也就是在拟合的时候,效果不理想的一种另外的处理方案。
做灰度预测的步骤
P401,主要讨论G(1,1)模型
什么是G(1,1) 模型式一阶微分方程,且只含有1个变量的灰色模型。
举个栗子:
利用G(1,1) 模型预测某个城市道路交通噪声平均声级数。
数据的检验和处理
clc,clear;x0 = [71.1 72.4 72.4 72.1 71.4 72.0 71.6]';n = length(x0);lamda = x0(1:n-1)./x0(2:n); % 级比range = minmax(lamda');x1 = cumsum(x0); % 累加% 构造矩阵B = [-0.5*(x1(1:n-1)+x1(2:n)),ones(n-1,1)];Y = x0(2:n);% 公式计算,u(1) = a,u(2) = bu = B\Y;
建立模型
嘿嘿,重点建模来了!!!
对其求解,公式好复杂!!!
注意哦,这里的x(1) 是预测值,符号打不出来了。然后疯狂代入k值就行了。
检验预测值
-
残差检验
-
相对误差
-
级比偏差
预测预报
附录
matlab程序
clc,clear;x0 = [71.1 72.4 72.4 72.1 71.4 72.0 71.6]';n = length(x0);lamda = x0(1:n-1)./x0(2:n); % 级比range = minmax(lamda');x1 = cumsum(x0); % 累加% 构造矩阵B = [-0.5*(x1(1:n-1)+x1(2:n)),ones(n-1,1)];Y = x0(2:n);% 公式计算,u(1) = a,u(2) = bu = B\Y;% 微分方程预测syms x(t)x = dsolve( diff(x)+u(1)*x ==u(2) ,x(0) ==x0(1) );xt = vpa(x,6);yuce1 = subs(x,t,[0:n-1]);yuce1 = double(yuce1);yuce = [x0(1),diff(yuce1)];%校验epsilon = x0'-yuce;delta = abs(epsilon./x0');rho = 1 - (1-0.5*u(1)) / (1+0.5*u(1))*lamda';
好啦,G(1,1)模型ok了,但是你可以从他的表达式看出他是具有较强指数规律的序列,对于非单调的摆动序列和有饱和的S序列,采用G(2,1)模型。预测过程也是一样的。