灰色预测(matlab数学建模)

551 阅读2分钟

一些介绍

灰色系统、白色系统、黑色系统

  • 白色系统是指一个系统的内部特征是完全已知的,既系统信息是完全充分的。
  • 黑色系统是一个系统的内部信息对外界来说是一无所知的,只能通过它与外界的联系来加以观测研究。
  • 灰色系统介于白色和黑色之间,灰色系统内的一部分信息是已知的,另一部分信息是未知的,系统内各因素间有不确定的关系。

关联分析

几何形状越接近,关联程度也就越大

预测模型选择

  • GM(1,1)模型适用于具有较强指数规律的序列,只能描述单调的变化过程,如指数型
  • 非单调摆动发展序列具有饱和状态的 S 形序列,  Verhulst 模型,GM(2,1)模型,DGM等更适用
  • G(1,1)一个数据序列,G(1,n)n个数据变量

GM(1,1)模型

% 灰色预测
%{
积累
syms
a=cumsum(b) 累积和 b=[1,2,3,4,5] a=[1,3,6,10,15]
inv() 矩阵求逆
%}
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);
%--这里预测后面十个数据 n可更改
for i=2:(n+10)  
    F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a ;
end
G=[];G(1)=A(1);
for i=2:(n+10)
    G(i)=F(i)-F(i-1); %--得到预测出来的数据
end 
t1=1999:2008;
t2=1999:2018;
G
plot(t1,A,'ko', 'LineWidth',2)
hold on
plot(t2,G,'k', 'LineWidth',2)
xlabel('年份', 'fontsize',12)
ylabel('利润/(元/年)','fontsize',12)
set(gca,  'LineWidth',2); %set图形属性设置 gca当前坐标轴或图
title('预测结果');
legend('真实值','预测值');

%{
预测效果检验
输出q c p,与灰色模型精度表对比
%}
%后验差检验
e=A-G(1:n);%残差
q=e/A%相对误差
s1=var(A);%原始数据的方差
s2=var(e);%残差的方差
c=s2/s1%方差比
p=0;  %小误差概率
for i=1:n
    if(abs(e(i))<0.6745*s1)
        p=p+1;
    end
end
p=p/n