数学建模——灰色预测(GM11) - 实践

灰色理论前面灰色关联分析说过了,这里直接正题

哪些数据适合灰色预测?

1.数据量很少的

例如只告诉了长江近5年的水质情况要求预测明年的水质情况

2.得预测的量少的

后面10年的就是只是预测明年的水质情况而不

3.数据规律不明显的

1.起伏不大型2.数据存在特殊点

灰色预测原理

通过累加制造规律构建

假设原序列是x^{(0)},新的累C

那么只要我通过找到了新的累加序列的函数表达式那就能够反推原序列了

比如我求出来了x^{(1)}(k+1)

x^{(0)}(k+1)=x^{(1)}(k+1)-x^{(1)}(k)就行算预测值

因此现在目标就不是求原序列拟合函数表达式——>而是求新的累加序列的拟合函数表达式

这种拟合线长得一般像指数曲线或直线

所以构建一阶常微分方程来求解拟合曲线的函数表达式

x^{(1)}满足

\frac{dx^{(1)}}{dt}+ax^{(1)}=u

已知a和u即可求出函数表达式

再理一下逻辑:要预测x^{(0)}就得求x^{(1)},要预测x^{(1)}就得算x^{(1)}的函数表达式,要解出函数表达式就得算微分方程,要算微分方程就得知道a和u

计算公式参考微分方程的不同形式对应的方法概括(纯公式无证明)-CSDN博客

但是带入不同的x^{(1)}会求出很多a和u,所以要使用最小二乘法,通过最小化误差的平方和找最佳匹配函数

但是材料是离散的,所以\frac{dx^{(1)}}{dt}要写成\frac{\Delta x^{(1)}}{\Delta t}

而对于\Delta x^{(1)}\Delta x^{(1)}=x^{(1)}(t)-x^{(1)}(t-1)=x^{(0)}(t)

对于\Delta t\Delta t=t-(t-1)=1

所以\frac{dx^{(1)}}{dt}=\frac{\Delta x^{(1)}}{\Delta t}=\frac{x^{(0)}(t)}{1}=x^{(0)}(t)

因此\frac{dx^{(1)}}{dt}+ax^{(1)}=u\Leftrightarrow x^{(0)}(t)+ax^{(1)}(t)=u\Leftrightarrow x^{(0)}(t)=u-ax^{(1)}(t)

不妨把x^{(0)}(t)看成Y,x^{(1)}(t)看成X,得到Y=u-aX

这里求解方式参考:利用regress函数即可算出两个参数(算出的X前面的参数是-a的值)

数学建模——回归分析-CSDN博客

为了更能体现前后数据的关系,把x^{(1)}(t)变成取前后两个数均值更合理

记作:z^{(1)}(t)=\frac{x^{(1)}(t)+x^{(1)}(t-1)}{2}

方程改写为x^{(0)}(t)=u-az^{(1)}(t)

这里有一个问题:左边有k个数据,右边有k-1个数据,少了一个怎么对应

其实实际上我们是舍弃了初始数据的第一个素材

计算出au之后就计算\frac{dx^{(1)}}{dt}+ax^{(1)}=u

带入公式:

其中P(x)=a,Q(x)=u注意这里x是因变量,t才是自变量

x^{(1)}(t)=e^{-\int adt}(\int ue^{\int adt}dt+C)=e^{-at}(\int ue^{at}dt+C)=e^{-at}(\frac{u}{a}e^{at}+C)=\frac{u}{a}+Ce^{-at}

由于当t=1时x^{(1)}(1)=\frac{u}{a}+Ce^{-a}

因此C=(x^{(1)}(1)-\frac{u}{a})*e^{a},因为x^{(1)}(1)=x^{(0)}(1)C=(x^{(0)}(1)-\frac{u}{a})*e^{a}

x^{(1)}(t)=\frac{u}{a}+(x^{(0)}(1)-\frac{u}{a})\cdot e^{a}\cdot e^{-at}=\frac{u}{a}+(x^{(0)}(1)-\frac{u}{a})\cdot e^{-at+a}=\frac{u}{a}+(x^{(0)}(1)-\frac{u}{a})\cdot e^{-a(t-1)},t=1,2,\cdots

k=t-1,t=k+1

因此x^{(1)}(k+1)=\frac{u}{a}+(x^{(0)}(1)-\frac{u}{a})e^{-ak},k=0,1,\cdots

数据与模型检验:

建模开始之前:

要通过级比检验判断是否适合GM(1,1)

计算\lambda (k)=\frac{x^{(0)}(k-1)}{x^{(0)}(k)},k=2,3,\cdots,n.

如果\lambda (k)在区间(e^{-\frac{2}{n+1}},e^{-\frac{2}{n+2}}),说明可以用这个模型

我感觉这个公式很奇怪,(e^{-\frac{2}{n+1}},e^{\frac{2}{n+1}})这个感觉对一点

如果不在区间内可以给每个数据都加上一个常数,看看是否在区间内,后面计算时减去常数即可

完成建模后:

需进行残差检验

\epsilon (k)=\frac{x^{(0)}(k)-\hat{x}^{(0)}(k)}{x^{(0)}(k)},k=1,2,\cdots,n

如果\epsilon (k)<0.2认为模型可以预测

也可以加入级比检验

如果没有通过就得考虑换一个模型了

整体流程

参考视频

posted @ 2025-08-16 12:52  wzzkaifa  阅读(20)  评论(0)    收藏  举报