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

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

10.1背景与挖掘目标

  本案例通过研究发现影响目前以及未来地方财源建设的因素,并对其进行深入分析,提出对该市地方财源优化的具体建议,供政府决策参考,同时为其他发展较快的城市提供借鉴。本案例对1994-2013年财政收入以及相关因素的数据,数据来自统计年鉴。

目标:

(1) 梳理影响地方财政收入的关键特征,分析识别影响地方财政收入的关键特征的选择模型

(2) 结合(1)的分析,对某市2015年财政总收入以及各个类别收入进行预测。

10.2分析方法与过程

   本案例在已有的研究基础上运用Adaptive-Lasso变量选择方法来研究影响地方财政收入的因素。

   Lasso是在1996年提出的将参数估计与变量选择同时进行的一种正则化方法,参数估计被定义为如下:

 

10.2.1 灰色预测与神经网络的组合模型

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

主要步骤如下:

(1) 对数据进行预处理

(2) 将预处理好的数据,建立Lasso变量选择模型

(3) 在(2)的基础上建立单变量的灰色预测模型,以及人工神经网络预测模型

(4) 在(3)的预测值带入建立好的人工神经网络模型中,从而得到2014、2015年某市财政收入以及各类别收入的预测值。

10.2.2数据探索分析

影响财政收入(y)的因素很多,经查阅资料选以下因素为自变量

社会从业人数(x1)

在岗职工工资总额(x2)

社会消费品零售总额(x3)

城镇居民人均可支配收入(x4)

城镇居民人均消费性支出(x5)

年末总人口(x6)

全社会固定资产投入(x7)

地区生产总值(x8)

第一产业产值(x9)

税收(x10)

居民消费价格指数(x11)

第三产业与第二产业产值比(x12)

居民消费水平(x13)

10.2.2.1描述性分析

   我们要对数据有个大体认识,要对其进行简单的描述性统计分析

# encoding=utf-8
#
描述性分析
import pandas as pd
import numpy as np

inputfile=
'demo/data/data1.csv'
outputfile='demo/tmp/datagaikuo.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).to_csv(outputfile)#保留2位小数,并输出

 

10.2.2.2相关性分析

现在要分析一下因变量与解释变量之间的关系,它们之间是否存在相关性,下面来求一下相关系数。

#相关系数
np.round(data.corr(method='pearson'),2).to_csv('demo/tmp/datapearson.csv')

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

这种表格的形式看起来不太直观,现在我们以图的形式进行可视化,首先要对数据进行0-1标准值化处理。

#标准化处理
dataNM=(data-data.min())/(data.max()-data.min())
dataNM.to_csv(
'demo/tmp/dataNM.csv')


从图中我们可以看出x11总体呈下降趋势,与y呈负相关关系,而其他因变量都与y呈正相关关系。

10.2.3模型构建

10.2.3.1Lasso变量选择模型

#Lasso变量选择
from sklearn.linear_model import Lasso
model=Lasso()
model.fit(data.iloc[:
,0:13],data['y'])
q=model.coef_
#各特征的系数
q=pd.DataFrame(q,index=['x1','x2','x3','x4','x5','x6','x7','x8','x9','x10','x11','x12','x13']).T
np.round(q
,4).to_csv('demo/tmp/dataLasso.csv')

 

观察表格中的数据我们发现x11居民消费水平为0,也就是说该因素对财政收入的影响非常小,可以忽略不计。

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

 (1)某市财政收入预测模型

对Lasso变量选择方法识别的影响财政收入的因素建立灰色预测与神经网络的组合预测模型,其参数设置为误差精度0.0000001,学习次数为10000次,输入层神经元的个数为12(除x12之外)。

#地方财政收入灰色预测
from GM11 import GM11
outputfile=
'demo/tmp/data1_GM11.xls'
data.index=range(1994,2014)#行索引
data.loc[2014]=None
data.loc[2015]=None
l=['x1','x2','x3','x4','x5','x6','x7','x8','x9','x10','x11','x13']
for i in l:
    f=GM11(data[i][
range(1994,2014)].as_matrix())[0]
    data[i][
2014]=f(len(data)-1)
    data[i][
2015]=f(len(data))
    data[i]=data[i].round(
2)
data[l+[
'y']].to_excel(outputfile)

 


预测出了这11个变量在2014和2015年的因变量,下面就要利用神经网络预测财政收入了。

经过多次试验发现神经网络模型:输入层的节点为11,隐层节点为12,输出节点为1的效果较好,神经网络预测代码如下:

#地方财政收入神经网络预测模型
inputfile='demo/tmp/data1_GM11.xls'
outputfile='demo/tmp/revenue.xls'
modelfile='demo/tmp/1-net.model'
data=pd.read_excel(inputfile)
feature=[
'x1','x2','x3','x4','x5','x6','x7','x8','x9','x10','x11','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].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(input_dim=12,output_dim=12))
model.add(Activation(
'relu'))#激活函数
model.add(Dense(input_dim=12,output_dim=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()

 


当我们把y和y_pred放在一个图上的时候,发现它们“重合”,它们只是差别小而已……并没重合……这些差别我们可以观察具体数据看出,可见我们的模型预测效果还是ganggang滴!

 




评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值