精华内容
下载资源
问答
  • 2021-12-12 14:36:10

    案例背景

    • 在我国现行的分税制财政管理体制下,地方财政收人不仅是国家财政收入的重要组成部分,而且具有其相对独立的构成内容。如何有效的利用地方财政收入,合理的分配,来促进地方的发展,提高市民的收入和生活质量是每个地方政府需要考虑的首要问题。因此,对地方财政收人进行预测,不仅是必要的,而且也是可能的。科学、合理地预测地方财政收人,对于克服年度地方预算收支规模确定的随意性和盲目性,正确处理地方财政与经济的相互关系具有十分重要的意义。
    • 某市作为改革开放的前沿城市,其经济发展在全国经济中的地位举足轻重。目前,该市在财政收入规模、结构等方面与北京、上海、深圳等城市仍有一定差距,存在不断完善的空间。本案例旨在通过研究,发现影响该市目前以及未来地方财源建设的因素,并对其进行深入分析,提出对该市地方财源优化的具体建议,供政府决策参考,同时为其他经济发展较快的城市提供借鉴。

    原始数据情况

    考虑到数据的可得性,本案例所用的财政收入分为地方一般预算收入和政府性基金收入。地方一般预算收入包括:(1)税收收入,主要包括企业所得税和地方所得税中中央和地方共享的40%,地方享有的 25%的增值税、营业税、印花税等;(2)非税收入,包括专项收入、行政事业性收费、罚没收入、国有资本经营收入和其他收入等。政府性基金收入是国家通过向社会征收以及出让土地、发行彩票等方式取得收入,并专项用于支持特定基础设施建设和社会事业发展的收入。

    由于1994年我国对财政体制进行了重大改革,开始实行分税制财政体制,影响了财政收入相关数据的连续性,在1994年前后不具有可比性。由于没有合适的数学手段来调整这种数据的跃变,仅对1994年及其以后的数据进行分析,本案例所用数据均来自《某市统计年鉴》(1995-2014)。

    某市1994-2013年财政收入以及相关因素的数据
    在这里插入图片描述

    挖掘目标

    1. 梳理影响地方财政收入的关键特征,分析、识别影响地方财政收入的关键特征的选择模型;
    2. 结合目标1的因素分析,对某市2015年的财政总收入及各个类别收入进行预测。

    初步分析

    • 在以往的文献中,对影响财政收入的因素的分析中大多使用普通最小二乘法来对回归模型的系数进行估计,预测变量的选取则采用的是逐步回归。然而,无论是最小二乘法还是逐步回归,都有其不足之处。它们一般都局限于局部最优解而不是全局最优解。
    • Lasso是近年来被广泛应用于参数估计和变量选择的方法之一,并且Lasso进行变量选择在确定的条件下已经被证明是一致的。案例选用了Adaptive-Lasso方法来探究地方财政收入与各因素之间的关系。

    总体流程

     1)	从某市统计局网站以及各统计年鉴搜集到该市财政收入以及各类别收入相关数据;
     
     2)	利用1)形成的已完成数据预处理的建模数据,建立Adaptive-Lasso变量选择模型;
     
     3)	在2)的基础上建立单变量的灰色预测模型以及人工神经网络预测模型;
     
     4)	利用3)的预测值代入构建好的人工神经网络模型中,从而得到2014/2015年某市财政收入以及各类别收入的预测值。
    

    数据探索分析

    影响财政收入(y)的因素有很多,通过经济理论对财政收入的解释以及对实践的观察,考虑一些与能源消耗关系密切并且直观上有线性关系的因素,选取以下因素为自变量,分析它们之间的关系。

    • 社会从业人数(x1):就业人数的上升伴随着居民消费水平的提高,从而间接影响财政收入的增加。
    • 在岗职工工资总额(x2):反映的是社会分配情况,主要影响财政收入中的个人所得税、房产税以及潜在消费能力。
    • 社会消费品零售总额(x3):代表社会整体消费情况,是可支配收入在经济生活中的实现。当社会消费品零售总额增长时,表明社会消费意愿强烈,部分程度上会导致财政收入中增值税的增长;同时当消费增长时,也会引起经济系统中其他方面发生变动,最终导致财政收入的增长。
    • 城镇居民人均可支配收入(x4):居民收入越高消费能力越强,同时意味着其工作积极性越高,创造出的财富越多,从而能带来财政收入的更快和持续增长。
    • 城镇居民人均消费性支出(x5):居民在消费商品的过程中会产生各种税费,税费又是调节生产规模的手段之一。在商品经济发达的如今,居民消费的越多,对财政收入的贡献就越大。
    • 年末总人口(x6):在地方经济发展水平既定的条件下,人均地方财政收入与地方人口数呈反比例变化。
    • 全社会固定资产投资额(x7):是建造和购置固定资产的经济活动,即固定资产再生产活动。主要通过投资来促进经济增长,扩大税源,进而拉动财政税收收入整体增长。
    • 地区生产总值(x8):表示地方经济发展水平。一般来讲,政府财政收入来源于即期的地区生产总值。在国家经济政策不变、社会秩序稳定的情况下,地方经济发展水平与地方财政收入之间存在着密切的相关性,越是经济发达的地区,其财政收入的规模就越大。
    • 第一产业产值(x9):取消农业税、实施三农政策,第一产业对财政收入的影响更小。
    • 税收(x10):由于其具有征收的强制性、无偿性和固定性特点,可以为政府履行其职能提供充足的资金来源。因此,各国都将其作为政府财政收入的最重要的收入形式和来源。
    • 居民消费价格指数(x11):反映居民家庭购买的消费品及服务价格水平的变动情况,影响城乡居民的生活支出和国家的财政收入。
    • 第三产业与第二产业产值比(x12):表示产业结构。三次产业生产总值代表国民经济水平,是财政收入的主要影响因素,当产业结构逐步优化时,财政收入也会随之增加。
    • 居民消费水平(x13):在很大程度上受整体经济状况GDP的影响,从而间接影响地方财政收入。

    描述分析

    #-*- coding: utf-8 -*-
    import numpy as np
    import pandas as pd
    inputfile = '../data/data1.csv' #输入的数据文件
    data = pd.read_csv(inputfile) #读取数据
    r = [data.min(), data.max(), data.mean(), data.std()] #依次计算最小值、最大值、均值、标准差
    r = pd.DataFrame(r, index = ['Min', 'Max', 'Mean', 'STD']).T  #计算相关系数矩阵
    np.round(r, 2) #保留两位小数
    

    对已有数据进行描述性统计分析,获得对数据的整体性认识。

    可见财政收入(y)的均值和标准差分别为618.08和609.25,这说明:第一,某市各年份财政收入存在较大差异。第二,2008年后,某市各年份财政收入大幅上升。

    相关分析

    相关系数可以用来描述定量变量之间的关系,初步判断因变量与解释变量之间是否具有线性相关性。

    #-*- coding: utf-8 -*-
    import numpy as np
    import pandas as pd
    inputfile = '../data/data1.csv' #输入的数据文件
    data = pd.read_csv(inputfile) #读取数据
    np.round(data.corr(method = 'pearson'), 2) #计算相关系数矩阵,保留两位小数
    

    在这里插入图片描述
    由相关矩阵可以看出居民消费价格指数(x11) 与财政收入的线性关系不显著,而且呈现负相关。其余变量均与财政收入呈现高度的正相关关系。

    变量选择

    运用LARS 算法来解决Adaptive-Lasso 估计,该算法会寻找一个最优解。用Python编制相应的程序后运行得到如下结果。

    #-*- coding: utf-8 -*-
    import pandas as pd
    inputfile = '../data/data1.csv' #输入的数据文件
    data = pd.read_csv(inputfile) #读取数据
    
    #导入AdaptiveLasso算法,要在较新的Scikit-Learn才有。
    from sklearn.linear_model import AdaptiveLasso
    model = AdaptiveLasso(gamma=1)
    model.fit(data.iloc[:,0:13],data['y'])
    model.coef_ #各个特征的系数
    

    在这里插入图片描述
    可看出,年末总人口、地区生产总值、第一产业产值、税收、居民消费价格指数、第三产业与第二产业产值比以及居民消费水平等因素的系数为0,即在模型建立的过程中这几个变量被剔除了。这是因为居民消费水平与城镇居民人均消费性支出存在明显的共线性,Adaptive-Lasso方法在构建模型的过程中剔除了这个变量;由于某市存在流动人口与外来打工人口多的特性,年末总人口并不显著影响某市财政收入;居民消费价格指数与财政收入的相关性太小以致可以忽略;由于农牧业各税在各项税收总额中所占比重过小,而且该市于2005年取消了农业税,因而第一产业对地方财政收入的贡献率极低;其他变量被剔除均有类似于上述的原因。

    利用Adaptive-Lasso 方法识别影响财政收入的关键影响因素是社会从业人数、在岗职工工资总额、社会消费品零售总额、城镇居民人均可支配收入、城镇居民人均消费性支出以及全社会固定资产投资额。

    财政收入及各类别收入预测模型:

    某市财政收入预测模型

    对Adaptive-Lasso 变量选择方法识别的影响财政收入的因素建立灰色预测与神经网络的组合预测模型, Python及流行的扩展库并没有提供灰色预测功能,因此自行编写灰色预测函数(GM11.py)。预测结果的精度等级见下表。

    #-*- coding: utf-8 -*-
    
    def GM11(x0): #自定义灰色预测函数
      import numpy as np
      x1 = x0.cumsum() #1-AGO序列
      z1 = (x1[:len(x1)-1] + x1[1:])/2.0 #紧邻均值(MEAN)生成序列
      z1 = z1.reshape((len(z1),1))
      B = np.append(-z1, np.ones_like(z1), axis = 1)
      Yn = x0[1:].reshape((len(x0)-1, 1))
      [[a],[b]] = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Yn) #计算参数
      f = lambda k: (x0[0]-b/a)*np.exp(-a*(k-1))-(x0[0]-b/a)*np.exp(-a*(k-2)) #还原值
      delta = np.abs(x0 - np.array([f(i) for i in range(1,len(x0)+1)]))
      C = delta.std()/x0.std()
      P = 1.0*(np.abs(delta - delta.mean()) < 0.6745*x0.std()).sum()/len(x0)
      return f, a, b, x0[0], C, P #返回灰色预测函数、a、b、首项、方差比、小残差概率
    
    #-*- coding: utf-8 -*-
    import numpy as np
    import pandas as pd
    from GM11 import GM11 #引入自己编写的灰色预测函数
    
    inputfile = '../data/data1.csv' #输入的数据文件
    outputfile = '../tmp/data1_GM11.xls' #灰色预测后保存的路径
    data = pd.read_csv(inputfile) #读取数据
    data.index = range(1994, 2014)
    
    data.loc[2014] = None
    data.loc[2015] = None
    l = ['x1', 'x2', 'x3', 'x4', 'x5', 'x7']
    for i in l:
      f = GM11(data[i][range(1994, 2014)].as_matrix())[0]
      data[i][2014] = f(len(data)-1) #2014年预测结果
      data[i][2015] = f(len(data)) #2015年预测结果
      data[i] = data[i].round(2) #保留两位小数
    
    data[l+['y']].to_excel(outputfile) #结果输出
    

    在这里插入图片描述
    将数据零均值标准化后,代入地方财政收入所建立的三层神经网络预测模型(输入层6节点,隐藏层12节点,输出层1节点),得到某市财政收入2015年的预测值为2366.42亿元。

    在这里插入图片描述

    #-*- coding: utf-8 -*-
    import pandas as pd
    inputfile = '../tmp/data1_GM11.xls' #灰色预测后保存的路径
    outputfile = '../data/revenue.xls' #神经网络预测后保存的结果
    modelfile = '../tmp/1-net.model' #模型保存路径
    data = pd.read_excel(inputfile) #读取数据
    feature = ['x1', 'x2', 'x3', 'x4', 'x5', 'x7'] #特征所在列
    
    data_train = data.loc[range(1994,2014)].copy() #取2014年前的数据建模
    data_mean = data_train.mean()
    data_std = data_train.std()
    data_train = (data_train - data_mean)/data_std #数据标准化
    x_train = data_train[feature].as_matrix() #特征数据
    y_train = data_train['y'].as_matrix() #标签数据
    
    from keras.models import Sequential
    from keras.layers.core import Dense, Activation
    
    model = Sequential() #建立模型
    model.add(Dense(6, 12))
    model.add(Activation('relu')) #用relu函数作为激活函数,能够大幅提供准确度
    model.add(Dense(12, 1))
    model.compile(loss='mean_squared_error', optimizer='adam') #编译模型
    model.fit(x_train, y_train, nb_epoch = 10000, batch_size = 16) #训练模型,学习一万次
    model.save_weights(modelfile) #保存模型参数
    
    #预测,并还原结果。
    x = ((data[feature] - data_mean[feature])/data_std[feature]).as_matrix()
    data[u'y_pred'] = model.predict(x) * data_std['y'] + data_mean['y']
    data.to_excel(outputfile)
    
    import matplotlib.pyplot as plt #画出预测结果图
    p = data[['y','y_pred']].plot(subplots = True, style=['b-o','r-*'])
    plt.show()
    
      同时得到地方财政收入真实值与预测值对比图。
    

    在这里插入图片描述

    其它类别的收入分析过程也是一样的,这里就不一 一实现了

    更多相关内容
  • 数据挖掘实战—财政收入影响因素分析及预测

    千次阅读 多人点赞 2021-04-03 14:09:50
      本文运用数据挖掘技术对市财政收入进行分析,挖掘其中的隐藏的运行模式,并对未来两年的财政收入进行预测,希望能够帮助政府合理地控制财政收支,优化财政建设,为制定相关决策提供依据。定义数据挖掘目标如下:...


    传送门:


    引言

      本文运用数据挖掘技术对市财政收入进行分析,挖掘其中的隐藏的运行模式,并对未来两年的财政收入进行预测,希望能够帮助政府合理地控制财政收支,优化财政建设,为制定相关决策提供依据。定义数据挖掘目标如下:

    • 分析、识别影响地方财政收入的关键属性
    • 预测2014年和2015年的财政收入

    本文数据挖掘主要包括以下步骤:

    1. 对原始数据进行探索性分析,了解原始属性之间的相关性
    2. 利用Lasso特征选择模型提取关键属性
    3. 建立单个属性的灰色预测模型以及支持向量模回归预测模型
    4. 使用支持向量回归预测模型得出2014年至2015年财政收入的预测值
    5. 模型评价
      在这里插入图片描述

    一、数据探索

    data.csv数据,提取码:1234
    表中各属性名称及属性说明:
    在这里插入图片描述
    在这里插入图片描述

    1.数据质量分析

    %matplotlib inline
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import seaborn as sns
    

    在这里插入图片描述

    1.1 缺失值分析

    在这里插入图片描述
    在这里插入图片描述

    1.2 异常点分析—箱型图分析

    for column in data.columns:
        fig,ax = plt.subplots(figsize=(4,4))
        sns.boxplot(data.loc[:,column],orient='v')
        ax.set_xlabel(column)
    

    在这里插入图片描述
    会展示出每一个变量的箱型图,可直观看到有无异常点

    1.3 重复数据分析

    在这里插入图片描述

    2.数据特征分析

    2.1 描述性统计分析

    在这里插入图片描述
    可通过均值、方差、最大值、最小值看出有些数据存在较大变化。

    2.2 分布分析

      表格里面都是连续型数据,可以通过distplot来展示连续变量的直方图与连续概率密度估计

    # 画直方图与连续概率密度估计
    for column in data.columns:
        fig,ax = plt.subplots(figsize=(6,6))
        sns.distplot(data.loc[:,column],norm_hist=True,bins=20)
    

    在这里插入图片描述

    2.3 相关性分析

    在这里插入图片描述
    可以发现上述变量除了x11外均与y有强相关性,并且这些属性间存在多重共线性,考虑使用Lasso特征选择模型进行特征选择
      绘制相关性热力图,直观显示相关性

    # 绘制热力图
    plt.style.use('ggplot')
    sns.set_style('whitegrid')
    plt.subplots(figsize=(10,10))
    sns.heatmap(data.corr(method='pearson'),
                cmap='Reds',
                annot=True,   # 诸如数据
                square=True,  # 正方形网格
               fmt='.2f',   # 字符串格式代码
               yticklabels=corr.columns,  # 列标签
                xticklabels=corr.columns   # 行标签
               )
    

    在这里插入图片描述
    很明显可以看出除了x11外均与y有强相关性,并且这些属性间存在多重共线性。

    二、数据预处理

      通过上面分析,我们知道数据中没有缺失值、重复值、异常值(数据来源可靠),发现有多重共线性,我们能做的是:利用Lasso特征选择,去除特征间的多重共线性

    import pandas as pd
    import numpy as np
    from sklearn.linear_model import Lasso
    
    data = pd.read_csv('data/data.csv', header=0)
    x, y = data.iloc[:, :-1], data.iloc[:, -1]
    
    # 取alpha=1000进行特征提取
    lasso = Lasso(alpha=1000, random_state=1)  
    lasso.fit(x, y)
    # 相关系数
    print('相关系数为', np.round(lasso.coef_, 5))
    coef = pd.DataFrame(lasso.coef_, index=x.columns)
    print('相关系数数组为\n', coef)
    # 返回相关系数是否为0的布尔数组
    mask = lasso.coef_ != 0.0
    # 对特征进行选择
    x = x.loc[:, mask]
    new_reg_data = pd.concat([x, y], axis=1)
    new_reg_data.to_csv('new_reg_data.csv')
    

    三、模型构建

    1.灰色预测模型

      灰色预测算法是一种对含有不确定因素的系统进行预测的方法。在建立灰色预测模型之前,需先对原始时间序列进行数据处理,经过数据处理后的时间序列即成为生成列。灰色系统常用的数据处理方式有累加和累减两种。灰色预测以灰色模型为基础,在众多灰色模型中,GM(1,1)模型最为常用。下面展示灰色预测算法的过程及代码实现
      设特征 X ( 0 ) = { X ( 0 ) ( i ) , i = 1 , 2... , n } X^{(0)}=\{X^{(0)}(i),i=1,2...,n\} X(0)={X(0)(i),i=1,2...,n}为一非负单调原始数据序列,建立灰色预测模型如下:

    1. 首先对 X ( 0 ) X^{(0)} X(0)进行一次累加,得到一次累加序列 X ( 1 ) = { X ( 1 ) ( k ) , k = 0 , 1 , 2... , n } X^{(1)}=\{X^{(1)}(k),k=0,1,2...,n\} X(1)={X(1)(k),k=0,1,2...,n}
    2. X ( 1 ) X^{(1)} X(1)可建立下述一阶线性微分方程,即 G M ( 1 , 1 ) GM(1,1) GM1,1模型
      在这里插入图片描述
    3. 求解微分方程,即可得到预测模型
      在这里插入图片描述
    4. 由于 G M ( 1 , 1 ) GM(1,1) GM1,1模型得到的是一次累加量,将 G M ( 1 , 1 ) GM(1,1) GM1,1模型所得的数据 X ^ ( 1 ) ( k + 1 ) \hat{X}^{(1)}(k+1) X^(1)(k+1)经过累减还原 X ^ ( 0 ) ( k + 1 ) \hat{X}^{(0)}(k+1) X^(0)(k+1),即 X ( 0 ) X^{(0)} X(0)的灰色预测模型
      在这里插入图片描述
    5. 后验差检验模型精度
      在这里插入图片描述

      灰色预测法的通用性强,一般的时间序列场合都适用,尤其适合那些规律性差且不清楚数据产生机理的情况。灰色预测模型的优点是预测精度高,模型可检验、参数估计方法简单、对小数据集有很好的的预测效果;缺点是对原始数据序列的光滑度要求很高,在原始数据列光滑性较差的情况下灰色预测模型的预测精度不高,甚至通不过检验,结果只能放弃使用灰色模型进行预测。
      利用GM(1,1)灰色预测方法得到关键影响因素在2014和2015年的预测值

    # 自定义灰色预测函数
    def GM11(x0):
        # 数据处理
        x1 = x0.cumsum()  # 1-AGO序列
        z1 = (x1[:len(x1) - 1] + x1[1:]) / 2.0  # 紧邻均值(MEAN)生成序列
        z1 = z1.reshape((len(z1), 1))
        # 计算参数
        B = np.append(-z1, np.ones_like(z1), axis=1)
        Yn = x0[1:].reshape((len(x0) - 1, 1))
        [[a], [b]] = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Yn)
        # 还原值
        f = lambda k: (x0[0] - b / a) * np.exp(-a * (k - 1)) - (x0[0] - b / a) * np.exp(-a * (k - 2))
        # 后验差检验
        delta = np.abs(x0 - np.array([f(i) for i in range(1, len(x0) + 1)]))
        C = delta.std() / x0.std()
        P = 1.0 * (np.abs(delta - delta.mean()) < 0.6745 * x0.std()).sum() / len(x0)
        return f, a, b, x0[0], C, P  # 返回灰色预测函数、a、b、首项、方差比、小残差概率
    
    
    new_reg_data = pd.read_csv('new_reg_data.csv', header=0, index_col=0)  # 读取经过特征选择后的数据
    data = pd.read_csv('data/data.csv', header=0)  # 读取总的数据
    new_reg_data.index = range(1994, 2014)
    new_reg_data.loc[2014] = None
    new_reg_data.loc[2015] = None
    cols = ['x1', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x13']
    for i in cols:
        f = GM11(new_reg_data.loc[range(1994, 2014), i].values)[0]
        new_reg_data.loc[2014, i] = f(len(new_reg_data) - 1)  # 2014年预测结果
        new_reg_data.loc[2015, i] = f(len(new_reg_data))  # 2015年预测结果
        new_reg_data[i] = new_reg_data[i].round(2)  # 保留两位小数
    
    y = list(data['y'].values)  # 提取财政收入列,合并至新数据框中
    y.extend([np.nan, np.nan])
    new_reg_data['y'] = y
    new_reg_data.to_excel('new_reg_data_GM11.xls')  # 结果输出
    print('预测结果为:\n', new_reg_data.loc[2014:2015, :])  # 预测结果展示
    

    预测完后利用GM11函数中的C、P值进行检验,衡量灰色预测模型的精度

    2.构建支持向量机回归模型

      使用支持向量回归模型对财政收入进行预测,由于数据量小,就没有设置测试集

    from sklearn.svm import LinearSVR
    import matplotlib.pyplot as plt
    
    data = pd.read_excel('new_reg_data_GM11.xls',index_col=0,header=0)  # 读取数据
    feature = ['x1', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x13']  # 属性所在列
    data_train = data.loc[range(1994, 2014)].copy()  # 取2014年前的数据建模
    # 数据标准化
    data_mean = data_train.mean()
    data_std = data_train.std()
    data_train = (data_train - data_mean) / data_std  
    x_train = data_train[feature].values  # 属性数据
    y_train = data_train['y'].values  # 标签数据
    
    # 调用LinearSVR()函数
    linearsvr = LinearSVR()  
    linearsvr.fit(x_train, y_train)
    x = ((data[feature] - data_mean[feature]) / data_std[feature]).values  # 预测,并还原结果。
    data[u'y_pred'] = linearsvr.predict(x) * data_std['y'] + data_mean['y']
    # SVR预测后保存的结果
    data.to_excel('new_reg_data_GM11_revenue.xls')
    
    print('真实值与预测值分别为:\n', data[['y', 'y_pred']])
    
    fig = data[['y', 'y_pred']].plot(subplots=True, style=['b-o', 'r-*'])  # 画出预测结果图
    plt.show()
    
    
    真实值与预测值分别为:
                 y       y_pred
    1994    64.87    39.178714
    1995    99.75    85.572845
    1996    88.11    96.280182
    1997   106.07   107.925220
    1998   137.32   152.320388
    1999   188.14   189.199850
    2000   219.91   220.381728
    2001   271.91   231.055736
    2002   269.10   220.501519
    2003   300.55   301.152180
    2004   338.45   383.844627
    2005   408.86   463.423139
    2006   476.72   554.914429
    2007   838.99   691.053569
    2008   843.14   842.424578
    2009  1107.67  1086.676160
    2010  1399.16  1377.737429
    2011  1535.14  1535.140000
    2012  1579.68  1737.264098
    2013  2088.14  2083.231695
    2014      NaN  2185.297088
    2015      NaN  2535.939620
    

    在这里插入图片描述


    如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论或者私信!
    在这里插入图片描述


    展开全文
  • 财政收入影响因素分析及预测模型。

    财政收入影响因素分析及预测模型

    背景

    在我国现行的分税制财政管理体制下,地方财政收入不仅是国家财政收入的重要组成部分,还具有其相对独立的构成内容。如何有效地利用地方财政收入,合理地分配来促进地方的发展,提高市民的收入和生活质量是每个地方政府需要考虑的首要问题。因此,对地方财政收入进行预测,不但是必要的,而且是可能的。科学、合理地预测地方财政收入,对于克服年度地方预算收支规模的随意性和盲目性,正确处理地方财政与经济的相互关系具有十分重要的意义。某市作为改革开放的前沿城市,其经济发展在全国经济中的地位举足轻重。目前,该市在财政收入规模、结构等方面与北京、深圳和上海等城市仍有一定差距,存在不断完善的空间。

    目标

    本案例旨在通过研究,发现影响该市目前以及未来地方财源建设的因素,并对其进行深入分析,提出对该市地方财源优化的具体建议,供政府决策参考,同时为其他经济发展较快的城市提供借鉴。

    考虑到数据的可得性,本案例所用的财政收入分为地方一般预算收入和政府性基金收入。

    地方一般预算收入包括:1.税收收入,主要包括企业所得税和地方所得税中中央和地方共享的40%,地方享有的25%的增值税、营业税和印花税等;2.非税收入,包括专项收入、行政事业费收入、罚没收入、国有资本经营收入和其他收入等。政府性基金收入是国家通过向社会征收以及出让土地、发行彩票等方式取得的收入,并专项用于支持特定基础设施建设和社会事业发展的收入。由于1994年财政体制重大改革,所以1994年前后不具有可比性,仅对1994年后的进行分析,本案例数据来自《某市统计年鉴》(1995-2014)

    挖掘目标

    梳理影响地方财政收入的关键特征,分析、识别影响地方财政收入的关键特征的选择模型。结合目标1的因素分析,对某市2015年的财政总收入及各个类别收入进行预测。

    分析

    在以往的文献中,对影响财政收入的因素的分析大多采用普通最小二乘法来对回归模型的系数进行估计,预测变量的选取采用的则是逐步回归。然而,不论是最小二乘法还是逐步回归,都有其不足之处。它们一般都局限于局部最优解而不是全局最优解。如果预测变量过多,子集选择的计算过程具有不可实行性,且子集选择具有内在的不连续性,从而导致子集选择极度多变。

    Lasso是近年来被广泛使用于参数估计和变量选择的方法之一,并且在确定的条件下,使用Lasso方法进行变量选择已经被证明是一致的。案例选用Adaptive-Lasso方法来探究地方财政收入与各因素之间的关系。(该方法不在数学上具体叙述)

    在Adaptive-Lasso变量选择的基础上,鉴于灰色预测对小数据量数据预测的优良性能,对单个选定的影响因素建立灰色预测模型,得到它们在2014年及2015年的预测值。由于神经网络较强的适用性和容错能力,对历史数据建立训练模型,把灰色预测的数据结果代入训练好的模型中,就得到了充分考虑历史信息的预测结果,即2015年某市财政收入及各个类别的收入。

    下面是基于数据挖掘技术的财政收入分析预测模型流程

    1. 从某市统计局网站以及各统计年鉴搜集到该市财政收入以及各类别收入相关数据。
    2. 利用步骤1)形成的已完成数据预处理的建模数据,建立Adaptive-Lasso变量选择模型。
    3. 在步骤2)的基础上建立单变量的灰色预测模型以及人工神经网络预测模型。
    4. 利用步骤3)的预测值代入构建好的人工神经网络模型中,从而得到2014/2015年某市财政收入及各个类别的收入。

    处理过程

    • 数据获取
      • 已提供。
    • 数据探索
      • 描述分析
      • 相关分析
    • 数据预处理
      • 处理好的数据给出了。
    • 数据挖掘建模
      • Adaptive-Lasso变量选择模型
        • sklearn中Adaptive-Lasso模型已经删除了。
      • 财政收入及各类别收入预测模型
        • 某市财政收入预测模型
          • 真实值与预测值对比
        • 增值税预测模型
          • 真实值与预测值对比
        • 营业税预测模型
          • 真实值与预测值对比
        • 企业所得税预测模型
          • 真实值与预测值对比
        • 个人所得税预测模型
          • 真实值与预测值对比
        • 政府性基金收入预测模型
          • 真实值与预测值对比

    代码

    import pandas as pd
    import numpy as np
    from GM11 import GM11
    
    
    def adaptiveLasso():
        '''
        Adaptive-Lasso变量选择模型
        :return:
        '''
        inputfile = 'data/data1.csv'
        data = pd.read_csv(inputfile)
        # 导入AdaptiveLasso算法,要在较新的Scikit-Learn才有。
        from sklearn.linear_model import LassoLars
        model = LassoLars()
        model.fit(data.iloc[:, 0:13], data['y'])
        print(model.coef_)
    
    
    def huise():
        '''
        地方财政收入灰色预测
        :return:
        '''
        inputfile = 'data/data1.csv'
        outputfile = 'data/data1_GM11.xls'
        data = pd.read_csv(inputfile)
        data.index = range(1994, 2014)
    
        data.loc[2014] = None
        data.loc[2015] = None
        l = ['x1', 'x2', 'x3', 'x4', 'x5', 'x7']
        for i in l:
            f = GM11(data[i][np.arange(1994, 2014)].values)[0]
            # 2014年预测结果
            data[i][2014] = f(len(data) - 1)
            # 2015年预测结果
            data[i][2015] = f(len(data))
            data[i] = data[i].round(2)
    
        data[l + ['y']].to_excel(outputfile)
        print(data)
    
    
    def yuce():
        '''
        地方财政收入神经网络预测模型
        :return:
        '''
        inputfile = 'data/data1_GM11.xls'  # 灰色预测后保存的路径
        outputfile = 'data/revenue.xls'  # 神经网络预测后保存的结果
        modelfile = 'data/1-net.model'  # 模型保存路径
        data = pd.read_excel(inputfile)
        feature = ['x1', 'x2', 'x3', 'x4', 'x5', 'x7']  # 特征所在列
    
        data_train = data.loc[range(1994, 2014)].copy()  # 取2014年前的数据建模
        data_mean = data_train.mean()
        data_std = data_train.std()
        data_train = (data_train - data_mean) / data_std  # 数据标准化
        x_train = data_train[feature].values  # 特征数据
        y_train = data_train['y'].values  # 标签数据
    
        from keras.models import Sequential
        from keras.layers.core import Dense, Activation
    
        model = Sequential()  # 建立模型
        model.add(Dense(input_dim=6, units=12))
        model.add(Activation('relu'))  # 用relu函数作为激活函数,能够大幅提供准确度
        model.add(Dense(input_dim=12, units=1))
        model.compile(loss='mean_squared_error', optimizer='adam')  # 编译模型
        model.fit(x_train, y_train, nb_epoch=10000, batch_size=16)  # 训练模型,学习一万次
        model.save_weights(modelfile)  # 保存模型参数
    
        # 预测,并还原结果。
        x = ((data[feature] - data_mean[feature]) / data_std[feature]).values
        data[u'y_pred'] = model.predict(x) * data_std['y'] + data_mean['y']
        data.to_excel(outputfile)
    
        import matplotlib.pyplot as plt  # 画出预测结果图
        p = data[['y', 'y_pred']].plot(subplots=True, style=['b-o', 'r-*'])
        plt.show()
    
    
    def adaptiveLasso2():
        '''
        Adaptive-Lasso变量选择
        :return:
        '''
    
        inputfile = 'data/data2.csv'  # 输入的数据文件
        data = pd.read_csv(inputfile)  # 读取数据
        # 导入AdaptiveLasso算法,新版本已经删除
        from sklearn.linear_model import AdaptiveLasso
        model = AdaptiveLasso(gamma=1)
        model.fit(data.iloc[:, 0:6], data['y'])
        model.coef_  # 各个特征的系数
    
    
    def huise2():
        '''
        增值税灰色预测
        :return:
        '''
        inputfile = 'data/data2.csv'  # 输入的数据文件
        outputfile = 'data/data2_GM11.xls'  # 灰色预测后保存的路径
        data = pd.read_csv(inputfile)  # 读取数据
        data.index = range(1999, 2014)
    
        data.loc[2014] = None
        data.loc[2015] = None
        l = ['x1', 'x3', 'x5']
        for i in l:
            f = GM11(data[i][np.arange(1999, 2014)].values)[0]
            data[i][2014] = f(len(data) - 1)  # 2014年预测结果
            data[i][2015] = f(len(data))  # 2015年预测结果
            data[i] = data[i].round(6)  # 保留六位小数
        data[l + ['y']].to_excel(outputfile)  # 结果输出
        print(data)
    
    
    def yuce2():
        '''
        增值税神经网络预测模型
        :return:
        '''
        inputfile = 'data/data2_GM11.xls'  # 灰色预测后保存的路径
        outputfile = 'data/VAT.xls'  # 神经网络预测后保存的结果
        modelfile = 'data/2-net.model'  # 模型保存路径
        data = pd.read_excel(inputfile)  # 读取数据
        feature = ['x1', 'x3', 'x5']  # 特征所在列
    
        data_train = data.loc[np.arange(1999, 2014)].copy()  # 取2014年前的数据建模
        data_mean = data_train.mean()
        data_std = data_train.std()
        data_train = (data_train - data_mean) / data_std  # 数据标准化
        x_train = data_train[feature].values  # 特征数据
        y_train = data_train['y'].values  # 标签数据
    
        from keras.models import Sequential
        from keras.layers.core import Dense, Activation
    
        model = Sequential()  # 建立模型
        model.add(Dense(input_dim=3, units=6))
        model.add(Activation('relu'))  # 用relu函数作为激活函数,能够大幅提供准确度
        model.add(Dense(input_dim=6, units=1))
        model.compile(loss='mean_squared_error', optimizer='adam')  # 编译模型
        model.fit(x_train, y_train, nb_epoch=10000, batch_size=16)  # 训练模型,学习一万次
        model.save_weights(modelfile)  # 保存模型参数
    
        # 预测,并还原结果。
        x = ((data[feature] - data_mean[feature]) / data_std[feature]).values
        data[u'y_pred'] = model.predict(x) * data_std['y'] + data_mean['y']
        data[u'y_pred'] = data[u'y_pred'].round(2)
        data.to_excel(outputfile)
    
        import matplotlib.pyplot as plt  # 画出预测结果图
        p = data[['y', 'y_pred']].plot(subplots=True, style=['b-o', 'r-*'])
        plt.show()
    
    
    
    def adaptiveLasso3():
        '''
        Adaptive-Lasso变量选择
        :return:
        '''
        inputfile = 'data/data3.csv'  # 输入的数据文件
        data = pd.read_csv(inputfile)  # 读取数据
    
        # 导入AdaptiveLasso算法,要在较新的Scikit-Learn才有。
        from sklearn.linear_model import AdaptiveLasso
        model = AdaptiveLasso(gamma=1)
        model.fit(data.iloc[:, 0:10], data['y'])
        model.coef_  # 各个特征的系数
    
    
    def huise3():
        '''
        营业税灰色预测
        :return:
        '''
        inputfile = 'data/data3.csv'  # 输入的数据文件
        outputfile = 'data/data3_GM11.xls'  # 灰色预测后保存的路径
        data = pd.read_csv(inputfile)  # 读取数据
        data.index = range(1999, 2014)
    
        data.loc[2014] = None
        data.loc[2015] = None
        l = ['x3', 'x4', 'x6', 'x8']
        for i in l:
            f = GM11(data[i][np.arange(1999, 2014)].values)[0]
            data[i][2014] = f(len(data) - 1)  # 2014年预测结果
            data[i][2015] = f(len(data))  # 2015年预测结果
            data[i] = data[i].round()  # 取整
    
        data[l + ['y']].to_excel(outputfile)  # 结果输出
        print(data)
    
    
    def yuce3():
        '''
        营业税神经网络预测模型
        :return:
        '''
        inputfile = 'data/data3_GM11.xls'  # 灰色预测后保存的路径
        outputfile = 'data/sales_tax.xls'  # 神经网络预测后保存的结果
        modelfile = 'data/3-net.model'  # 模型保存路径
        data = pd.read_excel(inputfile)  # 读取数据
        feature = ['x3', 'x4', 'x6', 'x8']  # 特征所在列
    
        data_train = data.loc[range(1999, 2014)].copy()  # 取2014年前的数据建模
        data_mean = data_train.mean()
        data_std = data_train.std()
        data_train = (data_train - data_mean) / data_std  # 数据标准化
        x_train = data_train[feature].values  # 特征数据
        y_train = data_train['y'].values  # 标签数据
    
        from keras.models import Sequential
        from keras.layers.core import Dense, Activation
    
        model = Sequential()  # 建立模型
        model.add(Dense(input_dim=4, units=8))
        model.add(Activation('relu'))  # 用relu函数作为激活函数,能够大幅提供准确度
        model.add(Dense(input_dim=8, units=1))
        model.compile(loss='mean_squared_error', optimizer='adam')  # 编译模型
        model.fit(x_train, y_train, nb_epoch=10000, batch_size=16)  # 训练模型,学习一万次
        model.save_weights(modelfile)  # 保存模型参数
    
        # 预测,并还原结果。
        x = ((data[feature] - data_mean[feature]) / data_std[feature]).values
        data[u'y_pred'] = model.predict(x) * data_std['y'] + data_mean['y']
        data[u'y_pred'] = data[u'y_pred'].round(2)
        data.to_excel(outputfile)
    
        import matplotlib.pyplot as plt  # 画出预测结果图
        p = data[['y', 'y_pred']].plot(subplots=True, style=['b-o', 'r-*'])
        plt.show()
    
    
    def adaptiveLasso4():
        '''
        Adaptive-Lasso变量选择
        :return:
        '''
        inputfile = 'data/data4.csv'  # 输入的数据文件
        data = pd.read_csv(inputfile)  # 读取数据
    
        # 导入AdaptiveLasso算法,要在较新的Scikit-Learn才有。
        from sklearn.linear_model import AdaptiveLasso
        model = AdaptiveLasso(gamma=1)
        model.fit(data.iloc[:, 0:10], data['y'])
        model.coef_  # 各个特征的系数
    
    
    def huise4():
        '''
        企业所得税灰色预测
        :return:
        '''
        inputfile = 'data/data4.csv'  # 输入的数据文件
        outputfile = 'data/data4_GM11.xls'  # 灰色预测后保存的路径
        data = pd.read_csv(inputfile)  # 读取数据
        data.index = range(2002, 2014)
    
        data.loc[2014] = None
        data.loc[2015] = None
        l = ['x1', 'x2', 'x3', 'x4', 'x6', 'x7', 'x9', 'x10']
        for i in l:
            f = GM11(data[i][np.arange(2002, 2014)].values)[0]
            data[i][2014] = f(len(data) - 1)  # 2014年预测结果
            data[i][2015] = f(len(data))  # 2015年预测结果
            data[i] = data[i].round(2)  # 保留两位小数
        data[l + ['y']].to_excel(outputfile)  # 结果输出
        print(data)
    
    
    def yuce4():
        '''
        企业所得税神经网络预测模型
        :return:
        '''
        inputfile = 'data/data4_GM11.xls'  # 灰色预测后保存的路径
        outputfile = 'data/enterprise_income.xls'  # 神经网络预测后保存的结果
        modelfile = 'data/4-net.model'  # 模型保存路径
        data = pd.read_excel(inputfile)  # 读取数据
        feature = ['x1', 'x2', 'x3', 'x4', 'x6', 'x7', 'x9', 'x10']  # 特征所在列
    
        data_train = data.loc[range(2002, 2014)].copy()  # 取2014年前的数据建模
        data_mean = data_train.mean()
        data_std = data_train.std()
        data_train = (data_train - data_mean) / data_std  # 数据标准化
        x_train = data_train[feature].values  # 特征数据
        y_train = data_train['y'].values  # 标签数据
    
        from keras.models import Sequential
        from keras.layers.core import Dense, Activation
    
        model = Sequential()  # 建立模型
        model.add(Dense(input_dim=8, units=6))
        model.add(Activation('relu'))  # 用relu函数作为激活函数,能够大幅提供准确度
        model.add(Dense(input_dim=6, units=1))
        model.compile(loss='mean_squared_error', optimizer='adam')  # 编译模型
        model.fit(x_train, y_train, nb_epoch=5000, batch_size=16)  # 训练模型,学习五千次
        model.save_weights(modelfile)  # 保存模型参数
    
        # 预测,并还原结果。
        x = ((data[feature] - data_mean[feature]) / data_std[feature]).values
        data[u'y_pred'] = model.predict(x) * data_std['y'] + data_mean['y']
        data[u'y_pred'] = data[u'y_pred'].round()
        data.to_excel(outputfile)
    
        import matplotlib.pyplot as plt  # 画出预测结果图
        p = data[['y', 'y_pred']].plot(subplots=True, style=['b-o', 'r-*'])
        plt.show()
    
    
    def adaptiveLasso5():
        '''
        Adaptive-Lasso变量选择
        :return:
        '''
        inputfile = 'data/data5.csv'  # 输入的数据文件
        data = pd.read_csv(inputfile)  # 读取数据
    
        # 导入AdaptiveLasso算法,要在较新的Scikit-Learn才有。
        from sklearn.linear_model import AdaptiveLasso
        model = AdaptiveLasso(gamma=1)
        model.fit(data.iloc[:, 0:7], data['y'])
        model.coef_  # 各个特征的系数
    
    
    def huise5():
        '''
        个人所得税灰色预测
        :return:
        '''
        inputfile = 'data/data5.csv'  # 输入的数据文件
        outputfile = 'data/data5_GM11.xls'  # 灰色预测后保存的路径
        data = pd.read_csv(inputfile)  # 读取数据
        data.index = range(2000, 2014)
    
        data.loc[2014] = None
        data.loc[2015] = None
        l = ['x1', 'x4', 'x5', 'x7']
        for i in l:
            f = GM11(data[i][np.arange(2000, 2014)].values)[0]
            data[i][2014] = f(len(data) - 1)  # 2014年预测结果
            data[i][2015] = f(len(data))  # 2015年预测结果
            data[i] = data[i].round()  # 取整
    
        data[l + ['y']].to_excel(outputfile)  # 结果输出
        print(data)
    
    
    def yuce5():
        '''
        个人所得税神经网络预测模型
        :return:
        '''
        inputfile = 'data/data5_GM11.xls'  # 灰色预测后保存的路径
        outputfile = 'data/personal_Income.xls'  # 神经网络预测后保存的结果
        modelfile = 'data/5-net.model'  # 模型保存路径
        data = pd.read_excel(inputfile)  # 读取数据
        feature = ['x1', 'x4', 'x5', 'x7']  # 特征所在列
    
        data_train = data.loc[range(2000, 2014)].copy()  # 取2014年前的数据建模
        data_mean = data_train.mean()
        data_std = data_train.std()
        data_train = (data_train - data_mean) / data_std  # 数据标准化
        x_train = data_train[feature].values  # 特征数据
        y_train = data_train['y'].values  # 标签数据
    
        from keras.models import Sequential
        from keras.layers.core import Dense, Activation
    
        model = Sequential()  # 建立模型
        model.add(Dense(input_dim=4, units=8))
        model.add(Activation('relu'))  # 用relu函数作为激活函数,能够大幅提供准确度
        model.add(Dense(input_dim=8, units=1))
        model.compile(loss='mean_squared_error', optimizer='adam')  # 编译模型
        model.fit(x_train, y_train, nb_epoch=15000, batch_size=16)  # 训练模型,学习一万五千次
        model.save_weights(modelfile)  # 保存模型参数
    
        # 预测,并还原结果。
        x = ((data[feature] - data_mean[feature]) / data_std[feature]).values
        data[u'y_pred'] = model.predict(x) * data_std['y'] + data_mean['y']
        data[u'y_pred'] = data[u'y_pred'].round()
        data.to_excel(outputfile)
    
        import matplotlib.pyplot as plt  # 画出预测结果图
        p = data[['y', 'y_pred']].plot(subplots=True, style=['b-o', 'r-*'])
        plt.show()
    
    
    def huise6():
        '''
        政府性基金收入灰色预测
        :return:
        '''
        x0 = np.array([3152063, 2213050, 4050122, 5265142, 5556619, 4772843, 9463330])
        f, a, b, x00, C, P = GM11(x0)
        print(u'2014年、2015年的预测结果分别为:\n%0.2f万元和%0.2f万元' % (f(8), f(9)))
        print(u'后验差比值为:%0.4f' % C)
        p = pd.DataFrame(x0, columns=['y'], index=range(2007, 2014))
        p.loc[2014] = None
        p.loc[2015] = None
        p['y_pred'] = [f(i) for i in range(1, 10)]
        p['y_pred'] = p['y_pred'].round(2)
        p.index = pd.to_datetime(p.index, format='%Y')
    
        import matplotlib.pylab as plt
        p.plot(style=['b-o', 'r-*'], xticks=p.index)
        plt.show()
    
    
    if __name__ == '__main__':
        # adaptiveLasso()
        # huise()
        # yuce()
        # adaptiveLasso2()
        # huise2()
        # yuce2()
        # adaptiveLasso3()
        # huise3()
        # yuce3()
        # adaptiveLasso4()
        # huise4()
        # yuce4()
        # adaptiveLasso5()
        # huise5()
        # yuce5()
        huise6()
    
    

    后续处理

    应用模型进行推理。

    补充说明

    案例参考书《Python数据分析与挖掘实战》,与原书有借鉴,但是较大改动代码,修复了原书一些旧版本代码错误,具体数据集和代码可以查看我的Github,欢迎star或者fork。再次补充,相关数据集的获取直接clone整个仓库即可。

    展开全文
  • 13 章:财政收入影响因素分析及预测模型 案例目的:预测财政收入 1 数据的基本描述性分析 数据 字段含义 社会从业人数(x1 )、 在岗职工工资总额(x2)、社会消费品零售总额(x3)、城镇居民人均支配收人(x4)、 ...

    案例来源自《Python 数据分析与挖掘实战》第 13 章:财政收入影响因素分析及预测模型

    案例目的:预测财政收入

    1 数据的基本描述性分析

    数据
    在这里插入图片描述
    字段含义
    社会从业人数(x1 )、 在岗职工工资总额(x2)、社会消费品零售总额(x3)、城镇居民人均可支配收人(x4)、 城镇居民人均消费性支出(x5)、年末总人口(x6)、全社会固定资产投资额(x7)、地区生产总值(x8)、第一产业产值(x9)、税收(x10)、居民消费价格指数(x11)、第三产业与第二产业产值比(x12)地区生产总值(x8)和居民消费水平(x13)。

    导包与读取数据

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    from pylab import mpl
    # 正常显示中文标签
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    # 正常显示负号
    mpl.rcParams['axes.unicode_minus'] = False
    # 禁用科学计数法
    pd.set_option('display.float_format', lambda x: '%.2f' % x) 
    
    # 读入数据
    data = pd.read_excel('data1.xlsx',index_col=0)
    

    数据的基本情况

    data.shape # (20, 14)
    data.info()
    '''
    <class 'pandas.core.frame.DataFrame'>
    Int64Index: 20 entries, 1994 to 2013
    Data columns (total 14 columns):
     #   Column  Non-Null Count  Dtype  
    ---  ------  --------------  -----  
     0   x1      20 non-null     int64  
     1   x2      20 non-null     float64
     2   x3      20 non-null     float64
     3   x4      20 non-null     float64
     4   x5      20 non-null     float64
     5   x6      20 non-null     int64  
     6   x7      20 non-null     float64
     7   x8      20 non-null     float64
     8   x9      20 non-null     float64
     9   x10     20 non-null     float64
     10  x11     20 non-null     float64
     11  x12     20 non-null     float64
     12  x13     20 non-null     int64  
     13  y       20 non-null     float64
    dtypes: float64(11), int64(3)
    '''
    
    # 描述性分析
    data.describe().T
    

    或更简洁一点

    r = [data.min(), data.max(), data.mean(), data.std()]
    r = pd.DataFrame(r, index=['Min', 'Max', 'Mean', 'STD']).T
    r = np.round(r, 2)
    r
    

    结果

                Min         Max        Mean         STD
    x1   3831732.00  7599295.00  5579519.95  1262194.72
    x2       181.54     2110.78      765.04      595.70
    x3       448.19     6882.85     2370.83     1919.17
    x4      7571.00    42049.14    19644.69    10203.02
    x5      6212.70    33156.83    15870.95     8199.77
    x6   6370241.00  8323096.00  7350513.60   621341.85
    x7       525.71     4454.55     1712.24     1184.71
    x8       985.31    15420.14     5705.80     4478.40
    x9        60.62      228.46      129.49       50.51
    x10       65.66      852.56      340.22      251.58
    x11       97.50      120.00      103.31        5.51
    x12        1.03        1.91        1.42        0.25
    x13     5321.00    41972.00    17273.80    11109.19
    y         64.87     2088.14      618.08      609.25
    

    变量的分布情况

    from sklearn.preprocessing import MinMaxScaler
    #实现归一化
    scaler = MinMaxScaler() #实例化
    scaler = scaler.fit(data) #fit,在这里本质是生成min(x)和max(x)
    data_scale = pd.DataFrame(scaler.transform(data)) #通过接口导出结果
    data_scale.columns = data.columns
    
    import joypy
    import pandas as pd
    import numpy as np
    from matplotlib import pyplot as plt
    from matplotlib import cm
    import seaborn as sns
    fig, axes = joypy.joyplot(data_scale, alpha=.5, color='#FFCC99')#连续值的列为一个"脊"
    

    在这里插入图片描述

    data_scale.plot()
    

    在这里插入图片描述


    相关性分析

    pear = np.round(data.corr(method = 'pearson'), 2)
    pear
    
    plt.figure(figsize=(12,12))
    sns.heatmap(data.corr(), center=0,
                square=True, linewidths=.5, cbar_kws={"shrink": .5},annot=True, fmt='.1f')
    #设置x轴
    plt.xticks(fontsize=15)
    #设置y轴
    plt.yticks(fontsize=15)
    plt.tight_layout()
    plt.savefig('a.png')
    

    在这里插入图片描述

    由图可知,居民消费价格指数(x11)与财政收入的线性关系不显著,而且呈现负相关。其余变量均与财政收入呈现高度的正相关关系。

    2 数据的预处理

    变量的筛选

    分析方法的选择:以往对财政收入的分析会使用 多元线性回归模型最小二乘估计方法来估计回归模型的系数,通过系数能否通过检验来检验它们之间的关系,但这样的结果对数据依赖程度很大,并且求得的往往只是局部最优解,后续的检验可能会失去应有的意义。因此本案例运用Adaptive-Lasso变量选择方法来研究

    对于Lasso,这里参考书中的理论知识

    在这里插入图片描述

    Lasso全称最小绝对收缩和选择算子,和岭回归一样,Lasso是被创造来作用于多重共线性问题的算法,不过Lasso使用的是系数 β \beta β 的L1范式(L1范式则是系数 β \beta β 的绝对值)乘以正则化系数

    不太严谨说法是,Lasso与岭回归非常相似,都是利用正则项来对原本的损失函数形成一个惩罚,以此来防止多重共线性。

    Lasso 虽然是为了限制多重共线性被创造出来的,但其实并不使用它来抑制多重共线性,反而接受了它在其他方面的优势,

    由于,L2正则化只会将系数压缩到尽量接近0,但L1正则化主导稀疏性,因此会将系数压缩到0。

    因此,Lasso成为了线性模型中的特征选择工具首选

    Lasso回归的特点是在拟合广义线性模型的同时进行变量筛选和复杂度调整。 因此,不论目标因变量是连续的,还是二元或者多元离散的,都可以用Lasso回归建模然后预测。

    这里的变量筛选是指不把所有的变量都放入模型中进行拟合,而是有选择的把变量放入模型从而得到更好的性能参数。
    在这里插入图片描述

    —关于Adaptive-Lasso变量选择方法(参考书籍)

    Adaptive_lasso算法是近些年来被广泛应用于参数估计于变量选择的方法之一。Adaptive_Lasso算法能够解决最小二乘法和逐步回归局部最优解的不足,这是它的优点之一。


    Adaptive_lasso算法计算出某变量的特征值非零,则表示该变量对预测变量存在较大影响,而如果某变量的特征值为零,则表示该变量对预测变量影响很小。


    Lasso变量选择模型

    这里没有找到AdaptiveLasso这个函数,用Lasso代替

    from sklearn.linear_model import Lasso
    model = Lasso(alpha=0.1, max_iter=100000)
    model.fit(data.iloc[:, 0:13], data['y'])
    q=model.coef_#各特征的系数
    q=pd.DataFrame(q,index=data.columns[:-1])
    q
    '''
            0
    x1  -0.00
    x2  -0.59
    x3   0.44
    x4  -0.13
    x5   0.17
    x6   0.00
    x7   0.27
    x8   0.03
    x9  -7.56
    x10 -0.09
    x11  3.38
    x12  0.00
    x13 -0.01
    '''
    

    计算出某变量的特征值非零,则表示该变量对预测变量存在较大影响,而如果某变量的特征值为零,则表示该变量对预测变量影响很小。

    调整参数值(参照:https://blog.csdn.net/weixin_43746433/article/details/100047231)

    from sklearn.linear_model import Lasso
    lasso = Lasso(1000)  #调用Lasso()函数,设置λ的值为1000
    lasso.fit(data.iloc[:,0:13],data['y'])
    print('相关系数为:',np.round(lasso.coef_,5))  #输出结果,保留五位小数
    ## 计算相关系数非零的个数
    print('相关系数非零个数为:',np.sum(lasso.coef_ != 0))
    mask = lasso.coef_ != 0  #返回一个相关系数是否为零的布尔数组
    print('相关系数是否为零:',mask)
    
    new_reg_data = data.iloc[:,:13].iloc[:,mask]  #返回相关系数非零的数据
    new_reg_data = pd.concat([new_reg_data,data.y],axis=1)
    new_reg_data.to_excel('new_reg_data.xlsx')
    
    相关系数为:
     [-1.8000e-04 -0.0000e+00  1.2414e-01 -1.0310e-02  6.5400e-02  1.2000e-04
      3.1741e-01  3.4900e-02 -0.0000e+00  0.0000e+00  0.0000e+00  0.0000e+00
     -4.0300e-02]
    相关系数非零个数为: 8
    相关系数是否为零: [ True False  True  True  True  True  True  True False False False False  True]
    

    根据非零的系数,最终通过Lasso筛选出的变量如下
    在这里插入图片描述

    变量筛选好之后,接下来的开始建模

    3 建立财政收入预测模型

    这里使用的预测方法是,灰色预测 + 神经网络预测 的组合模型

    基本思路是

    (1)首先是在前面的变量选择结果基础上,对单个选定的影响因素建立灰色预测模型,得到它们在2014年及2015年的预测值。

    (2)然后,通过神经网络对历史数据( X 1994 − 2003 X_{1994-2003} X19942003 Y 1994 − 2003 Y_{1994-2003} Y19942003)建立训练模型。

    (3)把 X 1994 − 2003 X_{1994-2003} X19942003以及灰色预测的数据结果 X 2004 − 2005 X_{2004-2005} X20042005一并代人训练好的模型中,得到预测值。


    灰色预测模型

    灰色模型学习资料(自己推荐自己*-*)

    灰色预测函数

    def GM11(x0): #自定义灰色预测函数
        import numpy as np
        x1 = x0.cumsum() # 生成累加序列
        z1 = (x1[:len(x1)-1] + x1[1:])/2.0 # 生成紧邻均值(MEAN)序列,比直接使用累加序列好,共 n-1 个值
        z1 = z1.reshape((len(z1),1))
        B = np.append(-z1, np.ones_like(z1), axis = 1)    # 生成 B 矩阵
        Y = x0[1:].reshape((len(x0)-1, 1))    # Y 矩阵
        [[a],[u]] = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Y)    #计算参数
        f = lambda k: (x0[0]-u/a)*np.exp(-a*(k-1))-(x0[0]-u/a)*np.exp(-a*(k-2))    #还原值
        delta = np.abs(x0 - np.array([f(i) for i in range(1,len(x0)+1)]))    # 计算残差
        C = delta.std()/x0.std()
        P = 1.0*(np.abs(delta - delta.mean()) < 0.6745*x0.std()).sum()/len(x0)
        return f, a, u, x0[0], C, P #返回灰色预测函数、a、b、首项、方差比、小残差概率
    

    data.index = range(1994, 2014)
    data.loc[2014] = None
    data.loc[2015] = None
    
    # 模型精度评价
    # 被lasso筛选出来的6个变量
    l = ['x1', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x13']
    for i in l:
        GM = GM11(data[i][list(range(1994, 2014))].values)
        f = GM[0]
        c = GM[-2]
        p = GM[-1]
        data[i][2014] = f(len(data)-1)
        data[i][2015] = f(len(data))
        data[i] = data[i].round(2)
        if (c < 0.35) & (p > 0.95):
            print('对于模型{},该模型精度为---好'.format(i))
        elif (c < 0.5) & (p > 0.8):
            print('对于模型{},该模型精度为---合格'.format(i))
        elif (c < 0.65) & (p > 0.7):
            print('对于模型{},该模型精度为---勉强合格'.format(i))
        else:
            print('对于模型{},该模型精度为---不合格'.format(i))
    
    data[l+['y']].to_excel('data2.xlsx')
    
    对于模型x1,该模型精度为---好
    对于模型x3,该模型精度为---好
    对于模型x4,该模型精度为---好
    对于模型x5,该模型精度为---好
    对于模型x6,该模型精度为---好
    对于模型x7,该模型精度为---好
    对于模型x8,该模型精度为---好
    对于模型x13,该模型精度为---

    在这里插入图片描述

    预测值如下:
    在这里插入图片描述


    神经网络预测模型

    下面用历史数据建立神经网络模型

    其参数设置为误差精度107,学习次数10000次,神经元个数为Lasso变量选择方法选择的变量个数8。

    '''神经网络'''
    data2 = pd.read_excel('data2.xlsx', index_col=0)
    # 提取数据
    feature = list(data2.columns[:len(data2.columns)-1]) # ['x1', 'x2', 'x3', 'x4', 'x5', 'x7']
    train = data2.loc[list(range(1994, 2014))].copy()
    mean = train.mean()
    std = train.std() 
    train = (train - mean) / std    # 数据标准化,这里使用标准差标准化
    x_train = train[feature].values
    y_train = train['y'].values
    
    # 建立神经网络模型 
    from keras.models import Sequential
    from keras.layers.core import Dense, Activation
    
    model = Sequential()
    model.add(Dense(input_dim=8, units=12))
    model.add(Activation('relu'))
    model.add(Dense(input_dim=12, units=1))
    model.compile(loss='mean_squared_error', optimizer='adam')
    model.fit(x_train, y_train, epochs=10000, batch_size=16)
    model.save_weights('net.model')
    

    训练好模型后,将 X 1994 − 2005 X_{1994-2005} X19942005全部带入模型中作预测,结果如下:

    # 将整个变量矩阵标准化
    x = ((data2[feature] - mean[feature]) / std[feature]).values
    # 预测,并还原结果
    data2['y_pred'] = model.predict(x) * std['y'] + mean['y']
    data2.to_excel('data3.xlsx')
    

    预测结果
    在这里插入图片描述

    绘制真实值与预测值之间的折线图

    import matplotlib.pyplot as plt
    p = data2[['y', 'y_pred']].plot(style=['b-o', 'r-*'])
    p.set_ylim(0, 2500)
    p.set_xlim(1993, 2016)
    plt.show()
    

    从结果中,比较预测值与真实值基本高度吻合
    在这里插入图片描述

    为了与神经网络预测结果有一个对比,下面使用其他预测模型查看其结果如何

    from sklearn.linear_model import LinearRegression # 线性回归
    from sklearn.neighbors import KNeighborsRegressor # K近邻回归
    from sklearn.neural_network import MLPRegressor # 神经网络回归
    from sklearn.tree import DecisionTreeRegressor # 决策树回归
    from sklearn.tree import ExtraTreeRegressor # 极端随机森林回归
    from xgboost import XGBRegressor # XGBoot
    from sklearn.ensemble import RandomForestRegressor # 随机森林回归
    from sklearn.ensemble import AdaBoostRegressor  # Adaboost 集成学习
    from sklearn.ensemble import GradientBoostingRegressor # 集成学习梯度提升决策树
    from sklearn.ensemble import BaggingRegressor # bagging回归
    from sklearn.linear_model import ElasticNet
    
    from sklearn.metrics import explained_variance_score,\
    mean_absolute_error,mean_squared_error,\
    median_absolute_error,r2_score
    
    models=[LinearRegression(),KNeighborsRegressor(),MLPRegressor(alpha=20),DecisionTreeRegressor(),ExtraTreeRegressor(),XGBRegressor(),RandomForestRegressor(),AdaBoostRegressor(),GradientBoostingRegressor(),BaggingRegressor(),ElasticNet()]
    models_str=['LinearRegression','KNNRegressor','MLPRegressor','DecisionTree','ExtraTree','XGBoost','RandomForest','AdaBoost','GradientBoost','Bagging','ElasticNet']
    
    
    data2 = pd.read_excel('data2.xlsx', index_col=0)
    # 提取数据
    feature = ['x1', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x13']
    train = data2.loc[list(range(1994, 2014))].copy()
    mean = train.mean()
    std = train.std() 
    train = (train - mean) / std    # 数据标准化,这里使用标准差标准化
    x_train = train[feature].values
    y_train = train['y'].values
    # 将整个变量矩阵标准化
    x = ((data2[feature] - mean[feature]) / std[feature]).values
    
    
    for name,model in zip(models_str,models):
        print('开始训练模型:'+name)
        model=model   #建立模型
        a = 'y_pred_'+ name
        data2[a] = model.fit(x_train,y_train).predict(x) * std['y'] + mean['y']
        df=data2[:-2]
        print('平均绝对误差为:',mean_absolute_error(df['y'].values,df[a].values))
        print('均方误差为:',mean_squared_error(df['y'],df[a]))
        print('中值绝对误差为:',median_absolute_error(df['y'],df[a]))
        print('可解释方差值为:',explained_variance_score(df['y'],df[a]))
        print('R方值为:',r2_score(df['y'],df[a]))
        print('*-*'*15)
    

    结果

    开始训练模型:LinearRegression
    平均绝对误差为: 32.624948062446734
    均方误差为: 1596.8011348674995
    中值绝对误差为: 29.89818813145061
    可解释方差值为: 0.9954717568606967
    R方值为: 0.9954717568606967
    *-**-**-**-**-**-**-**-**-**-**-**-**-**-**-*
    开始训练模型:KNNRegressor
    平均绝对误差为: 63.916899999999984
    均方误差为: 17521.95548179999
    中值绝对误差为: 26.000000000000043
    可解释方差值为: 0.9517094362717755
    R方值为: 0.950310860278652
    *-**-**-**-**-**-**-**-**-**-**-**-**-**-**-*
    开始训练模型:MLPRegressor
    平均绝对误差为: 235.42036857561698
    均方误差为: 76090.58720607273
    中值绝对误差为: 196.3296364219621
    可解释方差值为: 0.7845740946711923
    R方值为: 0.7842206697141109
    *-**-**-**-**-**-**-**-**-**-**-**-**-**-**-*
    开始训练模型:DecisionTree
    平均绝对误差为: 2.7711166694643907e-14
    均方误差为: 1.0551803468236254e-26
    中值绝对误差为: 0.0
    可解释方差值为: 1.0
    R方值为: 1.0
    *-**-**-**-**-**-**-**-**-**-**-**-**-**-**-*
    开始训练模型:ExtraTree
    平均绝对误差为: 2.7711166694643907e-14
    均方误差为: 1.0551803468236254e-26
    中值绝对误差为: 0.0
    可解释方差值为: 1.0
    R方值为: 1.0
    *-**-**-**-**-**-**-**-**-**-**-**-**-**-**-*
    开始训练模型:XGBoost
    平均绝对误差为: 0.5735757446289022
    均方误差为: 0.5008986120857999
    中值绝对误差为: 0.6280151367187159
    可解释方差值为: 0.9999985795409094
    R方值为: 0.9999985795408995
    *-**-**-**-**-**-**-**-**-**-**-**-**-**-**-*
    开始训练模型:RandomForest
    平均绝对误差为: 24.30998000000009
    均方误差为: 2541.844172424009
    中值绝对误差为: 8.976250000000078
    可解释方差值为: 0.9932099301805153
    R方值为: 0.9927917834076989
    *-**-**-**-**-**-**-**-**-**-**-**-**-**-**-*
    开始训练模型:AdaBoost
    平均绝对误差为: 13.087633333333354
    均方误差为: 386.4120509666666
    中值绝对误差为: 7.9691666666666805
    可解释方差值为: 0.9991155201544625
    R方值为: 0.9989042043617541
    *-**-**-**-**-**-**-**-**-**-**-**-**-**-**-*
    开始训练模型:GradientBoost
    平均绝对误差为: 0.023211721877213876
    均方误差为: 0.0014299207277676446
    中值绝对误差为: 0.011657245535729999
    可解释方差值为: 0.9999999959449999
    R方值为: 0.9999999959449999
    *-**-**-**-**-**-**-**-**-**-**-**-**-**-**-*
    开始训练模型:Bagging
    平均绝对误差为: 34.284249999999986
    均方误差为: 4470.224954049998
    中值绝对误差为: 7.295999999999992
    可解释方差值为: 0.9874093338106849
    R方值为: 0.9873232395460447
    *-**-**-**-**-**-**-**-**-**-**-**-**-**-**-*
    开始训练模型:ElasticNet
    平均绝对误差为: 294.6018692079905
    均方误差为: 118127.42764924551
    中值绝对误差为: 249.10992216728664
    可解释方差值为: 0.665011689849139
    R方值为: 0.6650116898491392
    *-**-**-**-**-**-**-**-**-**-**-**-**-**-**-*
    

    在这里插入图片描述

    注:存在严重的过拟合问题

    看一下,线性回归、XGBoost 预测值对比图

    线性回归
    在这里插入图片描述

    XGBoost

    在这里插入图片描述
    这里做法存在一定的问题,没有划分训练集和测试集,存在严重过拟合,模型失效。

    下面试一下

    线支持向量机线性回归(LinearSVR)

    from sklearn.svm import LinearSVR
    linearsvr = LinearSVR().fit(x_train,y_train)  #调用LinearSVR()函数
    # 预测,并还原结果
    data2['y_pred_linearsvr'] = linearsvr.predict(x) * std['y'] + mean['y']
    

    在这里插入图片描述
    相比其他回归模型,神经网络预测模型在这里效果更好一点

    至此。

    展开全文
  • 灰度预测模型

    千次阅读 2018-02-09 13:30:25
    灰色系统:一部分信息是已知的,另一部分信息是未知的,系统内各因素之间具有确定关系。其特点是‘少数据建模’,着重研究‘外延明确,内涵明确’的对象。灰色系统具有相对性与广泛性。指系统对于不同对象的灰度...
  • 需求预测的方法有很多,按照形式上的不同,需求预测的方法可以分为定性预测和定量预测,定性预测备件需求就是以人为观察的方法来确定备件未来需求量,而定量预测备件需求就是采用数学统计的方法科学分析备件需求量。...
  • 销售预测 1, 为什么要做销售预测 2, 做销售预测的方法论 3, 企业如何实事求是的匹配方法论 4, 如何做销售预测(通过数据挖掘等技术) 4.1 销售预测模型搭建 4.2 模型评估 4.3 模型试运行 4.4 根据实际的数据...
  • 预测性分析及常用预测方法

    万次阅读 2020-11-06 14:43:18
    预测性分析及常用的预测方法 预测的目的 数据分析最重要的目的就是从数据中寻找规律,找到能够指导我们未来实践的原则和方法,是...商业也是如此,我们能够知道影响销售的因素,并能够掌握这些因素的数据,就能够对市场
  • 10 财政收入影响因素分析及预测模型

    万次阅读 多人点赞 2017-09-15 15:48:04
    4 10 财政收入影响因素分析及预测模型 10.1背景与挖掘目标  本案例通过研究发现影响目前以及未来地方财源建设的因素,并对其进行深入分析,提出对该市地方财源优化的具体建议,供政府决策参考,同时为其他发展较...
  • 文章基于TCGA数据库和GEO数据库中的胃癌相关数据,利用单因素Cox回归分析及LASSO算法分析确定了与胃癌预后紧密相关的4个自噬基因,构建了一个预测胃癌预后的多基因联合预测模型。题目:Identification and ...
  • 一文读懂数据挖掘建模预测

    千次阅读 多人点赞 2022-06-12 21:47:36
    数据挖掘就是从大量的、完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先知道的、但又是潜在有用的信息和知识的过程。听起来比较抽象,我们举个例子。傍晚小街路面上沁出微雨后的...
  • 这是我之前工作做的一个项目import osimport pandas as pdimport numpypath = "E:/工作/负荷预测/历史负荷数据-每天" #文件夹目录files= os.listdir(path) #得到文件夹下的所有文件名称data_history = pd.DataFrame...
  • 本文分析了地方财政收入、增值税收入、营业税收入、企业所得税收入、个人所得税收入的影响因素并对未来两年采用灰色预测(GM(1,1))并以已有年度序列训练神经网络(NN),再以得到的模型预测包括未来两年在内的所有...
  • 根据国家政策、当地能源结构、能源技术发展水平以及相关碳排放指标制定合理有效的低碳能源发展规划需要以科学准确的能源环境发展预测模型为支撑,定量预估节能减排等政策效果。 采用部门分析法建立的LEAP(Long ...
  • 京东预测系统核心介绍

    千次阅读 2018-08-23 16:11:50
    1. 京东预测系统 1.1 预测系统介绍 预测系统在整个供应链体系中处在最底层并且起到一个支撑的作用,支持上层的多个决策优化系统,而这些决策优化系统利用精准的预测数据结合运筹学技术得出最优的决策,并将结果...
  • 德尔菲法——意见可靠预测方法

    千次阅读 2019-07-09 08:59:14
    专家人数的多少,根据预测课题的大小和涉及面的宽窄而定,一般超过20人。 向所有专家提出所要预测的问题及有关要求,并附上有关这个问题的所有背景材料,同时请专家提出还需要什么材料。然后,由专家做书面...
  • 在Stack Overflow上看到了这样的一个帖子,觉得挺值得学习的,这个帖子是...看完后面的回答,然后得到了一个概念,就是“分支预测”,然后针对分支预测查看了许多资料和论文,觉得收获挺多的,所以写一篇博文记录一下。
  • 考虑人口出生和死亡率,以及城市人口迁移率; 考虑气候对传播的影响。 模型结构 根据 5分室传播模型结构可知,新型冠状病毒的传播结构为: 02 冠状病毒传播流程图 其中,方框内为状态变量: S=...
  • 200多条影响谷歌SEO排名的因素大全

    万次阅读 2020-03-18 18:11:46
    您可能已经知道Google在其算法中使用了200多个排名因子... 但是他们到底是什么呢? 好吧,因为我已经列出了完整的...领域因素 页面级因素 网站级别因素 反向链接因素 用户互动 特殊的Google算法规则 品牌信...
  • 灰色预测

    千次阅读 2022-04-24 23:54:22
    灰色预测模型的最基本框架,必须要学习的有关知识点
  • 基于深度学习的短时交通流预测与优化

    千次阅读 热门讨论 2022-02-13 19:24:38
    基于深度学习的短时交通流预测与优化摘要第一章 ...基于时空关联的短时交通流预测3.1 基于时空关联LSTM的交通流预测模型框架3.2 实验设计与结果分析3.2.1 相关系数权重计算结果第四章 引入天气因素的短时交通流预测4
  • 预测系统

    千次阅读 2019-07-08 12:19:31
    预测系统在整个供应链体系中处在最底层并且起到一个支撑的作用,支持上层的多个决策优化系统,而这些决策优化系统利用精准的预测数据结合运筹学技术得出最优的决策,并将结果提供给更上层的业务执行系统...
  • 电商销量预测方法综述

    千次阅读 2021-03-08 15:01:31
    但是销量的预测受影响复杂,传统的基于统计的计量模型,比如时间序列模型等由于对现实的假设情况过多,在实际场景中应用,本文利用R语言和Python梳理并实现了当前主流的电商销量预测方法:第一类是计量统计模型,以...
  • ARMA模型结合PSO算法进行股票预测

    千次阅读 2020-09-15 18:33:53
    股票市场在我国产生以来不断地成长,逐步成为证券业乃至整个金融业必不可少的组成部分,并且受到越来越多投资者的关注,因而对股票市场走势的分析和预测都有重大的理论意义和可观的应用价值。技术分析,作为证券分析...
  • 能源预测:回顾与展望(IEEE论文)

    万次阅读 2021-01-28 23:28:14
    再生能源预测文献的增长势头强于负荷和价格预测,这在很大程度上归因于近十年来全球再生能源一体化的努力。   在每个子领域,我们已经挑选了前10个期刊,出版的大多数预测论文的子领域在过去10年。这些期刊被...
  • 预测模型| 1. : 并是表面上看到的那么简单

    千次阅读 多人点赞 2021-04-07 01:03:05
    尽管列线图被用来定义临床试验的合理性,但在这些情况下的治疗决策应遵循列线图确定的纳入标准和与治疗相关的后续获益,而仅仅是列线图估计的风险 4.6 对患者的影响 (Effect on a patient) 用一个糟糕的列线图...
  • 预测机械剩余使用寿命的深度分离卷积神经网络

    万次阅读 多人点赞 2020-01-01 01:29:26
    预测机械剩余使用寿命的深度分离卷积神经网络 摘要 深度学习因其强大的表示学习能力在数据驱动的器械设备剩余使用寿命(RUL)预测中越来越受到重视。借助深度学习技术,可以更充分地了解机器退化情况,近年来的...
  • 混沌模型时间序列预测

    千次阅读 2020-02-01 21:57:44
    一、混沌理论 混沌现象是介于确定和随机之间的一种不规则运动,是一种由确定的非线性动力学...混沌系统分为两类:(1)保守系统中不可积系统的混沌,如庞加莱证明的太阳系稳定性问题;(2)耗散系统中的混沌,如Lor...
  • 人口预测模型

    千次阅读 2021-12-12 22:21:29
    灰色系统 我们称信息完全未确定的系统为黑色系统,称信息完全确定的系统为白色系统,灰色系统就是这介于这之间,一部分信息是已知的,另一部分信息是未知的,系统内各因素间有确定的关系。 特点 用灰色数学处理...
  • 【大作业项目】二手房价格预测 Python

    万次阅读 多人点赞 2021-07-02 10:26:01
    但是有朋友选的是二手房价格预测这个主题,在经历一些变数后,最终我同时接手了人脸情感分类和二手房价格预测两个课题。 本篇适合想要学习或从事数据分析行业的朋友阅读,全程干货,建议收藏。 项目来源:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 113,724
精华内容 45,489
关键字:

不可预测因素