Python数据分析案例05——影响经济增长的因素(随机森林回归)

这篇具有很好参考价值的文章主要介绍了Python数据分析案例05——影响经济增长的因素(随机森林回归)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在计量经济学里面的研究,围绕着影响GDP的因素的研究有很多,基本都是做回归,拿GDP作为被解释变量y,其他因素作为解释变量x。然后做线性回归,时间序列就做自回归,面板数据就做固定效应等等。本次案例采用机器学习里面的随机森林回归来研究影响经济增长的因素,使用Python编程。选取人口,固定资产投资,消费,净出口,税收,广义M2货币,物价指数CPI作为解释变量X。我国GDP作为被解释变量y。

数据长这个样子,从1990年到2020年

Python数据分析案例05——影响经济增长的因素(随机森林回归)

这个数据还挺热门的,需要这代码演示数据的同学可以参考:数据


首先导入包

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt 
import seaborn as sns
from sklearn.preprocessing import StandardScaler
import statsmodels.formula.api as smf
plt.rcParams ['font.sans-serif'] ='SimHei'              
plt.rcParams ['axes.unicode_minus']=False               
sns.set_style("darkgrid",{"font.sans-serif":[ 'Arial']})
#plt.rcParams['font.sans-serif'] = ['KaiTi']

读取数据,查看数据信息

spss = pd.read_excel('data.xlsx')
spss.info()
data=spss.copy()

Python数据分析案例05——影响经济增长的因素(随机森林回归)

 将时间设为索引

spss.set_index('year',inplace=True)
data.drop('year',axis=1,inplace=True)

 描述性统计

data.describe()  

Python数据分析案例05——影响经济增长的因素(随机森林回归)

计算每个变量的均值方差,分位数等

画出每个变量的随时间变化的折线图

#Sequence diagram of eight variables
column = data.columns.tolist() 
fig = plt.figure(figsize=(12,4), dpi=128) 
for i in range(8):
    plt.subplot(2,4, i + 1)  
    sns.lineplot(data=spss[column[i]],lw=1)  
    plt.ylabel(column[i], fontsize=12)
plt.tight_layout()
plt.show()

Python数据分析案例05——影响经济增长的因素(随机森林回归)

 所有变量都是单调增加,具有一致性趋势。

画所有变量的箱线图

#boxplot
column = data.columns.tolist() 
fig = plt.figure(figsize=(12,4), dpi=128)  
for i in range(8):
    plt.subplot(2,4, i + 1)  
    sns.boxplot(data=data[column[i]], orient="v",width=0.5)  
    plt.ylabel(column[i], fontsize=12)
plt.tight_layout()
plt.show()

Python数据分析案例05——影响经济增长的因素(随机森林回归)

画核密度图

#kdeplot
column = data.columns.tolist() 
fig = plt.figure(figsize=(12,4), dpi=128)  
for i in range(8):
    plt.subplot(2,4, i + 1)  
    sns.kdeplot(data=data[column[i]],color='blue',shade= True) 
    plt.ylabel(column[i], fontsize=12)
plt.tight_layout()
plt.show()

 Python数据分析案例05——影响经济增长的因素(随机森林回归)

 从箱线图和核密度图可以看出数据的分布都还比较集中,没有很多异常点。

下面画所有变量两两之间的散点图

sns.pairplot(data[column],diag_kind='kde')
plt.savefig('Scatter plot.jpg',dpi=256)

Python数据分析案例05——影响经济增长的因素(随机森林回归)

 可以看到除了cpi,几乎所有变量之间都有线性关系,人口有点像二次抛物线。

画皮尔逊相关系数热力图

#Pearson's correlation coefficient heatmap
corr = plt.figure(figsize = (10,10),dpi=128)
corr= sns.heatmap(data[column].corr(),annot=True,square=True)
plt.xticks(rotation=40)

Python数据分析案例05——影响经济增长的因素(随机森林回归)

 很多X之间都存在的高的相关性,经典的最小二乘线性模型可能存在着严重的多重共线性。


线性回归

还是做一下线性回归

import statsmodels.formula.api as smf
all_columns = "+".join(data.columns[1:])
print('x is :'+all_columns)
formula = 'GDP~' + all_columns
print('The regression equation is :'+formula)

Python数据分析案例05——影响经济增长的因素(随机森林回归)

写出回归方程后,带入ols模型

results = smf.ols(formula, data=data).fit()
results.summary()

 Python数据分析案例05——影响经济增长的因素(随机森林回归)

 可以看到整体的拟合优度为100。。在0.05的显著性水平下,人口和消费,还有净出口税收都对GDP的变动具有显著性的影响。

有些变量不显着,可能是多重共线性的原因……下面的非参数回归方法——随机森林,可以避免多重共线性的影响,还能得到变量的重要特征排序


随机森林回归

取出X和y

X=data.iloc[:,1:]
y=data.iloc[:,0]

数据标准化

# data normalization
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X)
X_s= scaler.transform(X)
X_s[:3]

Python数据分析案例05——影响经济增长的因素(随机森林回归)

 随机森林模型拟合和评价

from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor(n_estimators=5000, max_features=int(X.shape[1] / 3), random_state=0)
model.fit(X_s,y)
model.score(X_s,y)

Python数据分析案例05——影响经济增长的因素(随机森林回归)

 拟合优度也很高,99.96%

下面对比拟合值和真实值

pred = model.predict(X_s)
plt.scatter(pred, y, alpha=0.6)
w = np.linspace(min(pred), max(pred), 100)
plt.plot(w, w)
plt.xlabel('pred')
plt.ylabel('y_test')
plt.title('Comparison of GDP fitted value and true value')

Python数据分析案例05——影响经济增长的因素(随机森林回归)

 可以看到两者基本都在一条线上,说明效果很好

计算每个变量的重要性

print(model.feature_importances_)
sorted_index = model.feature_importances_.argsort()

Python数据分析案例05——影响经济增长的因素(随机森林回归)

画图可视化

plt.barh(range(X.shape[1]), model.feature_importances_[sorted_index])
plt.yticks(np.arange(X.shape[1]),X.columns[sorted_index],fontsize=14)
plt.xlabel('X Importance',fontsize=12)
plt.ylabel('covariate X',fontsize=12)
plt.title('Importance Ranking Plot of Covariate ',fontsize=15)
plt.tight_layout()

 Python数据分析案例05——影响经济增长的因素(随机森林回归)

 结论,影响GDP的变量重要性排序:
税收>M2>消费>投资>人口>出口进口量>CPI

当然实际科研中也可以选择更多的变量,随机森林不怕多重共线性,是要变量越多越好。

创作不易,看官觉得写得还不错的话点个关注和赞吧,本人会持续更新python数据分析领域的代码文章~(需要定制代码可私信)文章来源地址https://www.toymoban.com/news/detail-489199.html

到了这里,关于Python数据分析案例05——影响经济增长的因素(随机森林回归)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • python数据分析案例——天猫订单综合分析

    python数据分析案例——天猫订单综合分析

    前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 什么是数据分析 明确目的–获得数据(爬虫,现有,公开的数据)–数据预处理——数据可视化——结论 准备 环境使用: 在开始写我们的代码之前,我们要准备好运行代码的程序 Anaconda (python3.9) – 识别我们写的代码 开发工

    2024年02月03日
    浏览(19)
  • Python数据分析项目案例

    Python数据分析项目案例

    第一部分:数据类型处理 数据加载 字段含义: user_id:用户ID order_dt:购买日期 order_product:购买产品的数量 order_amount:购买金额 观察数据 查看数据的数据类型 数据中是否存储在缺失值 将order_dt转换成时间类型 查看数据的统计描述 在源数据中添加一列表示月份:astype(\\\'datetime64[M

    2024年02月11日
    浏览(18)
  • 【Python数据分析案例】——中国高票房电影分析(爬虫获取数据及分析可视化全流程)

    【Python数据分析案例】——中国高票房电影分析(爬虫获取数据及分析可视化全流程)

    案例背景 最近总看到《消失的她》票房多少多少,《孤注一掷》票房又破了多少多少… 于是我就想自己爬虫一下获取中国高票房的电影数据,然后分析一下。 数据来源于淘票票:影片总票房排行榜 (maoyan.com) 爬它就行。 代码实现 首先爬虫获取数据: 数据获取 导入包 传入网

    2024年01月20日
    浏览(55)
  • Python数据分析案例12——网飞影视剧数据分析及其可视化

    Python数据分析案例12——网飞影视剧数据分析及其可视化

    Netflix是最受欢迎的媒体和视频流平台之一。他们的平台上有超过 8000 部电影或电视节目。截至 2021 年年中,他们在全球拥有超过 2 亿订阅者。 博主看美剧也较为多,像《怪奇物语》、《性爱自修室》等高分美剧都是网飞的。 对于网飞的影视剧,我们可以分析其电影和电视剧

    2024年02月08日
    浏览(12)
  • 公司运营数据分析大屏:引领企业决策,驱动业务增长

    公司运营数据分析大屏:引领企业决策,驱动业务增长

    在数字化时代,数据已经成为企业决策的关键。为了更好地 洞察市场趋势 、 优化业务流程 、 提升运营效率 ,越来越多的企业开始引入数据分析大屏以分析公司运营状况。这一创新举措不仅改变了传统的管理模式,更引领企业迈向智能化决策的新篇章。 公司运营数据分析大

    2024年01月16日
    浏览(8)
  • Python数据分析案例30——中国高票房电影分析(爬虫获取数据及分析可视化全流程)

    Python数据分析案例30——中国高票房电影分析(爬虫获取数据及分析可视化全流程)

    最近总看到《消失的她》票房多少多少,《孤注一掷》票房又破了多少多少..... 于是我就想自己爬虫一下获取中国高票房的电影数据,然后分析一下。 数据来源于淘票票:影片总票房排行榜 (maoyan.com) 爬它就行。 不会爬虫的同学要这代码演示数据可以参考:数据   首先爬虫

    2024年02月08日
    浏览(33)
  • Python数据分析处理报告--实训小案例

    Python数据分析处理报告--实训小案例

    目录 1、实验一 1.1、题目总览 1.2、代码解析 2、实现二 2.1、题目总览 2.2、代码解析 3、实验三 3.1、题目总览 3.2、代码解析 4、实验四 3.1、题目总览 3.2、代码解析 哈喽~ 今天学习记录的是数据分析实训小案例。 就用这个案例来好好巩固一下 python 数据分析三剑客。 前期准备

    2024年02月10日
    浏览(13)
  • Python数据分析案例15——超市零售购物篮关联分析(apriori)

    Python数据分析案例15——超市零售购物篮关联分析(apriori)

    啤酒和纸尿裤的故事大多数人都听说过,纸尿裤的售卖提升了啤酒的销售额。 关联分析就是这样的作用,可以研究某种商品的售卖对另外的商品的销售起促进还是抑制的作用。 案例背景 本次案例背景是超市的零售数据,研究商品之间的关联规则。使用的自然是最经典的apr

    2023年04月15日
    浏览(12)
  • Python数据分析案例11——灰色预测法预测时间序列数据

    Python数据分析案例11——灰色预测法预测时间序列数据

    本次案例来自2022华为杯第E题,第2小问。给定了2012.01-2022.03的土壤湿度的月度数据,需要预测2022.04-2023.12的土壤湿度的月度数据。典型的时间序列预测。 传统的时间序列预测肯定是ARIMA模型,可以参考我之前的文章。Python统计学10——时间序列分析自回归模型(ARIMA) 现在流行的

    2024年02月06日
    浏览(16)
  • Python数据分析案例19——上市银行财务指标对比

    Python数据分析案例19——上市银行财务指标对比

    我代码栏目都是针对基础的python数据分析人群,比如想写个本科毕业论文,课程论文,做个简单的案例分析等。过去写的案例可能使用了过多的机器学习和深度学习方法,文科的同学看不懂,可能他们仅仅只想用python做个回归或者画个图。本期开始我会更新一些简单的案例,

    2024年02月08日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包