grey-prediction-model

grey-prediction-model

Charles Lv7

灰色预测模型

灰色预测模型的概念及建模

灰色预测模型的概念

灰色预测模型(Gray Forecast Model)是通过少量的、不完全的的信息,建立数学模型并做出预测的一种预测方法。

灰色系统理论是研究解决灰色系统分析、建模、预测、决策和控制的理论.灰色预测是对灰色系统所做的预测。目前常用的一些预测方法(如回归分析等),需要较大的样本,若样本较小,常造成较大误差,使预测目标失效。灰色预测模型所需建模信息少,运算方便,建模精度高,在各种预测领域都有着广泛的应用,是处理小样本预测问题的有效工具。

灰色预测模型的建模

灰色预测的适用条件
  • 灰色预测模型属于预测类模型,适用于数据量较少,进行中短期预测。特别是它对时间序列短、统计数据少、信息不完全系统的分析与建模,具有独特的功效。但于此同时,它只适用于指数增长的预测
  • 灰色关联分析法属于评价类模型,适用于数据量较小、样本数据具有时间序列特征的情况下使用。
灰色预测模型的建立

灰色预测模型有很多,GM(1,1)模型使用最为广泛。

GM(1,1)表示模型是一阶微分方程,且只含1个变量的灰色模型

灰色关联预测分析GM(1,1)通常可分为以下几个步骤

使用灰色系统之前一定要检验数据!!!(级比检验)

image-20230902103523822 image-20230902103533881 image-20230902103543143

GM(1,1)模型适用于具有较强指数规律的序列,只能描述单调的变化过程,对于非单调的摆动发展序列或有饱和的 S 形序列,可以考虑建立 CM(2,1)、DGM和Verulst模型。

灰色关联分析

image_20230904162459 image_20230904162512

MATLAB代码实现

灰色关联分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
%灰色关联分析步骤
%【1】确定比较对象(评价对象)(就是数据,并且需要进行规范化处理,就是标准化处理,见下面例题的表格数据)和参考数列(评价标准,一般该列数列都是1,就是最优的的情况)
%【2】确定各个指标权重,可用层次分析确定
%【3】计算灰色关联系数
%【4】计算灰色加权关联度
%【5】评价分析
x1=[1.14 1.49 1.69 2.12 2.43 4.32 5.92 6.07 7.85;3.30 3.47 3.61 3.80 4.00 4.19 4.42 4.61 4.80;6.00 6.00 6.00 7.50 7.50 7.50 9.00 9.00 9.00;1.20 1.20 1.80 1.80 1.80 2.40 2.70 3.60 4.00;4.87 5.89 6.76 7.97 8.84 10.05 11.31 12.25 11.64]%原始数据5行9列
x=x1;
for i=1:5
for j=1:9
x(i,j)=x(i,j)/x1(1,j)
end
end
x1=x
for i=1:5
for j=1:9
x(i,j)=abs(x(i,j)-x1(i,1))
end
end
max=x(1,1)
min=x(1,1)
for i=1:5
for j=1:9
if x(i,j)>=max
max=x(i,j)
end
end
end
for i=1:5
for j=1:9
if x(i,j)<=min
min=x(i,j)
end
end
end
k=0.5 %分辨系数取值
l=(min+k*max)./(x+k*max)%求关联系数矩阵
guanliandu=sum(l')/n
[rs,rind]=sort(guanliandu,'descend') %对关联度进行排序

灰色预测算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
%灰色预测步骤
%(1)输入前期的小样本数据
%(2)输入预测个数
%(3)运行
y=input('请输入数据');
n=length(y);
yy=ones(n,1);
yy(1)=y(1);
for i=2:n
yy(i)=yy(i-1)+y(i)
end
B=ones(n-1,2);
for i=1:(n-1)
B(i,1)=-(yy(i)+yy(i+1))/2;
B(i,2)=1;
end
BT=B';
for j=1:(n-1)
YN(j)=y(j+1);
end
YN=YN';
A=inv(BT*B)*BT*YN;
a=A(1);
u=A(2);
t=u/a;
t_test=input('输入需要预测的个数');
i=1:t_test+n;
yys(i+1)=(y(1)-t).*exp(-a.*i)+t;
yys(1)=y(1);
for j=n+t_test:-1:2
ys(j)=yys(j)-yys(j-1);
end
x=1:n;
xs=2:n+t_test;
yn=ys(2:n+t_test);
plot(x,y,'^r',xs,yn,'*-b');
det=0;
for i=2:n
det=det+abs(yn(i)-y(i));
end
det=det/(n-1);
disp(['百分绝对误差为:',num2str(det),'%']);
disp(['预测值为:',num2str(ys(n+1:n+t_test))]);
  • Title: grey-prediction-model
  • Author: Charles
  • Created at : 2023-09-02 10:10:35
  • Updated at : 2023-09-04 17:41:35
  • Link: https://charles2530.github.io/2023/09/02/grey-prediction-model/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments