版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
灰色预测模型主要运用小数据的预测问题,比如可以由近期的数据预测出未来的数据
对于灰色预测的思想这里不再写了,到处可以找到详细解释,这里主要对于一个具体事例给出matlab代码(附上详细注释)
-
%近十年数据
89677,
99215,
109655,
120333,
135823,
159878,
182321,
209407,
246619,
300670
-
%预测未来五年数据
-
clc,clear;
-
syms a b;
-
c=[a b]
';
-
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=inv(E*E
')*E*D;
-
c=c
';
-
a=c(
1);b=c(
2);
-
%预测后续数据
-
F=[];F(
1)=A(
1);
-
for i=
2:(n+
5) %只推测后
10个数据,可以从此修改
-
F(i)=(A(
1)-b/a)/exp(a*(i
-1))+b/a;
-
end
-
G=[];G(
1)=A(
1);
-
for i=
2:(n+
5) %只推测后
10个数据,可以从此修改
-
G(i)=F(i)-F(i
-1); %得到预测出来的数据
-
end
-
t1=
1999:
2008;
-
t2=
1999:
2013; %多
10组数据
-
G
-
h=plot(t1,A,
'o',t2,G,'*'); %原始数据与预测数据的比较
-
set(h,
'LineWidth',1.5);