灰色预测的概念

  1. 灰色系统、白色系统和黑色系统
    (1)白色系统是指一个系统的内部特征是完全已知的,既系统信息是完全充分的。
    (2)黑色系统是一个系统的内部信息对外界来说是一无所知的,只能通过它与外界的联系来加以观测研究。
    (3) 灰色系统介于白色和黑色之间,灰色系统内的一部分信息是已知的,另一部分信息是未知的,系统内各因素间有不确定的关系。
  2. 灰色预测法
    (1) 灰色预测法是一种预测灰色系统的预测方法。
    (2) 灰色预测通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。

关联分析

  1. 简单分析
    关联分析实际上是动态过程发展态势的量化比较分析。所谓发展态势比较,也就是系统各时期有关统计数据的集合关系的比较。
      例如,某地区1977~1983年总收入与养猪、养兔收入资料见下表格。

关联分析实际上是动态过程发展态势的量化比较分析。所谓发展态势比较,也就是系统各时期有关统计数据的集合关系的比较。

  例如,某地区1977~1983年总收入与养猪、养兔收入资料见下表格。

  

R语言灰色预测模型级比检验 灰色预测模型检验方法_灰色预测方法


  根据该表格,做曲线图:

  

R语言灰色预测模型级比检验 灰色预测模型检验方法_R语言灰色预测模型级比检验_02


  由上图易看出,曲线 A(总收入)与曲线 B(养猪收入)发展趋势比较接近,而与 曲线 C(养兔收入)相差较大,因此可以判断,该地区对总收入影响较直接的是养猪业, 而不是养兔业。

  很显然,几何形状越接近,关联程度也就越大。当然,直观分析对于稍微复杂些 的问题则显得难于进行。因此,需要给出一种计算方法来衡量因素间关联程度的大小。

matlab实现灰色预测

案例:长江水质的预测(”MATLAB数学建模方法与实践(第3版)“第91页)

R语言灰色预测模型级比检验 灰色预测模型检验方法_数学建模_03


长江的水质问题是一个复杂的非线性系统,由于样本数据少,需要的预测时间长,应用神经网络难以取得理想的效果。考虑到污水排放量的变化规律是一个不确定的系统,且要求作出十年的预测,因此采用灰色预测方法来预测未来的污水排放量。

解题步骤:
步骤1 对原始数据进行累加
步骤2 构造累加矩阵B与常数向量
步骤3 求解灰参数、
步骤4 将参数代入预测模型进行数据预测

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 
% 这里的求解步骤:
% 步骤1	对原始数据进行累加
% 步骤2	构造累加矩阵B与常数向量
% 步骤3	求解灰参数、
% 步骤4	将参数代入预测模型进行数据预测
% 
% 注意有时候要做“数据的检验与处理”,具体看"灰色预测.docx"
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 



%建立符号变量a(发展系数)和b(灰作用量)
syms a b;
c = [a b]';

%原始数列 A
A = [174, 179, 183, 189, 207, 234, 220.5, 256, 270, 285];
n = length(A);

%对原始数列 A 做累加得到数列 B
B = cumsum(A);

%对数列 B 做紧邻均值生成
for i = 2:n
    C(i) = (B(i) + B(i - 1))/2; %生成累加矩阵
end
C(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)
    F(i) = (A(1)-b/a)/exp(a*(i-1))+ b/a;
end

%对数列 F 累减还原,得到预测出的数据
G = []; G(1) = A(1);
% 预测往后10年内数据,所以n+10
for i = 2:(n+10)
    G(i) = F(i) - F(i-1); %得到预测出来的数据
end

disp('预测数据为:');
G

%模型检验

H = G(1:10);
%计算残差序列
epsilon = A - H;



% 检验结果对照“灰色预测.docx”
%法一:相对残差Q检验
%计算相对误差序列
delta = abs(epsilon./A);
%计算相对误差Q
disp('相对残差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;
t2 = 1995:2014;

plot(t1, A,'ro'); hold on;
plot(t2, G, 'g-');
xlabel('年份'); ylabel('污水量/亿吨');
legend('实际污水排放量','预测污水排放量');
title('长江污水排放量增长曲线');
grid on;

运行结果:

R语言灰色预测模型级比检验 灰色预测模型检验方法_数据_04


R语言灰色预测模型级比检验 灰色预测模型检验方法_数据_05


检验预测值分析:

R语言灰色预测模型级比检验 灰色预测模型检验方法_灰色预测方法_06


还有一种检验方法:

R语言灰色预测模型级比检验 灰色预测模型检验方法_关联分析_07


以上就是全部内容,如有错误的地方望指出。