灰色预测模型--两秒直接上手

文章目录

  • 1 问题导入
  • 2 实质分析
    • 2.1 是什么
    • 2.2 为什么
    • 2.3 怎么做
  • 3 竞赛参考
    • 3.1 代码
    • 3.2 word文档
    • 3.3 资料


1 问题导入

恐怖主义是人类的共同威胁,打击恐怖主义是每个国家应该承担的责任。对恐怖袭击事件相关数据的深入分析有助于加深人们对恐怖主义的认识,为反恐防恐提供有价值的信息支持。
对未来反恐态势的分析评估有助于提高反恐斗争的针对性和效率。下图是对2015年–2018年12个季度的某地区恐怖袭击事件数量统计,请你们依据该数据,建立适当的数学模型,预测未来2年的恐怖事件数量1
灰色预测模型--两秒直接上手_第1张图片

疑惑:给的数据较少,该如何预测?


2 实质分析

2.1 是什么

灰色预测2是利用GM模型对系统行为特征的发展变化规律进行估计预测。
灰色预测在工业、农业、商业等经济领域,以及环境、社会和军事等领域中都有广泛的应用。特别是依据目前已有的数据对未来的发展趋势做出预测分析。

2.2 为什么

1.事件为灰因白果3. #结果明确,影响因素复杂且未知
2. 数据量少
3. 数据是等间距或者非等间距
4. 预测需要可检验性. #希望预测结果科学性严谨,经得起检验

2.3 怎么做

为了对所给数据的变化过程进行研究和预测,我们使用灰色预测GM(1,1)4模型,将离散的数据生成随机性小且有规律的生成数,再建立起微分方程进行求解。

具体步骤如下:


  1. 数据级比检验

原因:保障GM(1,1)模型的可行性,需要对已知数据列做必要的处理。

原始数据 x ( 0 ) x^{(0)} x(0)

x ( 0 ) = ( x ( 0 ) ( 1 ) , x ( 0 ) ( 2 ) , ⋯   , x ( 0 ) ( n ) ) x^{(0)}=(x^{(0)}(1),x^{(0)}(2),\cdots,x^{(0)}(n)) x(0)=(x(0)(1),x(0)(2),,x(0)(n))

计算数列的级比 λ ( k ) \lambda(k) λ(k)
λ ( 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,\cdots,n λ(k)=x(0)(k)x(0)(k1),k=2,3,,n

如果所有的级比 λ ( k ) \lambda(k) λ(k)都落在 ( e − 2 n + 1 , e 2 n + 2 ) (e^{-\tfrac{2}{n+1}},e^{\tfrac{2}{n+2}}) (en+12,en+22)内,则数列 x ( 0 ) x^{(0)} x(0)可以作为模型GM(1,1)的数据进行灰色预测。如果没通过,对数列 x ( 0 ) x^{(0)} x(0)做变化处理,使其落入范围内。即取适当的常数 c c c,做平移交换:

y ( 0 ) ( k ) = x ( 0 ) ( k ) + c , k = 1 , 2 , ⋯   , n y^{(0)}(k)=x^{(0)}(k)+c,k=1,2,\cdots,n y(0)(k)=x(0)(k)+c,k=1,2,,n
再进行级比检验,直至通过或者更换模型。

  1. 数据累加和微分方程构造

对原始数据列 x ( 0 ) x^{(0)} x(0)做一次累加(AGO)生成数列 x ( 1 ) x^{(1)} x(1)

x ( 1 ) = ( x ( 1 ) ( 1 ) , x ( 1 ) ( 2 ) , ⋯   , x ( 1 ) ( n ) ) x^{(1)}=(x^{(1)}(1),x^{(1)}(2),\cdots,x^{(1)}(n)) x(1)=(x(1)(1),x(1)(2),,x(1)(n))
其中:
x ( 1 ) ( k ) = ∑ i = 1 k x ( 0 ) ( i ) , k = 1 , 2 , ⋯   , n x^{(1)}(k)=\sum_{i=1}^{k}x^{(0)}(i),k=1,2,\cdots,n x(1)(k)=i=1kx(0)(i),k=1,2,,n

对应的微分方程为:( a a a为发展系数, b b b为灰作用量)
d x ( 1 ) d t + a x ( 1 ) ( t ) = b \frac{dx^{(1)}}{dt}+ax^{(1)}(t)=b dtdx(1)+ax(1)(t)=b

  1. 系数求解(构造数据矩阵与数据向量)与微分方程求解

数据矩阵 B B B
B = [ − z ( 1 ) ( 2 ) 1 − z ( 1 ) ( 3 ) 1 ⋮ ⋮ − z ( 1 ) ( n ) 1 ] B= \begin{bmatrix} -z^{(1)}(2) & 1 \\ -z^{(1)}(3) & 1 \\ \vdots & \vdots \\ -z^{(1)}(n) & 1 \\ \end{bmatrix} B=z(1)(2)z(1)(3)z(1)(n)111
数据向量 Y Y Y
Y = [ x ( 0 ) ( 2 ) x ( 0 ) ( 3 ) ⋮ x ( 0 ) ( n ) ] Y= \begin{bmatrix} x^{(0)}(2) \\ x^{(0)}(3) \\ \vdots \\ x^{(0)}(n) \\ \end{bmatrix} Y=x(0)(2)x(0)(3)x(0)(n)

其中 z ( 1 ) z^{(1)} z(1)为加权平均值:
z ( 1 ) ( k ) = 0.5 x ( 1 ) ( k ) + 0.5 x ( 1 ) ( k − 1 ) , k = 2 , 3 , ⋯   , n z^{(1)}(k)=0.5x^{(1)}(k)+0.5x^{(1)}(k-1),k=2,3,\cdots,n z(1)(k)=0.5x(1)(k)+0.5x(1)(k1),k=2,3,,n

计算系数 μ ^ \hat{\mu} μ^(最小二乘法):
μ ^ = ( a , b ) T = ( B T B ) − 1 B T Y \hat{\mu}=(a,b)^T=(B^TB)^{-1}B^TY μ^=(a,b)T=(BTB)1BTY

对前面的微分方程求解可得:
x ^ ( 1 ) ( k + 1 ) = ( x ( 0 ) ( 1 ) − b a ) e − a k + b a , k = 1 , 2 , ⋯   , n − 1 \hat{x}^{(1)}(k+1)=(x^{(0)}(1)-\frac{b}{a})e^{-ak}+\frac{b}{a},k=1,2,\cdots,n-1 x^(1)(k+1)=(x(0)(1)ab)eak+ab,k=1,2,,n1
x ^ ( 0 ) ( k + 1 ) = x ^ ( 1 ) ( k + 1 ) − x ^ ( 1 ) ( k ) , k = 1 , 2 , ⋯   , n − 1 \hat{x}^{(0)}(k+1)=\hat{x}^{(1)}(k+1)-\hat{x}^{(1)}(k),k=1,2,\cdots,n-1 x^(0)(k+1)=x^(1)(k+1)x^(1)(k),k=1,2,,n1
x ^ ( 1 ) ( 1 ) = x ^ ( 0 ) ( 1 ) = x ( 0 ) ( 1 ) \hat{x}^{(1)}(1)=\hat{x}^{(0)}(1)=x^{(0)}(1) x^(1)(1)=x^(0)(1)=x(0)(1)
由上面三式可得:(最终结果)
x ^ ( 0 ) ( k + 1 ) = ( x ( 0 ) ( 1 ) − b a ) ( 1 − e a ) e − a k , k = 1 , 2 , ⋯   , n − 1 \hat{x}^{(0)}(k+1)=(x^{(0)}(1)-\frac{b}{a})(1-e^a)e^{-ak},k=1,2,\cdots,n-1 x^(0)(k+1)=(x(0)(1)ab)(1ea)eak,k=1,2,,n1

  1. 残差检验与级比偏差检验

残差检验 ε ( k ) \varepsilon(k) ε(k)
ε ( k ) = x ( 0 ) ( k ) − x ^ ( 0 ) ( k ) x ( 0 ) ( k ) , k = 1 , 2 , ⋯   , n \varepsilon(k)=\frac{x^{(0)}(k)-\hat{x}^{(0)}(k)}{x^{(0)}(k)}, k=1,2,\cdots,n ε(k)=x(0)(k)x(0)(k)x^(0)(k),k=1,2,,n
如果 ε ( k ) \varepsilon(k) ε(k)<0.2,则可认为达到一般要求;如果 ε ( k ) \varepsilon(k) ε(k)<0.1,则认为达到较高的要求。

级比偏差检验 ρ ( k ) \rho(k) ρ(k)
ρ ( k ) = 1 − ( 1 − 0.5 a 1 + 0.5 a ) λ ( k ) \rho(k)=1-(\frac{1-0.5a}{1+0.5a})\lambda(k) ρ(k)=1(1+0.5a10.5a)λ(k)
如果 ρ ( k ) \rho(k) ρ(k)<0.2,则可认为达到一般要求;如果 ρ ( k ) \rho(k) ρ(k)<0.1,则认为达到较高的要求。

注:在真实做题的时候,满足一个即可,满足两个更好。


为了避免查重,可以直接放图片(如何做图?)

灰色预测模型--两秒直接上手_第2张图片


3 竞赛参考

3.1 代码

Matlab代码

clc,clear;
x0 = [4.012 3.761 3.66  3.532 3.46  3.629 3.321 3.177 2.719 3.023 2.8   2.358]'; 
c = 1;
x0 = x0+c;
n = length(x0);
lamda = x0(1:n-1)./x0(2:n); %计算级比
range = minmax(lamda');
x1 = cumsum(x0); %累加运算
z = zeros(1, n);
for i=2:n
    z(i) = 0.5*(x1(i)+x1(i-1));
end
B = [-z(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)); %微分方程求解
x=vpa(x,6); %小数形式显示微分方程的解
x1hat = subs(x, t, (0:n-1)); %求已知数据的预测值
x1hat = double(x1hat); %符号数转成数值类型
x0hat = [x0(1), diff(x1hat)]; %差分运算,还原数据
epsilon = (x0'-x0hat)/(x0'); %计算残差
rho = 1-(1-0.5*u(1))/(1+0.5*u(1))*lamda'; %计算级比偏差
%预测
px1hat = subs(x, t, (0:n+3)); %求已知数据的预测值
px1hat = double(px1hat); %符号数转成数值类型
px0hat = [x0(1), diff(px1hat)]; %差分运算,还原数据
px0hat = px0hat-c; 

%  注意:代码文件仅供参考,请勿直接用在论文中

3.2 word文档

灰色预测模型--两秒直接上手_第3张图片

3.3 资料

灰色预测模型--两秒直接上手_第4张图片
注意:本文word、源代码、参考资料等等可关注公众号“小鹏数学建模”,回复“灰色2”或“灰色上手”即可获得

关注公众号“小鹏数学建模”,建模之路不再困难


  1. [1]第十五届“华为杯”中国研究生数学建模竞赛—C题. ↩︎

  2. [2]司守奎,孙兆亮.数学建模算法与应用[M].国防工业出版社,2015. ↩︎

  3. [3]邓聚龙.灰色系统基本方法.国防工业出版社,2005. ↩︎

  4. [4]王永晨,潘永惠,樊立华,林喆.灰色预测和灰色关联分析在医院管理中的应用[J].中国医院统计,2000(04):218-220. ↩︎

你可能感兴趣的:(学习,python,matlab)