数学建模:灰色预测模型GM(1,1)matlab实现

灰色预测的主要特点是模型使用的不是原始数据序列,而是生成的数据序列。其核
心体系是灰色模型(GreyModel,GM),即对原始数据作累加生成(或其他方法生成)得到
近似的指数规律再进行建模的方法。优点是不需要很多的数据,一般只需要4个数据,就
能解决历史数据少、序列的完整性及可靠性低的问题;能利用微分方程来充分挖掘系统的
本质,精度高;能将无规律的原始数据进行生成得到规律性较强的生成序列,运算简便,易
于检验,不考虑分布规律,不考虑变化趋势。缺点是只适用于中短期的预测,只适合指数
增长的预测。

GM(1,1)预测模型

GM(1,1)模型预测步骤

1)数据的检验与处理

首 先 , 为 了 保 证 建 模 方 法 的 可 行 性 , 需 要 对 已 知 数 据 列 作 必 要 的 检 验 处 理 。 设 参 考 数 据 为 x ( 0 ) = ( x ( 0 ) ( 1 ) , x ( 0 ) ( 2 ) , . . . , x ( 0 ) ( n ) ) , 计 算 序 列 的 级 比 首先,为了保证建模方法的可行性,需要对已知数据列作必要的检验处理。设参考数据为\\x^{(0)}=(x^{(0)}(1),x^{(0)}(2),...,x^{(0)}(n)),计算序列的级比 x(0)=(x(0)(1),x(0)(2),...,x(0)(n))
λ ( k ) = x ( 0 ) ( k − 1 ) x ( 0 ) ( k ) , k = 2 , 3 , . . . n 。 \lambda(k)=\frac{x^{(0)}(k-1) }{x{(0)}(k)},k=2,3,...n。 λ(k)=x(0)(k)x(0)(k1),k=2,3,...n
如 果 所 有 的 级 比 λ ( k ) 都 落 在 可 容 覆 盖 Θ = ( e − 2 n + 1 , e 2 n + 2 ) 内 , 可 以 作 为 模 型 G M ( 1 , 1 ) 的 数 据 进 行 灰 色 预 测 。 否 则 , 需 要 对 序 列 x ( 0 ) 做 必 要 的 变 换 处 理 , 使 其 落 入 可 容 覆 盖 内 。 即 取 适 当 的 常 数 c , 作 平 移 变 换 如果所有的级比\lambda(k)都落在可容覆盖\Theta=(e^{\frac{-2}{n+1}},e^{\frac{2}{n+2}})内,可以作为模型GM(1,1)的数据进行\\灰色预测。否则,需要对序列x^{(0)}做必要的变换处理,使其落入可容覆盖内。即取适当的常数\\c,作平移变换 λ(k)Θ=(en+12,en+22),GM(1,1)x(0)使c
y ( 0 ) ( k ) = y ( 0 ) ( k ) + c , k = 1 , 2 , . . . , n , 使 序 列 y ( 0 ) = ( y ( 0 ) ( 1 ) , y ( 0 ) ( 2 ) , . . . , y ( 0 ) ( n ) ) 的 级 比 y^{(0)}(k)=y^{(0)}(k)+c,k=1,2,...,n,\\使序列y^{(0)}=(y^{(0)}(1),y^{(0)}(2),...,y^{(0)}(n))的级比 y(0)(k)=y(0)(k)+c,k=1,2,...,n,使y(0)=(y(0)(1),y(0)(2),...,y(0)(n))
λ y ( k ) = y ( 0 ) ( k − 1 ) y ( 0 ) ( k ) ∈ Θ , k = 2 , 3 , . . . n \lambda_y(k)=\frac{y^{(0)}(k-1) }{y{(0)}(k)}\in\Theta,k=2,3,...n λy(k)=y(0)(k)y(0)(k1)Θ,k=2,3,...n
2)建立模型
预测值
在这里插入图片描述
3)检验预测值
           ( 1 ) 残 差 检 验 。 令 残 差 为 ϵ ( k ) , 计 算 ϵ ( k ) = x ( 0 ) ( k ) − x ^ ( 0 ) ( k ) x ( 0 ) ( k ) , k = 1 , 2 , . . . , n \;\;\;\;\;(1)残差检验。令残差为\epsilon(k),计算\\\epsilon(k)=\frac{x^{(0)}(k)-\hat{x}^{(0)}(k) }{x^{(0)}(k)},k=1,2,...,n (1)ϵ(k),ϵ(k)=x(0)(k)x(0)(k)x^(0)(k),k=1,2,...,n
这 里 x ^ ( 0 ) ( 1 ) = x ( 0 ) ( 1 ) , 如 果 ϵ ( k ) < 0.2 , 则 认 为 达 到 一 般 要 求 ; 如 果 ϵ ( k ) < 0.1 , 则 认 为 达 到 较 高 的 要 求 。 这里\hat{x}^{(0)}(1)=x^{(0)}(1),如果\epsilon(k)<0.2,则认为达到一般要求;如果\epsilon(k)<0.1,\\则认为达到较高的要求。 x^(0)(1)=x(0)(1),ϵ(k)<0.2,;ϵ(k)<0.1
级 比 偏 差 值 检 验 。 首 先 由 参 考 数 据 : x ( 0 ) ( k − 1 ) , x ( 0 ) ( k ) 计 算 出 级 比 λ ( k ) , 再 用 发 展 系 数 a 求 出 相 应 的 级 比 偏 差 ρ ( k ) = 1 − 1 − 0.5 a 1 + 0.5 a λ ( k ) 如 果 ρ ( k ) < 0.2 , 则 可 认 为 达 到 一 般 要 求 ; 如 果 ρ ( k ) < 0.1 , 则 认 为 达 到 较 高 要 求 级比偏差值检验。首先由参考数据:x^{(0)}(k-1),x^{(0)}(k)计算出级比\lambda(k),再用发展系数a\\求出 相应的级比偏差\\\rho(k)=1-\frac{1-0.5a}{1+0.5a}\lambda(k)\\如果\rho(k)<0.2,则可认为达到一般要求;如果\rho(k)<0.1,则认为达到较高要求 :x(0)(k1)x(0)(k)λ(k)aρ(k)=11+0.5a10.5aλ(k)ρ(k)<0.2ρ(k)<0.1
4)预测预报
由CM(1,1)模型得到指定时区内的预测值,根据实际问题的需要,给出相应的预测
预报。

城市交通噪声数据
在这里插入图片描述
附上matlab代码

clc, clear
x0=[71.1 72.4 72.4 72.1 71.4 72.0 71.6]';%注意这里为列向量
n=length(x0);
lamda =x0(1:n-1)./x0(2:n)%计算级比
range = minmax( lamda') %计算级比的范围
x1 = cumsum(x0)%累加运算
B=[ -0.5*(x1(1:n-1) +x1(2:n)),ones(n-1,1)];
Y = x0(2:n);
u=B\Y%拟合参数u(1) =a,u(2) =b
syms x(t)
x= dsolve(diff(x) +u(1) *x==u(2),x(0)==x0(1)); %求微分方程的符号解
xt=vpa(x,6)%以小数格式显示微分方程的解
yucel =subs(x,t,[0:n-1]); %求已知数据的预测值
yucel = double(yucel);%符号数转换成数值类型,否则无法做差分运算.
yuce=[ x0(1),diff(yucel)]%差分运算,还原数据
epsilon=x0'-yuce%计算残差
delta = abs( epsilon./x0')%计算相对误差
rho=1-(1 -0.5*u(1))/(1 +0.5*u(1)) * lamda'%计算级比偏差值,u(1) =a
n=7;
t1=1:n;
t2=1:n;
plot(t1,x0,'bo--');
hold on;
plot(t2,yuce,'r*-'); 

lamda =
    0.9820
    1.0000
    1.0042
    1.0098
    0.9917
    1.0056
range =
    0.9820    1.0098
x1 =
   71.1000
  143.5000
  215.9000
  288.0000
  359.4000
  431.4000
  503.0000
u =
    0.0023
   72.6573
xt =
31000.0 - 30928.9*exp(-0.00234379*t)
yuce =
   71.1000   72.4057   72.2362   72.0671   71.8984   71.7301   71.5622
epsilon =
         0   -0.0057    0.1638    0.0329   -0.4984    0.2699    0.0378
delta =
         0    0.0001    0.0023    0.0005    0.0070    0.0037    0.0005
rho =
    0.0203    0.0023   -0.0018   -0.0074    0.0107   -0.0032
>> 

在这里插入图片描述
转载请标明出处,谢谢!。

如果感觉本文对您有帮助,请留下您的赞,您的支持是我坚持写作最大的动力,谢谢!

  • 13
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值