灰色预测gm(1、1)的模型python代码_python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导...

关键词:灰色预测 python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导

一、前言

本文的目的是用Python和类对灰色预测进行封装

二、原理简述

1.灰色预测概述

灰色预测是用灰色模型GM(1,1)来进行定量分析的,通常分为以下几类:

(1) 灰色时间序列预测。用等时距观测到的反映预测对象特征的一系列数量(如产量、销量、人口数量、存款数量、利率等)构造灰色预测模型,预测未来某一时刻的特征量,或者达到某特征量的时间。

(2) 畸变预测(灾变预测)。通过模型预测异常值出现的时刻,预测异常值什么时候出现在特定时区内。

(3) 波形预测,或称为拓扑预测,它是通过灰色模型预测事物未来变动的轨迹。

(4) 系统预测,对系统行为特征指标建立一族相互关联的灰色预测理论模型,在预测系统整体变化的同时,预测系统各个环节的变化。

上述灰色预测方法的共同特点是:

(1)允许少数据预测;

(2)允许对灰因果律事件进行预测,例如:

灰因白果律事件:在粮食生产预测中,影响粮食生产的因子很多,多到无法枚举,故为灰因,然而粮食产量却是具体的,故为白果。粮食预测即为灰因白果律事件预测。

白因灰果律事件:在开发项目前景预测时,开发项目的投入是具体的,为白因,而项目的效益暂时不很清楚,为灰果。项目前景预测即为灰因白果律事件预测。

(3)具有可检验性,包括:建模可行性的级比检验(事前检验),建模精度检验(模型检验),预测的滚动检验(预测检验)。

2.GM(1,1)模型理论

GM(1,1)模型适合具有较强的指数规律的数列,只能描述单调的变化过程。已知元素序列数据:

做一次累加生成(1-AGO)序列:

其中

的紧邻均值生成序列:

其中,

建立GM(1,1)的灰微分方程模型为:

其中,

为发展系数,

为灰色作用量。设

为待估参数向量,即

,则灰微分方程的最小二乘估计参数列满足

其中

再建立灰色微分方程的白化方程(也叫影子方程):

白化方程的解(也叫时间响应函数)为

那么相应的GM(1,1)灰色微分方程的时间响应序列为:

再做累减还原可得

即为预测方程。

注1:原始序列数据不一定要全部使用,相应建立的模型也会不同,即

不同;

注2:原始序列数据必须要等时间间隔、不间断。

3.算法步骤

(1) 数据的级比检验

为了保证灰色预测的可行性,需要对原始序列数据进行级比检验。

对原始数据列

计算序列的级比:

若所有的级比

都落在可容覆盖

内,则可进行灰色预测;否则需要对

做平移变换,

,使得

满足级比要求。

(2) 建立GM(1,1)模型,计算出预测值列。

(3) 检验预测值:

① 相对残差检验,计算

,则认为达到一般要求,若

,则认为达到较高要求;

② 级比偏差值检验

根据前面计算出来的级比

, 和发展系数

, 计算相应的级比偏差:

, 则认为达到一般要求,若

, 则认为达到较高要求。

(4) 利用模型进行预测。

三、程序实现 python实现

你可能感兴趣的:(灰色预测gm(1,1)的模型python代码)