一、灰色预测的概念

(1)顾名思义,灰色预测是针对灰色系统进行预测的一种方法,所以有必要介绍下灰色系统,大家可由此得知白色和黑色系统以下不做介绍。

• 灰色系统是指系统内的一部分信息是已知的,另一 部分信息是未知的,系统内各因素间有不确定的关系。

(2)那么灰色系统可用于哪些情形呢?

• 序列性:用等时距观测到的反映预测对象特征的一系列数量值构造灰色预测模型,预测未来某一时刻的特征量,或达到某一

特征量的时间。(时间性或者说序列性是灰色预测的很重要的一个特征点)

• 少数据性:原始数据序列可以少到只有4个数据。

二、灰色生成数列

对灰数的处理主要是利用数据处理方法去寻求数据间的内在规律,通过对已知数据列中的数据进行处理而产生新的数据列,以此来研究寻找数据的规律性,这种方法称为数据的生成。


数据的生成方式有多种,以下减少基本的模型需要用到的三种处理方法:累加生成、累减生成和均值生成。

(1)累加生成

累加的规则:

将原始序列的第一个数据作为生成列的第一个数据,将原始序列的第二个数据加到原始序列的第一个数据上,其和作为生成列的第二个数据,将原始序列的第三个数据加到生成列的第二个数据上,其和作为生成列的第三个数据,按此规则进行下去,便可得到生成列。

累加举例 :设原始时间序列为{1,2,1.5,3} 曲线是摆动的,起伏变化幅度较大

                   而一次累加生成列为{1,3,4.5,7.5 }已呈现明显的增长规律性

注:一般(90%的情况)做一次累加就可以了,有个别情况需要做多次累加(做几次累加的判别依据之后介绍)。

(2) 累减生成(累减就不做举例了)

将原始序列前后两个数据相减得到累减生成序列

• 累减是累加的逆运算,累减可将累加生成 列还原为非生成列,在建模中获得增量信息。

(3)均值生成数

紧邻生成数:Z(k)=a*x(k)+(1-a)*x(k-1)

紧邻生成均值数: Z(k)=0.5*x(k)+0.5*x(k-1)

%建立符号变量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:n    C(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)    F(i) = (A(1)-b/a)/exp(a*(i-1))+ b/a;end%对数列 F 累减还原,得到预测出的数据G = []; G(1) = A(1);for i = 2:(n+10)    G(i) = F(i) - F(i-1); %得到预测出来的数据enddisp('预测数据为:');G%模型检验H = G(1: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;t2 = 1995:2014;plot(t1, A,'ro'); hold on;plot(t2, G, 'g-');xlabel('年份'); ylabel('污水量/亿吨');legend('实际污水排放量','预测污水排放量');title('长江污水排放量增长曲线');grid on;

预测模型python 预测模型是什么意思_灰色预测模型matlab