预测模型 订阅
预测模型是在采用定量预测法进行预测时,最重要的工作是建立预测数学模型。预测模型是指用于预测的,用数学语言或公式所描述的事物间的数量关系。它在一定程度上揭示了事物间的内在规律性,预测时把它作为计算预测值的直接依据。因此,它对预测准确度有极大的影响。任何一种具体的预测方法都是以其特定的数学模型为特征。预测方法的种类很多,各有相应的预测模型。 [1] 展开全文
预测模型是在采用定量预测法进行预测时,最重要的工作是建立预测数学模型。预测模型是指用于预测的,用数学语言或公式所描述的事物间的数量关系。它在一定程度上揭示了事物间的内在规律性,预测时把它作为计算预测值的直接依据。因此,它对预测准确度有极大的影响。任何一种具体的预测方法都是以其特定的数学模型为特征。预测方法的种类很多,各有相应的预测模型。 [1]
信息
外文名
prediction model
方    法
定量预测法
地    位
预测时作为计算预测值的直接依据
中文名
预测模型
模    型
Y=a+bl*x1+b2*x2+…+bm*xm
学    科
矿产资源经济与管理
预测模型简介
学科:矿产资源经济与管理词目:预测模型英文:prediction model
收起全文
精华内容
下载资源
问答
  • 人口预测模型灰色预测
    千次阅读
    2020-12-06 13:39:19

    灰色理论概况

    社会、经济、农业、工业、生态、生物等许多系统,是根据研究对象所属的领域和范围命名

    的,而灰色系统却是按颜色命名的。用“黑’

    ’表示信息未知,用“白”表示信息完全明确,

    用“灰

    "

    表示部分信息明确、部分信息不明确。相应地,信息完全明确的系统称为白色系统,

    信息未知的系统称为黑色系统,

    部分信息明确、

    部分信息不明确的系统成为灰色系统。

    灰色

    系统理论的研究对象是“部分信息已知、部分信息未知

    "

    的“小样本

    "

    “贫信息

    "

    不确定性系

    统,它通过对“部分

    "

    已知信息的生产、开发实现对现实世界的确切描述和认识。

    在人们的生活、

    经济活动或科研活动中,

    经常会遇到信息不完全的情况。例如,在农业生产

    中,即使是播种面积、

    、化肥、灌溉等信息完全明确,但由于劳动力技术水平、自然环境、

    气候条件、市场行情等信息不明确,仍难以准确地预计出产量、产值;在证券市场上,即使

    最高明的系统分析人员亦难以稳操胜券,

    因为预测不准金融政策、

    利率政策、企业改革、政

    治风云和国际市场变化及其某些板块价格波动对其他板块之影响的确切信息。

    灰色系统理论经过

    20

    年的发展其主要内容包括以灰色哲学为基础的思想体系,以灰色代数

    系统、

    灰色方程、灰色矩阵等为基础的理论体系,

    以灰色序列生成为基础的方法体系,

    以灰

    色关联空间为依托的分析体系,以灰色模型

    (GM)

    为核心的模型体系,以系统分析、评估、

    建模、预测、决策、控制、优化为主体的技术体系。

    灰色系统分析除灰色关联分析外,还包括灰色聚类和灰色统计评估等方面

    的内容。

    灰色模型按照五步建模思想构建,

    通过灰色生成或序列算子的作用弱化随机行,

    挖机潜在的

    规律,

    经过差分方程与微分方程之间的互换,

    实现了利用离散的数据序列建立连续的动态微

    分方程。

    灰色预测是基于

    GM

    模型作出的定量预测,有

    (1,1)

    GM

    )

    模型、残差

    (1,1)

    GM

    模型、新陈代

    (1,1)

    GM

    模型、灰色

    Verhulst

    模型、离散灰色模型等几种类型。

    灰色组合模型包括灰色经济计量学模型

    (G

    E)

    、灰色生产函数模型

    (G

    CD)

    、灰色马尔可夫

    模型

    (G

    M)

    、灰色序列组合模型等。

    3

    2

    灰色预测模型

    运用

    (1,1)

    GM

    模型、

    灰色

    Verhulst

    模型、

    离散灰色模型三个模型对深圳人口数量进行预测研

    究。

    3

    2

    1

    (1,1)

    GM

    模型

    定义

    3

    2

    1

    (0)

    (0)

    (0)

    (0)

    (1)

    (1)

    (1)

    (1)

    (

    (1),

    (2),,

    ,

    (

    )),

    (

    (1),

    (2),,

    ,

    (

    ))

    X

    x

    x

    x

    n

    X

    x

    x

    x

    n

    (0)

    (

    )

    (

    )

    (

    )

    k

    X

    k

    ax

    k

    b

    (1,1)

    GM

    模型的原始形式。

    其中

    G

    表示灰色

    (grey)

    M

    表示模型

    (Model)

    第一个

    1

    表示一阶方程,

    第二

    l

    表示

    1

    个变量。

    GM(1

    1)

    模型首先对原始数据进行一阶累加生成,然后利用指数曲线拟合并预测,最

    后通过累减还原得到预测值。一般将原始数据序列记为

    (0)

    X

    ,将一阶累加生成序列记为

    更多相关内容
  • 数据建模中分类与预测模型主要是寻求合适的分类模型并在此基础之上进行未来预测。 01预测方法 02灰色预测及其matlab实现 03灰色预测模型 04时间序列预测模型 05预测方法习题解答 06基于RLS算法的数据预测与...
  • Leslie人口预测模型

    2018-11-04 22:57:57
    从Excel表格中读取数据;从数据中读取各年龄女性人口数、女性人口比例和存活率;总和生育率;计算Leslie人口预测模型中Leslie矩阵;预测每年的女性人口数量;转换成总人口数量;将结果写入Excel文件;画图。
  • 灰色预测模型Matlab代码[比赛已经用过,保真好使]
  • 灰色预测具体代码实现,含原始数据。本资源针对湖南省未来人口预测问题,给出了预测结果。
  • https://blog.csdn.net/zxm_jimin/article/details/94742224
  • 此matlab程序主要用于通过LESLIE模型对人口结构和数量进行预测,并做出相关图形
  • 本程序根据训练好的网络文件ANN.mat预测新的数据文件,得到均方误差,并画出预测数据和原数据的对比图。
  • 人口预测模型

    千次阅读 2021-12-12 22:21:29
    预测人口模型 利用灰色预测模型预测人口 应用 灰色预测模型(Gray Forecast Model)是通过少量的、不完全的信息,建立数学模型并做出预测的一种预测方法。是处理小样本(4个就可以)预测问题的有效工具,而对于小样...

    预测人口模型

    利用灰色预测模型预测人口

    应用

    灰色预测模型(Gray Forecast Model)是通过少量的、不完全的信息,建立数学模型并做出预测的一种预测方法。是处理小样本(4个就可以)预测问题的有效工具,而对于小样本预测问题回归和神经网络的效果都不太理想。

    灰色系统

    我们称信息完全未确定的系统为黑色系统,称信息完全确定的系统为白色系统,灰色系统就是这介于这之间,一部分信息是已知的,另一部分信息是未知的,系统内各因素间有不确定的关系。

    特点

    • 用灰色数学处理不确定量,使之量化。
    • 充分利用已知信息寻求系统的运动规律。
    • 灰色系统理论能处理贫信息系统。

    灰色生成数列

    灰色系统理论认为,尽管客观表象复杂,但总是有整体功能的,因此必然蕴含某种内在规律。关键在于如何选择适当的方式去挖掘和利用它。灰色系统时通过对原始数据的整理来寻求其变化规律的,这是一种就数据寻求数据的现实规律的途径,也就是灰色序列的生产。一切灰色序列都能通过某种生成弱化其随机性,显现其规律性。数据生成的常用方式有累加生成、累减生成和加权累加生成。常用的是累加生成。
    设原始数据为设原始数据为 x ( 0 ) = ( x 0 ( 1 ) , x 0 ( 2 ) , … … , x 0 ( n ) ) x^{(0)}=\left(x^{0}(1), x^{0}(2), \ldots \ldots, x^{0}(n)\right) x(0)=(x0(1),x0(2),,x0(n))

    1.累加生成

    x 1 ( 1 ) = x 0 ( 1 ) x^{1}(1)=x^{0}(1) x1(1)=x0(1)

    x 1 ( 2 ) = x 0 ( 1 ) + x 0 ( 2 ) x^{1}(2)=x^{0}(1)+x^{0}(2) x1(2)=x0(1)+x0(2)

    x 1 ( 3 ) = x 0 ( 1 ) + x 0 ( 2 ) + x 0 ( 3 ) x^{1}(3)=x^{0}(1)+x^{0}(2)+x^{0}(3) x1(3)=x0(1)+x0(2)+x0(3)

    x 1 ( n ) = x 0 ( 1 ) + x 0 ( 2 ) + … … + x 0 ( n ) x^{1}(n)=x^{0}(1)+x^{0}(2)+\ldots \ldots+x^{0}(n) x1(n)=x0(1)+x0(2)++x0(n)

    累加的数据为 x ( 1 ) = ( x 1 ( 1 ) , x 1 ( 2 ) , … … , x 1 ( n ) ) x^{(1)}=\left(x^{1}(1), x^{1}(2), \ldots \ldots, x^{1}(n)\right) x(1)=(x1(1),x1(2),,x1(n))
    例如有一组数据的的折线如下
    在这里插入图片描述
    此时不能看出数据有什么的规律,但经过累加生成后的结果如下
    在这里插入图片描述
    看起来就是一个递增的规律(这是20期某大坝变形位移的数据,顺水流方向的形变一定都是正的)

    2.加权临值生成

    z 0 ( 2 ) = a x 0 ( 2 ) + ( 1 − a ) x 0 ( 1 ) z^{0}(2)=a x^{0}(2)+(1-a) x^{0}(1) z0(2)=ax0(2)+(1a)x0(1)
    z 0 ( 3 ) = a x 0 ( 3 ) + ( 1 − a ) x 0 ( 2 ) z^{0}(3)=a x^{0}(3)+(1-a) x^{0}(2) z0(3)=ax0(3)+(1a)x0(2)
    z 0 ( 4 ) = a x 0 ( 4 ) + ( 1 − a ) x 0 ( 3 ) z^{0}(4)=a x^{0}(4)+(1-a) x^{0}(3) z0(4)=ax0(4)+(1a)x0(3)
    … \ldots
    z 1 ( n ) = a x 0 ( n ) + ( 1 − a ) x 0 ( n − 1 ) z^{1}(n)=a x^{0}(n)+(1-a) x^{0}(n-1) z1(n)=ax0(n)+(1a)x0(n1)

    由此得到的数列称为邻值生成数,权 α \alpha α 也称为生成系数。 特别地,当生成系数 α = \alpha= α= 0.5 0.5 0.5 时,则称该数列为均值生成数,也称为等权邻值生成数。

    灰色模型GM(1,1)

    GM代表grey model(灰色模型),GM(1,1)是一阶微分方程模型。

    1.数据检验

    使用 G M ( 1 , 1 ) \mathrm{GM}(1,1) GM(1,1) 建模需要对数据进行检验,首先计算数列的级比

    λ ( k ) = x 0 ( k − 1 ) x 0 ( k ) \lambda(k)=\frac{x^{0}(k-1)}{x^{0}(k)} λ(k)=x0(k)x0(k1), 其中 k = 2 , 3 , … , n k=2,3, \ldots, n k=2,3,,n

    如果所有的级比都落在可容覆盖区间 X = ( e − 2 n + 1 , e 2 n + 1 ) X=\left(e^{\frac{-2}{n+1}}, e^{\frac{2}{n+1}}\right) X=(en+12,en+12) 内,则数列 x ( 0 ) \left.x^{(} 0\right) x(0) 可以建立

    G M ( 1 , 1 ) \mathrm{GM}(1,1) GM(1,1) 模型进行灰色预测。否则就需要对数据做适当的变换处理,如平移等。

    2.构建灰色模型

    定义 x ( 1 ) x^{(1)} x(1) 的灰导数为

    d ( k ) = x 0 ( k ) = x 1 ( k ) − x 1 ( k − 1 ) d(k)=x^{0}(k)=x^{1}(k)-x^{1}(k-1) d(k)=x0(k)=x1(k)x1(k1)

    z 1 ( k ) z^{1}(k) z1(k) 为数列 x 1 x^{1} x1 的邻值生成数列,即

    z 1 ( k ) = a x 1 ( k ) + ( 1 − a ) x 1 ( k − 1 ) z^{1}(k)=a x^{1}(k)+(1-a) x^{1}(k-1) z1(k)=ax1(k)+(1a)x1(k1)

    于是定义 G M ( 1 , 1 ) G M(1,1) GM(1,1) 的灰微分方程模型为

    d ( k ) + a z 1 ( k ) = b d(k)+a z^{1}(k)=b d(k)+az1(k)=b

    其中, a a a 称为发展系数, z 1 ( k ) z^{1}(k) z1(k) 称为白化背景值, b b b 称为灰作用量。接下来我们得到如 下方程组

    x 0 ( 2 ) + a z 1 ( 2 ) = b x^{0}(2)+a z^{1}(2)=b x0(2)+az1(2)=b

    x 0 ( 3 ) + a z 1 ( 3 ) = b x^{0}(3)+a z^{1}(3)=b x0(3)+az1(3)=b

    x 0 ( n ) + a z 1 ( n ) = b x^{0}(n)+a z^{1}(n)=b x0(n)+az1(n)=b

    按照矩阵的方法列出

    $
    u=\left[\begin{array}{l}
    a \
    b
    \end{array}\right], Y=\left[\begin{array}{c}
    x^{0}(2) \
    x^{0}(3) \
    \ldots \
    x^{0}(n)
    \end{array}\right], B=\left[\begin{array}{cc}
    -z^{1}(2) & 1 \
    -z^{1}(3) & 1 \
    \cdots & \
    -z^{1}(n) & 1
    \end{array}\right]
    $

    G M ( 1 , 1 ) \mathrm{GM}(1,1) GM(1,1) 就可以表示为 Y = B u Y=B u Y=Bu ,接下来就是求 a a a b b b 的值,可以使用线性回归或者 ( B T B ) − 1 B T Y \left(B^{T} B\right)^{-1} B^{T} Y (BTB)1BTY (正规方程) 等按眧最小二乘的原埋来求出 a a a b b b 的值 (这里在列方程时 a a a 可以随便写一个 数,比如 1 2 \frac{1}{2} 21 ,这样 a a a ( 1 − a ) (1-a) (1a) 就一样的可以提出来方便写) 。

    3.预测

    相应的白化模型为

    d x 1 ( t ) d t + a x 1 ( t ) = b \frac{d x^{1}(t)}{d t}+a x^{1}(t)=b dtdx1(t)+ax1(t)=b

    由此得到 x 1 ( t ) x^{1}(t) x1(t) 的解为

    x 1 ( t ) = ( x 0 ( 1 ) − b a ) e − a ( t − 1 ) + b a x^{1}(t)=\left(x^{0}(1)-\frac{b}{a}\right) e^{-a(t-1)}+\frac{b}{a} x1(t)=(x0(1)ab)ea(t1)+ab

    t + 1 = t t+1=t t+1=t

    x 1 ( t + 1 ) = ( x 0 ( 1 ) − b a ) e − a + b a x^{1}(t+1)=\left(x^{0}(1)-\frac{b}{a}\right) e^{-a}+\frac{b}{a} x1(t+1)=(x0(1)ab)ea+ab, 其中 k = 1 , 2 , 3 … , n − 1 k=1,2,3 \ldots, n-1 k=1,2,3,n1

    这就是我们的预测值。

    4.检验

    灰色模型的精度检验一般有三种方法灰色模型的精度检验一般有三种方法,相对误差大小检验法,关联度检验法和后验差检验法。常用的为后验差检验法。

    1. 将预测的 x ^ 1 \hat{x}^{1} x^1 使用累减生成得到

      x ^ 0 \hat{x}^{0} x^0 x ^ 0 ( k ) = x ^ 1 ( k ) − x ^ 1 ( k − 1 ) \hat{x}^{0}(k)=\hat{x}^{1}(k)-\hat{x}^{1}(k-1) x^0(k)=x^1(k)x^1(k1), 其中 k = 2 , 3 , … , n k=2,3, \ldots, n k=2,3,,n

    2. 计算残差
      e ( k ) = x 0 ( k ) − x ^ 0 ( k ) e(k)=x^{0}(k)-\hat{x}^{0}(k) e(k)=x0(k)x^0(k), 其中 k = 1 , 2 , … , n k=1,2, \ldots, n k=1,2,,n

    3. 计算原始序列 x 0 x^{0} x0 的方差 S 1 S_{1} S1 和残差 e e e 的方差 S 2 S_{2} S2
      S 1 = 1 n ∑ k = 1 n ( x 0 ( k ) − x ˉ ) 2 S_{1}=\frac{1}{n} \sum_{k=1}^{n}\left(x^{0}(k)-\bar{x}\right)^{2} S1=n1k=1n(x0(k)xˉ)2 S 2 = 1 n ∑ k = 1 n ( e ( k ) − e ˉ ) 2 S_{2}=\frac{1}{n} \sum_{k=1}^{n}(e(k)-\bar{e})^{2} S2=n1k=1n(e(k)eˉ)2

    4. 计算后验差比
      C = S 2 S 1 C=\frac{S_{2}}{S_{1}} C=S1S2

    5. 查表观察效果

    模型精度等级均方差比值C
    1 级(好)C<=0.35
    2 级(合格)C<=0.5&c>0.35
    3 级(勉强)C<=0.65&c>0.5
    4 级(不合格)C>0.65

    灰色预测模型预测人口

    1.输入数据

    从国家统计局获取十年的人口数据

    人口数据年份
    1276272011
    1284532012
    1292272013
    1299882014
    1307562015
    1314482016
    1321292017
    1328022018
    1334502019
    1340912020

    采用灰色预测模型预估的后十年的人口数据

    人口数据(万人)年份预测数据(万人)误差率
    12762720011276270.000%
    1284532002128575.4160.095%
    1292272003129265.65770.030%
    1299882004129959.60490.022%
    1307562005130657.27740.076%
    1314482006131358.69540.068%
    1321292007132063.87880.049%
    1328022008132772.84790.022%
    1334502009133485.6230.027%
    1340912010134202.22450.083%
    1349162011134922.67310.005%
    1359222012135646.98930.202%
    1367262013136375.19390.257%
    1376462014137107.30770.391%
    1383262015137843.35190.349%
    1392322016138583.34740.466%
    1400112017139327.31550.488%
    1405412018140075.27740.331%
    1410082019140827.25480.128%
    1412122020141583.2690.263%

    误差率均在1%以下,效果很好。

    以2011-2020年数据预测未来十年的人口数据

    年份人口数目(万人)
    2021142440.9
    2022143150.2
    2023143863.1
    2024144579.5
    2025145299.5
    2026146023
    2027146750.2
    2028147481
    2029148215.5
    2030148953.6

    image-20211212205444623

    近似为一条直线,但根据国家统计局预测,我国人口将在10年内迎来拐点。

    故更换预测模型。

    按自然增长率预测

    自然增长率数据

    年份自然增长率
    20116.13
    20127.43
    20135.9
    20146.71
    20154.93
    20166.53
    20175.58
    20183.78
    20193.32
    20201.45

    绘制自然增长率散点图

    image-20211212210015318

    散点图没有呈现适合灰度模型的性质(指数型),且波动较大,尝试运用灰度模型,部分输出为(舍去了预测数据)

    该数据未通过检验
    a=[0.10967811]
    b=[8.69394742]
    
    2级,效果合格
    

    数据未经过检验,故不采用灰度模型预测自然生产率。

    运用SPSS对自然增长率进行曲线估算分析

    运用曲线估算分析,分析哪种模型适合对人口进行预测。

    曲线估算分析结果如下:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kSJ9iqM6-1639318859800)(https://s2.loli.net/2021/12/12/YcnwZG7IEJ1OzVd.png)]

    image-20211212215759064

    其对数、二次、三次、复合、幂、指数函数的拟合显著性都低于0.05,均可采用,且二次函数最可信。

    此处选择二次函数,所得未来5年的自然增长率如下:

    年份自然增长率(‰)
    20210.202
    2022-1.462
    2023-3.318
    2024-5.366
    2025-7.606

    根据自然增长率预估未来5年人口

    年份人口及预测人口(万人)
    2021141240.5
    2022141034
    2023140566.1
    2024139811.8
    2025138748.4

    image-20211212213636736

    人口转折点在2022年。

    灰色预测模型python代码

    # 灰色模型预测
    
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    dir = 'C:\\Users\\shuai\\Desktop\\工程统计学\\讨论课'
    
    data = pd.read_csv(dir+'\\test.csv')
    data = np.array(data['pdata'])
    lens = len(data)  # 数据量
    
    # 数据检验
    ## 计算级比
    lambds = []
    for i in range(1, lens):
        lambds.append(data[i-1]/data[i])
    ## 计算区间
    X_min = np.e**(-2/(lens+1))
    X_max = np.e**(2/(lens+1))
    ## 检验
    is_ok = True
    for lambd in lambds:
        if (lambd < X_min or lambd > X_max):
            is_ok = False
    if (is_ok == False):
        print('该数据未通过检验')
    else:
        print('该数据通过检验')
    
    # 构建灰色模型GM(1,1)
    ## 累加数列
    data_1 = []
    data_1.append(data[0])
    for i in range(1, lens):
        data_1.append(data_1[i-1]+data[i])
    ## 灰导数及临值生成数列
    ds = []
    zs = []
    for i in range(1, lens):
        ds.append(data[i])
        zs.append(-1/2*(data_1[i-1]+data_1[i]))
    ## 求a、b
    B = np.array(zs).reshape(lens-1,1)
    one = np.ones(lens-1)
    B = np.c_[B, one]  # 加上一列1
    Y = np.array(ds).reshape(lens-1,1)
    a, b = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Y)
    print('a='+str(a))
    print('b='+str(b))
    
    # 预测
    def func(k):
        c = b/a
        return (data[0]-c)*(np.e**(-a*k))+c
    data_1_hat = []  # 累加预测值
    data_0_hat = []  # 原始预测值
    data_1_hat.append(func(0))
    data_0_hat.append(data_1_hat[0])
    for i in range(1, lens+10):  # 多预测10次
        data_1_hat.append(func(i))
        data_0_hat.append(data_1_hat[i]-data_1_hat[i-1])
    print('预测值为:')
    for i in data_0_hat:
        print(i)
    
    # 模型检验
    ## 预测结果方差
    data_h = np.array(data_0_hat[0:10]).T
    sum_h = data_h.sum()
    mean_h = sum_h/lens
    S1 = np.sum((data_h-mean_h)**2)/lens
    ## 残差方差
    e = data - data_h
    sum_e = e.sum()
    mean_e = sum_e/lens
    S2 = np.sum((e-mean_e)**2)/lens
    ## 后验差比
    C = S2/S1
    ## 结果
    if (C <= 0.35):
        print('1级,效果好')
    elif (C <= 0.5 and C >= 0.35):
        print('2级,效果合格')
    elif (C <= 0.65 and C >= 0.5):
        print('3级,效果勉强')
    else:
        print('4级,效果不合格')
    
    # 画图
    plt.figure(figsize=(9, 4), dpi=100)
    x1 = np.linspace(1, 10, 10)
    x2 = np.linspace(1, 20, 20)
    plt.subplot(121)
    plt.title('x^0')
    plt.plot(x2, data_0_hat, 'r--', marker='*')
    plt.scatter(x1, data, marker='^')
    plt.subplot(122)
    plt.title('x^1')
    plt.plot(x2, data_1_hat, 'r--', marker='*')
    plt.scatter(x1, data_1, marker='^')
    plt.show()
    

    输出结果如下

    该数据通过检验
    a=[-0.00535402]
    b=[127548.20761512]
    预测值为:
    [127627.]
    [128575.41598519]
    [129265.6576876]
    [129959.60486981]
    [130657.27742425]
    [131358.69535014]
    [132063.87875406]
    [132772.84785051]
    [133485.62296254]
    [134202.22452229]
    [134922.67307159]
    [135646.98926251]
    [136375.19385806]
    [137107.30773265]
    [137843.35187279]
    [138583.34737763]
    [139327.31545959]
    [140075.277445]
    [140827.25477463]
    [141583.26900437]
    1级,效果好
    

    展开全文
  • 灰色预测模型_python

    千次阅读 多人点赞 2022-03-18 18:12:24
    灰色预测模型是通过少量的、不完全的信息,建立数学模型并做出预测的一种预测方法。是处理小样本(4个就可以)预测问题的有效工具,而对于小样本预测问题回归和神经网络的效果都不太理想。 最简单的模型是GM(1,1),G...

    灰色系统理论及其应用系列博文:
    一、灰色关联度分析法(GRA)_python
    二、灰色预测模型GM(1,1)
    三、灰色预测模型GM(1,n)
    四、灰色预测算法改进1—背景值Z
    五、灰色预测改进2—三角残差拟合
    在这里插入图片描述


    光滑序列: 准光滑序列

    一、灰色预测法

    灰色预测模型是通过少量的、不完全的信息,建立数学模型并做出预测的一种预测方法。灰色系统理论建模采用的是先对原始数据列做生成处理再成立微分方程模型。是处理小样本(4个就可以)预测问题的有效工具,而对于小样本预测问题回归和神经网络的效果都不太理想。

    最简单的模型是GM(1,1),G:Grey(灰色);M:模型;(1,1):只含有单变量的一阶微分方程模型。

    灰色预测适用条件:用于时间短、数据资料少、数据不需要典型的分布规律、计算量较低、对短期预测有较高精度。不适合随机波动较大的数据。

    1.1 算法

    image-20220318105920012

    (1)建立原始非负数据序列 X ( 0 ) X^{(0)} X(0)

    在这里插入图片描述

    (2)对原始数据集合 X ( 0 ) X^{(0)} X(0)​进行分布特征检验以后,采用一次累加进行累加数据生成(累加能使灰色过程变白 ),获取新的数据序列如式

    在这里插入图片描述

    (3)判断数据是否适合采用GM(1,1)

    方法一:准光滑序列检验(论文的方法)
    判断数据是否为准光滑序列,采用光滑比分析原始数据光滑性,光滑比:数据变化越平稳, ρ k \rho_k ρk越小
    在这里插入图片描述
    若数据序列满足以下两个条件即可判定为准光滑序列,可用于 GM(1,1)预测模型。
    在这里插入图片描述
    方法二:级比检验(网上大多数的检验方法)
    输入原始电力负荷特性数据序列 X ( 0 ) X^{(0)} X(0)判断是否适用GM(1,1)。 定义覆盖区间 Θ = ( e − 2 k + 1 , e 2 k + 2 ) \Theta = (e^{\frac{-2}{k+1}},e^{\frac{2}{k+2}}) Θ=(ek+12,ek+22)

    定义 λ ( n ) = x ( n − 1 ) x ( n ) , n = 2 , 3 , . . . , k \lambda(n)=\frac{x(n-1)}{x(n)},n=2,3,...,k λ(n)=x(n)x(n1),n=2,3,...,k,若满足对任意n,有 λ ( n ) ∈ Θ , k = 2 , 3 , 4 , . . . , k \lambda(n)\in\Theta,k=2,3,4,...,k λ(n)Θ,k=2,3,4,...,k,则我们称 X ( 0 ) X^{(0)} X(0)是 可以作为GM(1,1)的数据而被灰度预测的。

    (4)建立 X ( 1 ) X^{(1)} X(1)的灰微分方程

    在这里插入图片描述

    (5)用最小二乘求解模型的发展灰数a内生控制参量u,令 α = [ a , u ] T \alpha=[a,u]^{T} α=[a,u]T,用最小二乘法可得

    α = ( A T A ) − 1 A T B \alpha=(A^TA)^{-1}A^TB α=(ATA)1ATB
    其中,累加矩阵 A 和常数向量 B如下
    在这里插入图片描述


    (6)将新的数据序列 X ( 1 ) X^{(1)} X(1)​ 表示为一阶微分方程的形式,并求解微分方程

    在这里插入图片描述
    求解微分方程
    在这里插入图片描述
    生成预测序列 X ( 1 ) X^{(1)} X(1)的响应式
    image-20220322112007989
    进行累减还原得到原始数据序列 X ( 0 ) X^{(0)} X(0)的预测值的算术表达式:
    image-20220322112111200

    (7)测模型的精确度取决于均方差比 c 与小误差概率 p 的大小。后验差比 c 表明预测值与实际值误差的大小,其值越小则误差越小。小误差概率 p 是指即残差与残差均值的差值的绝对值小于 0. 674 5 倍原始数据均方差的概率,其值大,则表示精度高。计算方式如下:

    在这里插入图片描述在这里插入图片描述
    最终级别:max(C级别,P级别)

    1.2 使用注意

    微分方程模型作为灰色系统理论预测用的模型,其主要凭借以下几点
    (1)灰色系统理论把原始数列在固定范围变化的灰色量,认定随过程是在一定时区、一定范围内变化的灰色过程。
    (2)一阶微分方程有着指数增长形式的解值,无规律的原始数列经过累加生成得到累加数列后,此数列也具备指数增加的规律。灰色模型是生成的数据数列所建模型。
    (3)灰色系统理论可建立GM(1,n)模型来解决高阶系统建模问题。一阶微分方程所组成的灰色模型称为GM模型群。
    (4)GM模型采用累加生成做生成处置,为了获得预测的数据,由GM模型所得的数据对其进行逆生成处理,即累减生成还原处理
    (5)在灰色系统理论中,为了提高预测精度,可以对数据进行合适的取舍、对灰数采用不同的生成方式和调节残差的级别来实现。

    1.3 案例及代码

    以江苏省无锡市锡北镇电力负荷预测为例,给出灰度预测的结果

    年份19951996199719981999200020012002200320042005200620072008200920102011201220132014
    最大负荷(kw)21.222.724.3626.2228.1830.1632.3434.7237.340.3444.0847.9251.9656.0260.1464.5868.9273.3678.9886.6
    • 原始数据
    # -*- coding: utf-8 -*- 
    # @Time : 2022/3/18 14:18 
    # @Author : Orange
    # @File : g_pred.py.py
    
    from decimal import *
    
    
    class GM11():
        def __init__(self):
            self.f = None
    
        def isUsable(self, X0):
            '''判断是否通过光滑检验'''
            X1 = X0.cumsum()
            rho = [X0[i] / X1[i - 1] for i in range(1, len(X0))]
            rho_ratio = [rho[i + 1] / rho[i] for i in range(len(rho) - 1)]
            print("rho:", rho)
            print("rho_ratio:", rho_ratio)
            flag = True
            for i in range(2, len(rho) - 1):
                if rho[i] > 0.5 or rho[i + 1] / rho[i] >= 1:
                    flag = False
            if rho[-1] > 0.5:
                flag = False
            if flag:
                print("数据通过光滑校验")
            else:
                print("该数据未通过光滑校验")
    
            '''判断是否通过级比检验'''
            lambds = [X0[i - 1] / X0[i] for i in range(1, len(X0))]
            X_min = np.e ** (-2 / (len(X0) + 1))
            X_max = np.e ** (2 / (len(X0) + 1))
            for lambd in lambds:
                if lambd < X_min or lambd > X_max:
                    print('该数据未通过级比检验')
                    return
            print('该数据通过级比检验')
    
        def train(self, X0):
            X1 = X0.cumsum()
            Z = (np.array([-0.5 * (X1[k - 1] + X1[k]) for k in range(1, len(X1))])).reshape(len(X1) - 1, 1)
            # 数据矩阵A、B
            A = (X0[1:]).reshape(len(Z), 1)
            B = np.hstack((Z, np.ones(len(Z)).reshape(len(Z), 1)))
            # 求灰参数
            a, u = np.linalg.inv(np.matmul(B.T, B)).dot(B.T).dot(A)
            u = Decimal(u[0])
            a = Decimal(a[0])
            print("灰参数a:", a, ",灰参数u:", u)
            self.f = lambda k: (Decimal(X0[0]) - u / a) * np.exp(-a * k) + u / a
    
        def predict(self, k):
            X1_hat = [float(self.f(k)) for k in range(k)]
            X0_hat = np.diff(X1_hat)
            X0_hat = np.hstack((X1_hat[0], X0_hat))
            return X0_hat
    
        def evaluate(self, X0_hat, X0):
            '''
            根据后验差比及小误差概率判断预测结果
            :param X0_hat: 预测结果
            :return:
            '''
            S1 = np.std(X0, ddof=1)  # 原始数据样本标准差
            S2 = np.std(X0 - X0_hat, ddof=1)  # 残差数据样本标准差
            C = S2 / S1  # 后验差比
            Pe = np.mean(X0 - X0_hat)
            temp = np.abs((X0 - X0_hat - Pe)) < 0.6745 * S1
            p = np.count_nonzero(temp) / len(X0)  # 计算小误差概率
            print("原数据样本标准差:", S1)
            print("残差样本标准差:", S2)
            print("后验差比:", C)
            print("小误差概率p:", p)
    
    
    if __name__ == '__main__':
        import matplotlib.pyplot as plt
        import numpy as np
    
        plt.rcParams['font.sans-serif'] = ['SimHei']  # 步骤一(替换sans-serif字体)
        plt.rcParams['axes.unicode_minus'] = False  # 步骤二(解决坐标轴负数的负号显示问题)
    
        # 原始数据X
        X = np.array(
            [21.2, 22.7, 24.36, 26.22, 28.18, 30.16, 32.34, 34.72, 37.3, 40.34, 44.08, 47.92, 51.96, 56.02, 60.14,
             64.58,
             68.92, 73.36, 78.98, 86.6])
        # 训练集
        X_train = X[:int(len(X) * 0.7)]
        # 测试集
        X_test = X[int(len(X) * 0.7):]
    
        model = GM11()
        model.isUsable(X_train)  # 判断模型可行性
        model.train(X_train)  # 训练
        Y_pred = model.predict(len(X))  # 预测
        Y_train_pred = Y_pred[:len(X_train)]
        Y_test_pred = Y_pred[len(X_train):]
        score_test = model.evaluate(Y_test_pred, X_test)  # 评估
    
        # 可视化
        plt.grid()
        plt.plot(np.arange(len(X_train)), X_train, '->')
        plt.plot(np.arange(len(X_train)), Y_train_pred, '-o')
        plt.legend(['负荷实际值', '灰色预测模型预测值'])
        plt.title('训练集')
        plt.show()
    
        plt.grid()
        plt.plot(np.arange(len(X_test)), X_test, '->')
        plt.plot(np.arange(len(X_test)), Y_test_pred, '-o')
        plt.legend(['负荷实际值', '灰色预测模型预测值'])
        plt.title('测试集')
        plt.show()
    
    

    数据通过光滑校验
    该数据通过级比检验
    灰参数a: -0.0764631383879229853395287364037358202040195465087890625 ,灰参数u: 19.73534371303100698469279450364410877227783203125
    原数据样本标准差: 9.683763042674403
    残差样本标准差: 1.0311971065218763
    后验差比: 0.10648723042660145
    小误差概率p: 1.0

    可视化
    在这里插入图片描述

    二、复现论文《基于灰色系统理论的贵阳市城市用水总量预测》

    2.1 数据:

    在这里插入图片描述

    data.csv
    年份,城区人口,建成区面积,供水总量,用水人口,人口综合用水指标,城市用水总量
    2002, 191.85, 98.00, 26396.00, 150.10, 175.86, 33737.99
    2003, 195.96, 98.00, 25551.00, 150.10, 170.23, 33357.59
    2004, 203.37, 98.00, 32661.00, 200.00, 163.31, 33211.34
    2005, 206.31, 129.00, 24186.00, 203.00, 119.14, 24580.36
    2006, 257.45, 132.00, 27194.00, 208.33, 130.53, 33605.80
    2007, 217.27, 132.00, 24134.80, 178.88, 134.92, 29314.45
    2008, 217.27, 132.00, 24427.20, 203.00, 120.33, 26144.32
    2009, 217.27, 175.00, 23932.92, 207.30, 115.45, 25083.96
    2010, 217.39, 162.00, 24397.00, 209.18, 116.63, 25354.55
    2011, 251.00, 162.00, 25238.82, 224.26, 112.54, 28248.21
    2012, 254.30, 211.34, 25886.62, 240.29, 107.73, 27395.93
    2013, 265.36, 299.00, 28383.85, 250.58, 113.27, 30058.02
    2014, 265.36, 299.00, 29873.56, 252.25, 118.43, 31426.16
    2015, 266.01, 299.00, 30872.28, 255.92, 120.63, 32089.46
    2016, 267.00, 299.00, 34038.31, 263.88, 128.99, 34440.76
    2017, 285.00, 359.00, 34992.73, 281.80, 124.18, 35390.09
    2018, 292.24, 369.00, 38352.66, 289.05, 132.69, 38775.93
    2019, 296.72, 369.00, 40612.11, 295.83, 137.28, 40734.29

    2.2 使用灰色预测预测供水总量及城市用水总量

    采用1.3的代码复现结果与论文的完全一致,因此下面就直接放了论文的结果。
    以 2002—2019 年各年间估算的城市用水总量( 计算需水量) 与供水总量( 实际供水量) 为原始数据序
    列,运用 GM(1,1) 模型分别得到原始数据序列的响应式。

    以贵阳市 2002—2019 年各年间供水总量 ( 实际供水量) 计算灰色预测模型,得到各关键参数如下:
    结果

    结果分析

    供水总量( 实际供水量) 组成的原始数据所计算的 c 值和 p 值均符合灰色预测的范围,精度检验结果信度可靠; 另一方面,模型预测的相对误差 0. 087 8 < 0. 10,预测精度为91. 22% ,GM(1,1) 预测模型可运用于预测贵阳市城市用水总量。

    另一方面,由于城市用水总量原始数据的波动较大,因此 GM( 1,1) 预测后的数据方差也较大,从而导致模型的后验差检验的 c值较大,p 值较小。GM(1,1)预测不满足要求。

    比较可以发现以供水总量( 实际供水量) 组成的原始数据序列 X( 0)的响应式模型精度较高,原因在于实际供水量更符合一定时期内供需平衡的客观规律,而计算需水量受人口综合用水指标的影响较大,人口综合用水指标与一定时期内的经济发展水平、人口流动等因素有关。

    在这里插入图片描述

    GM(1,n)

    GM(1,n)和GM(0,n)

    展开全文
  • python简单预测模型

    千次阅读 2021-02-04 08:49:02
    python简单预测模型步骤1:导入所需的库,读取测试和训练数据集。#导入pandas、numpy包,导入LabelEncoder、random、RandomForestClassifier、GradientBoostingClassifier函数import pandas as pdimport numpy as np...

    python简单预测模型

    步骤1:导入所需的库,读取测试和训练数据集。

    #导入pandas、numpy包,导入LabelEncoder、random、RandomForestClassifier、GradientBoostingClassifier函数

    import pandas as pd

    import numpy as np

    from sklearn.preprocessing import LabelEncoder

    import random

    from sklearn.ensemble import RandomForestClassifier

    from sklearn.ensemble import GradientBoostingClassifier

    #读取训练、测试数据集

    train=pd.read_csv('C:/Users/AnalyticsVidhya/Desktop/challenge/Train.csv')

    test=pd.read_csv('C:/Users/AnalyticsVidhya/Desktop/challenge/Test.csv')

    #创建训练、测试数据集标志

    train='Train'

    test='Test'

    fullData =pd.concat(,axis=0) #联合训练、测试数据集

    步骤2:该框架的第二步并不需要用到python,继续下一步。

    步骤3:查看数据集的列名或概要

    fullData.columns # 显示所有的列名称

    fullData.head(10) #显示数据框的前10条记录

    fullData.describe() #你可以使用describe()函数查看数值域的概要

    步骤4:确定a)ID变量 b)目标变量 c)分类变量 d)数值变量 e)其他变量。

    ID_col =

    target_col =

    cat_cols =

    num_cols= list(set(list(fullData.columns))-set(cat_cols)-set(ID_col)-set(target_col)-set(data_col))

    other_col= #为训练、测试数据集设置标识符

    步骤5:识别缺失值变量并创建标志

    fullData.isnull().any()#返回True或False,True意味着有缺失值而False相反

    num_cat_cols = num_cols+cat_cols # 组合数值变量和分类变量

    #为有缺失值的变量创建一个新的变量

    # 对缺失值标志为1,否则为0

    for var in num_cat_cols:

    if fullData.isnull().any()=True:

    fullData=fullData.isnull()*1

    步骤6:填补缺失值

    #用均值填补数值缺失值

    fullData = fullData.fillna(fullData.mean(),inplace=True)

    #用-9999填补分类变量缺失值

    fullData = fullData.fillna(value = -9999)

    步骤7:创建分类变量的标签编码器,将数据集分割成训练和测试集,进一步,将训练数据集分割成训练集和测试集。

    #创建分类特征的标签编码器

    for var in cat_cols:

    number = LabelEncoder()

    fullData = number.fit_transform(fullData.astype('str'))

    #目标变量也是分类变量,所以也用标签编码器转换

    fullData = number.fit_transform(fullData.astype('str'))

    train=fullData='Train']

    test=fullData='Test']

    train = np.random.uniform(0, 1, len(train)) <= .75

    Train, Validate = train=True], train=False]

    步骤8:将填补和虚假(缺失值标志)变量传递到模型中,我使用随机森林来预测类。

    features=list(set(list(fullData.columns))-set(ID_col)-set(target_col)-set(other_col))

    x_train = Train.values

    y_train = Train.values

    x_validate = Validate.values

    y_validate = Validate.values

    x_test=test.values

    random.seed(100)

    rf = RandomForestClassifier(n_estimators=1000)

    rf.fit(x_train, y_train)

    步骤9:检查性能做出预测

    status = rf.predict_proba(x_validate)

    fpr, tpr, _ = roc_curve(y_validate, status)

    roc_auc = auc(fpr, tpr)

    print roc_auc

    final_status = rf.predict_proba(x_test)

    test=final_status

    test.to_csv('C:/Users/Analytics Vidhya/Desktop/model_output.csv',columns=)

    《来源于科技文献,经本人整理归纳,仅供学习和分享,如有侵权请联系删除》

    展开全文
  • 双色球概率预测模型 前言 最近新晋彩民佩瑞对于双色球产生了极为浓厚的兴趣,在买过几注随机号码中奖无果后,决心潜心修炼,钻研一个比较靠谱的预测方法!所以有了这篇文章,文章思路及结果仅供娱乐,请勿当真! ...
  • 基于LSTM的股票预测模型_python实现_超详细

    万次阅读 多人点赞 2019-07-05 22:25:13
    文章目录一、背景二、主要技术介绍1、RNN模型2、LSTM模型3、控制门工作原理四、代码实现五、案例分析...因此本文想利用现有的模型与算法,对股票价格进行预测,从而使自然人股民可以自己对股票进行预测。 理论上,...
  • 灰色预测模型

    千次阅读 2022-03-09 08:57:02
    而灰色预测就是对含有已知和未知信息的系统进行预测,寻找数据变动规律,生成有较强规矩性的序列,再建立相应的微分方程模型,来对事物发展进行预测。 二、灰色预测的原理(简要) 1.GM(1,1)模型 ...
  • 文章基于TCGA数据库和GEO数据库中的胃癌相关数据,利用单因素Cox回归分析及LASSO算法分析确定了与胃癌预后紧密相关的4个自噬基因,构建了一个预测胃癌预后的多基因联合预测模型。题目:Identification and ...
  • 数学建模——灰色预测模型及matlab代码实现

    万次阅读 多人点赞 2019-09-02 20:52:58
    灰色预测的主要特点是模型使用的不是原始数据序列,而是生成的数据序列。其核心体系是灰色模型(Grey Model,简称GM),即对原始数据作...GM(1,1)预测模型1阶微分方程,只含1个变量 GM(1,1)模型预测步骤 1.数据的检...
  • 预测模型——灰色模型

    千次阅读 多人点赞 2020-07-16 18:21:33
    网上有许多大佬写的灰色预测模型,写的非常的棒,但是我个人感觉,在公式部分,许多大佬在写最小二乘法得出a,b的值的时候并不是那么细致,所以我写这一篇灰色模型既是详细介绍公式的由来,同时也是为后续我要写的...
  • 灰色预测模型详解

    千次阅读 2021-10-09 15:53:43
    一、什么是灰色预测模型? 如果一个系统具有层次、结构关系的模糊性,动态变化的随机性,指标数据的不完备或不确定性,则称这些特性为灰色性。具有灰色性的系统称为灰色系统。对灰色系统建立的预测模型称为灰色...
  • 时间序列预测模型

    千次阅读 2021-12-28 20:40:11
    自回归滑动平均模型(ARMA 模型,Auto-Regressive and Moving Average Model)是研究时间序列的重要方法,由自回归模型(简称AR模型)与滑动平均模型(简称MA模型)为基础“混合”构成。在市场研究中常用于长期追踪...
  • 常见的预测模型及算法

    万次阅读 多人点赞 2020-05-01 13:22:18
    如果得到一份数据集,任务是要预测出一系列的值,而在预测任务中,我们大多数都采用的是拟合的方法,这篇文字主要介绍三种预测方法时间序列分析,灰色预测模型,神经网络。 时间序列分析 时间序列也叫动态序列,数据...
  • 【数学建模】灰色预测模型(预测)

    万次阅读 多人点赞 2020-08-02 16:43:07
    灰色预测模型2.灰色系统理论3. 针对类型4. 灰色系统5. 灰色生成6. 累加生成7. GM(1,1)模型推导精度检验精度检验等级参照表二、适用问题三、算法总结1. 步骤四、应用场景举例1. 累加生成2. 建立GM(1,1)模型3. ...
  • matlab评价模型和预测模型

    千次阅读 2020-10-10 22:12:59
    这篇笔记写下来,感觉似乎在我所学范围内对着两种模型简单模式的使用好像并不广泛,也不见什么复杂的例子。复杂的模式也没有去讲……看看之后还有没有相关的内容吧,之后再补。 评价模型 加权平均 适用于每一项权重...
  • LSTM 04:Keras实现4种序列预测模型

    千次阅读 多人点赞 2020-03-19 11:13:39
    本文介绍了4种序列预测问题以及在Keras中的实现。
  • 1、预测模型 2、优化模型 3、评价模型 数学建模的十大常用算法 预测模型:神经网络预测、灰色预测、拟合插值预测(线性回归)、时间序列预测、马尔科夫链预测、微分方程预测、Logistic 模型等等。 应用领域:人口...
  • 有时我们需要根据当前已经存在的部分数据,合理的进行下个阶段的数据预测,一般情况下我们会使用线性回归的方法拟合出一个预测模型。 可什么是线性回归呢。。。我们来看一下线性回归的概念。对观测数据集的X的值拟合...
  • 基于LSTM与Transfomer的股票预测模型

    千次阅读 2021-07-21 13:48:55
    基于LSTM与Transfomer的股票预测模型 1 项目介绍 股票行情是引导交易市场变化的一大重要因素,若能够掌握股票行情的走势,则对于个人和企业的投资都有巨大的帮助。然而,股票走势会受到多方因素的影响,因此难以从...
  • 数学建模中国人口结构预测模型递推公式Matlab源程序

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 533,048
精华内容 213,219
关键字:

预测模型

友情链接: SOC.rar