数学建模之灰色预测模型代码学习

灰色预测 

灰色系统理论认为,系统的行为尽管是模糊的,数据是复杂的,但毕竟是有序的,是有整体功能的。在建立灰色预测模型之前需要对原始时间序列进行数据处理,预处理后的数据序列称为生成列,灰色系统对数据的预处理一般有累加和累减两种。

灰色系统通过鉴别系统因素之间发展趋势的相异程度,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测发展趋势。

GM(1,1)模型(单序列一阶线性微分方程模型)是灰色系统中最为常用的模型。

MATALB编写的主要步骤


1、对原始数据进行累加

 2、构造累加矩阵B和常数向量

3、求解灰参数

4、将参数代入预测模型进行数据预测

模型检验

步骤如下:

1.计算残差与相对误差

2.求原始数据的均值与方差S1

3.求残差的平均值与残差的方差S2

4.计算方差比S1/S2

5.求小误差概率

模型案例

预测公司收入

clear;
clc;
syms a b;%a,b为待定系数,a为发展系数,b为灰色作用量
c=[a,b]';%a,b构成的矩阵
A=[89677,99215,109655,120333,135823,159878,182321,209407,246619,300670];%原始数据
n=length(A);%求出A的长度
B=A;   %B为累加矩阵
for i=2:n
    B(i)=B(i)+B(i-1); %原始数据累加
end
for i=1:n-1
    C(i)=(B(i)+B(i+1))/2;%对数据做均值,生成矩阵C
end
%计算待定参数的值
D=A;  
D(1)=[];
D=D';%常数项向量
E=[-C;ones(1,n-1)];
c=(E*E')^(-1)*E*D;
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
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,'o',t2,G);

%%模型检验
for i=1:n
    T(i)=A(i)-G(i);%T为残差
end
Amean=mean(A);%原始数据的均值
As=sum((A-Amean).*(A-Amean))/n;
for i=1:n
    Q(i)=A(i)/G(i);%Q为相对误差
end
q=mean(Q);
Ts=sum((T-q).*(T-q))/n;
Fcb=Ts/As;


%%下面是我瞎写的,正确性有待商榷
% 求小误差概率
%h = ztest(x,m,sigma,alpha)   显著性水平为alpha,默认为0.05,x为正态总体的样本,m为均值μ0,sigma为标准差
h=ztest(A,Amean,sqrt(As*n/(n-1)));
if (h==0)&&(q<0.01)&&(Fcb<0.35)
    disp('该模型通过一级精度检验');
else
    disp('该模型没有通过一级精度检验');
end

相关资源 

理论部分 

代码部分

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值