预测类问题中的灰色预测模型

本文详细介绍了灰色预测模型,包括GM(1,1)、GM(2,1)、DGM(2,1)和灰色Verhulst模型的原理及应用。通过Python代码展示了模型构建和误差检验的步骤,适用于数据有限、序列不完整或有特定趋势的预测问题,如人口预测、生物生长等领域。
摘要由CSDN通过智能技术生成

前言:灰色预测模型的主要特点是模型使用的不是原始数据序列而是生成的数据序列,适合于历史数据少、序列的完整性及可靠性低的情况,但只适用于中短期和指数增长的预测。

参考书籍:《python数学建模算法与应用》 司守奎 孙玺菁  (强烈推荐!)

具体代码书上有写我就没有再敲出来

1GM11)预测模型

GM(1,1)表示模型是1阶微分方程,且只含有1个变量的灰色模型。该模型适合具有较强指数规律的序列,且变化过程单调的问题。

库:sympy numpy

步骤:

1、数据的检验和处理

计算参考数列的级比,查看是否都落在级比容许范围内,否则采取平移变换使落在可容覆盖内。lamda=x0[:-1]/x0[1:]

2、求出一次累加生成序列(1-AGO)和累加生成序列的均值生成序列

累加生成序列:x1=np.cumsum(x0)

均值生成序列:(x1[1:]+x1[:-1])/2

3、构造数据矩阵B和数据向量Y,计算白化微分方程的系数(注意初值

u=np.linalg.pinv(B)@Y=[a,b]’

4、求出时间响应函数和时间响应序列

t=sp.symbol(“t”);x=sp.symbole(“x”,cls=sp.Function)

eq=x(t).diff(t)+u[0]*x(t)-u[1]

xt0=sp.dsolve(eq,ics={x(0):x0[0]})

提取方程中的符号解:xt0=xt0.args[1]

5、通过时间响应序列反求参考数列,进行误差检验。

xt=sp.lambdify(t,xt0,’numpy’)

t=np.arange(n+1)

xh=xt(t)

cha=x0-x0h[:-1];delta=abs(cha/x0)*100    相对误差

rho=abs(1-(1-0.5*u[0])/(1+0.5*u[0])*lamda) 级比偏差

相对误差和级比偏差值小于0.2认为达到一般要求,小于0.1认为达到较高的要求。

建模时步骤:

1、计算级比,判断是否在可容覆盖范围内(应该写出级比计算公式和可容覆盖范围)

2、根据1-AGO和均值生成序列建立GM(1,1)模型,应当写出两个序列和B、Y数据矩阵及求到的a、b

3、求解时间响应序列

4、给出相对误差和级比偏差的数据表格,说明模型精度

2GM21)预测模型

该模型适用于非单调的摆动发展序列或有饱和的S形序列

步骤:(该方法不需要数据的检验和处理)

1、求出1次累加生成序列(1-AGO)、1次累减生成序列(1-IAGO)和累加生成序列的均值生成序列

2、构造数据矩阵B和数据向量Y,计算白化微分方程的系数(注意初值

3、求出时间响应函数和时间响应序列

4、通过时间响应序列反求参考数列,进行误差检验

GM(2,1)和GM(1,1)的求解步骤基本相同,但GM(2,1)需要求解1-IAGO,代码部分大致相同。

3DGM21)预测模型

该模型的求解步骤和GM(2,1)相同,只是不用求均值生成序列

4、灰色Verhulst预测模型

该模型适用于具有饱和状态的过程,即S型过程,常用于人口预测、生物生长、繁殖预测及产品经济寿命预测等。

步骤:和GM(1,1)求解过程基本相同,但建立的灰微分方程不同。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值