一、灰色预测概述
1.原理:通过鉴别系统因素之间发展趋势的相异程度,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物的未来发展趋势。灰色预测的数据是通过生成数据的模型所得到的预测值的逆处理结果。

2.特点:在求解过程中需要进行数据预测时,利用灰色模型预测的结果比较稳定,不仅适用于大数据量的预测,在数据量较少时(数据多于3个即可)预测结果依然准确。

二、单序列一阶线性微分方程模型GM(1,1)介绍
设有原始数据列 深度学习数据预测模型 数据预测建模_数据 ,n为数据个数。
如果根据 深度学习数据预测模型 数据预测建模_深度学习数据预测模型_02 数据列建立GM(1,1)来实现预测功能,则基本步骤如下:
1.原始数据累加以便弱化随机序列的波动性和随机性,得到新数据序列:深度学习数据预测模型 数据预测建模_原始数据_03 其中,深度学习数据预测模型 数据预测建模_发展趋势_04 中各数据表示对应前几项数据的累加。 深度学习数据预测模型 数据预测建模_发展趋势_05
2.对 深度学习数据预测模型 数据预测建模_发展趋势_04 建立 深度学习数据预测模型 数据预测建模_发展趋势_04 的一阶线性微分方程:深度学习数据预测模型 数据预测建模_原始数据_08 其中,a , u 为待定系数,分别称为发展系数和灰色作用量,a 的有效区间是 深度学习数据预测模型 数据预测建模_数学建模_09,并记 a , u 构成的矩阵 深度学习数据预测模型 数据预测建模_原始数据_10 。只要求出参数 a , u ,就能求出 深度学习数据预测模型 数据预测建模_发展趋势_04 ,进而求出 深度学习数据预测模型 数据预测建模_深度学习数据预测模型_12

3.对累加生成数据做均值生成 B 与常数项向量 Y ,即
深度学习数据预测模型 数据预测建模_深度学习数据预测模型_13深度学习数据预测模型 数据预测建模_数据_14

4.用最小二乘法求解灰参数 深度学习数据预测模型 数据预测建模_数学建模_15 , 则深度学习数据预测模型 数据预测建模_深度学习数据预测模型_16
5.将灰参数 深度学习数据预测模型 数据预测建模_数学建模_15 代入 深度学习数据预测模型 数据预测建模_数学建模_18 ,并对其进行求解,得深度学习数据预测模型 数据预测建模_原始数据_19 由于 深度学习数据预测模型 数据预测建模_数学建模_15 是通过最小二乘法求出的近似值,所以 深度学习数据预测模型 数据预测建模_深度学习数据预测模型_21 是一个近似表达式,为了与原序列 深度学习数据预测模型 数据预测建模_数学建模_22 区分开来,故记为 深度学习数据预测模型 数据预测建模_深度学习数据预测模型_21

6.对函数表达式 深度学习数据预测模型 数据预测建模_深度学习数据预测模型_21深度学习数据预测模型 数据预测建模_数据_25 进行离散,并将二者做差以便还原 深度学习数据预测模型 数据预测建模_深度学习数据预测模型_02 原序列,得到近似数据序列 深度学习数据预测模型 数据预测建模_原始数据_27 如下:深度学习数据预测模型 数据预测建模_数据_28
7.对建立的灰色模型进行检验,步骤如下:
(1)计算 深度学习数据预测模型 数据预测建模_深度学习数据预测模型_02深度学习数据预测模型 数据预测建模_数学建模_30 之间的残差 深度学习数据预测模型 数据预测建模_数学建模_31 和相对误差 深度学习数据预测模型 数据预测建模_原始数据_32
深度学习数据预测模型 数据预测建模_数学建模_33 深度学习数据预测模型 数据预测建模_数学建模_34
(2)求原始数据 深度学习数据预测模型 数据预测建模_深度学习数据预测模型_02 的均值以及方差 深度学习数据预测模型 数据预测建模_原始数据_36
(3)求 深度学习数据预测模型 数据预测建模_数学建模_31 的平均值 深度学习数据预测模型 数据预测建模_数学建模_38 以及残差的方差 深度学习数据预测模型 数据预测建模_发展趋势_39
(4)计算方差比 深度学习数据预测模型 数据预测建模_数学建模_40
(5)求小误差概率 深度学习数据预测模型 数据预测建模_原始数据_41
(6)灰色模型精度检验如下表所列。

等级

相对误差q

方差比C

小概率误差P

I级

<0.01

<0.35

>0.95

II级

<0.05

<0.50

<0.80

III级

<0.10

<0.65

<0.70

IV级

>0.20

>0.80

<0.60

8.利用模型进行预测:深度学习数据预测模型 数据预测建模_数学建模_42
其中,深度学习数据预测模型 数据预测建模_深度学习数据预测模型_43 为原数列的模拟;
深度学习数据预测模型 数据预测建模_原始数据_44

三、基于MATLAB R2014a的灰色预测实现方法
1.典型程序结构(可完全按照预测模型的求解步骤)
(1)对原始数据进行累加。
(2)构造累加矩阵 B 与常数向量。
(3)求解灰参数。
(4)将参数带入预测模型进行数据预测

2.实例
已知某公司1999-2008年的利润为(单位:元/年):[89677,99215,109655,120333,135823,159878,182321,209407,246619,300670]
具体的MATLAB程序如下:

clc
syms a b;                           % 创建符号变量(用于符号运算的变量)a ,b
c = [a b]';                         % 创建一个2 * 1的符号变量矩阵c
start = 1999;                       % 第一个数据的横坐标(起始年)
finish = 2018;                      % 想要预测到的数据的横坐标(目标年)
% % 数据读入
A = [89677,99215,109655,120333,135823,159878,182321,209407,246619,300670];
B = cumsum(A);                      % 原始数据累加
n = length(A);                      % 原始数据个数
% % 生成累加矩阵
for i = 1 : (n - 1)
    C(i) = (B(i) + B(i + 1)) / 2;
end
% % 生成常数向量
D = A; D(1) = [];                   
D = D';
% % 最小二乘法计算灰参数
E = [-C; ones(1,n-1)];
c = (E * E') \ E * D;
c = c';
a = c(1); b = c(2);                 % 将算得得灰参数传入变量a , b中
% % 预测后续数据
F = []; F(1) = A(1);
for i = 2 : (finish - start + 1)
    F(i) = (A(1) - b / a) / exp(a * (i - 1)) + b / a;
end
G = []; G(1) = A(1);
for i = 2 : (finish - start + 1)
    G(i) = F(i) - F(i - 1);         % 得到预测出来的数据
end
% % 设定时间序列
t1 = start : (start + n - 1);       % 原始数据的时间序列
t2 = start : finish;                % 预测数据的时间序列
% % 预测图输出
plot(t1,A,'o',t2,G);                % 原始数据与预测数据的比较

得到的预测图输出如下:

深度学习数据预测模型 数据预测建模_数学建模_45


程序说明:

  • 接口已经在程序开头拉出,因此在实际使用时可以直接套用该程序,只需要把原数据和时间序列变量 start 和 finish 替换就可以了。
  • 模型误差检验可以灵活处理,这里给出的是预测数据与原始数据的比较图,实际运用时也可以对预测数据进行其他方式的精度校验。