回归算法python_python可以做回归分析吗

回归算法python_python可以做回归分析吗许文立,xuweny87@163.com许坤,中国人民大学,kunxu2014@126.com线性回归-Python:AJR(2001,AER)概述线性回归是分析两个或更多变量之间关系的标准工具本讲中,我们将利用Pyt

许文立,xuweny87@163.com

许坤,中国人民大学,kunxu2014@126.com

线性回归-Python:AJR(2001,AER)

概述

线性回归是分析两个或更多变量之间关系的标准工具

本讲中,我们将利用Python的statsmodels包来估计、理解和可视化线性回归模型

我们讨论一下主题

一元和多元回归

可视化

内生性和遗漏变量偏误

二阶段最小二乘

作为示例,我们会重复Acemoglu,Johnson and Robinson(2001,AER)的经典文章的结果

该论文可以从这里下载(https://economics.mit.edu/files/4123)

(1)在这篇文章中,作者强调制度对经济发展对的影响

(2)主要的贡献是利用殖民死亡率作为制度差异的外生变化的来源

(3)这种变化决定制度是否引起了更多的经济增长,而不是别的方式

预备知识

本讲稿需要大家熟悉计量基础

一元线性回归

AJR(2001)希望判断制度差异是否能解释观察到的经济结果

我们如何测量制度差异和经济结果呢?

在他们的论文中,

经济产出以1995年人均GDP来近似,且用汇率调整

制度差异以1985-95年掠夺风险的法律保护均值来近似,该指数由Political Risk Serivces Group(https://www.prsgroup.com/)构建

这些变量和其他数据可以在Acemoglu的主页下载(https://economics.mit.edu/faculty/acemoglu/data/ajr2001)

我们将利用pandas的.read_stata()函数来读取.dta中的数据

importpandasaspd

df1=pd.read_stata(‘https://github.com/QuantEcon/QuantEcon.lectures.code/raw/

master/ols/maketable1.dta’)

df1.head()

我们用散点图来看看人均GDP和掠夺风险保护指数之间是否存在明显的关系

importmatplotlib.pyplotasplt

plt.style.use(‘seaborn’)

df1.plot(x=’avexpr’,y=’logpgp95′,kind=’scatter’)

plt.show()

fc110435f9bd9e1316dfb8f02d1efd8f.png

这幅图显示出了法律保护与人均GDP对数之间存在很强的正向关系

特别地,如果更严格的法律保护是制度质量的一个指标,那么,更好的制度可能与更好经济结果正向关

给定这幅散点图,选择一个线性模型来描述这个关系

我们把模型写成

logpgp95i=β0+β1avexpri+ui

其中,

β0是线性回归线与y轴的截距

β1线性回归线的斜率,表示法律保护对人均GDP的边际效应

ui是随机误差项(由于遗漏因素而引起的线性趋势的偏离)

直观上看,线性模型就是要选择一条直线来最好地拟合数据(例如AJR2001中的图2)

93645c7e7a595301d1d77c55117bdf25.png

8d6dfa2d7c617465dda7e6755469bc79.png

估计beta最常用的技术是OLS

OLS模型就是要找到参数使得残差平方和最小化:

ab41e4c8882bf3476dab65ec3aa14ec0.png

其中,ui是因变量的观测值与预测值之差

为了估计常数项beta0,我们需要在数据集中增加一列1的数据

22ff8c7a3a9f0e2e37643e507f0b65ce.png

现在,我们可以利用OLS函数在statsmodels中来构建我们的模型

4dc818d25b6b9c9c8ade111543771fd4.png

至此,我们创建了模型

我们需要用.fit()来获得beta0和beta1的参数估计值

1c541b746a8dcd6f3156098aee79d6a3.png

我们现在把拟合回归模型储存在results

为了看看OLS的回归结果,我们调用.summary()方法

注意,一个观测值从原文的数据中删除了,因此,系数稍微有点差异

f4b4402ad13d3aa768f138202b8b18c6.png

从我们的结果可以看到

截距beta0=4.63

斜率beta1=0.53

Beta1的估计值为正意味着制度质量对经济结果有正向关系

Beta1的p值为0.000说明制度对GDP的效应是显著的

R2的值0.611说明,人均GDP对数方差的61%能被发了保护所解释

利用我们的估计参数,我们可以把回归关系写成

logpgp95ˆi=4.63+0.53avexpri

这个方程描述的是对数据最优拟合的直线

我们也能利用给定的法律保护水平来预测人均GDP对数值

例如,对一个国家来说,其制度值为7.07,我们就能预测得出1995年的人均GDP对数为8.38

3ce717319480cf1f0d1d626d394e3927.png

获得上述预测结果的一种更加方面的方式是利用.predict(),并设立constant=1c

o

n

s

t

a

n

t

=

1 andavexpri=mean_expr

3a1386c3f947710876e82865dec89453.png

我们能调用来获得每一个avexpri对应的logpgp95i预测值

观测值与预测值能作出图来进行比较

430de1cd7c25970bff48caae0ec86526.png

ab519f340ceb769df0e7563ceacb1d23.png

多远回归

上面只解释了影响经济绩效的制度因素,但是可以肯定的是还有许多影响经济的因素

影响loggdp95i的其它变量会引起遗漏变量偏误

我们能把一元回归扩展到多元回归

AJR(2001)考虑的其它因素有

气候对经济结果的影响;维度被用来作为近似指标

同时影响经济绩效和制度的差异,例如文化差异,历史差异等等;这些利用哑变量(虚拟变量)来控制

我们用数据maketable2.dta来估计多远回归的结果,正如论文中表2

dbcf28ec5326a498c70b1c228f895f47.png

我们得到拟合的模型,然后用summary_col来把结果展示在一张表中(正如论文中一样)

828280bc8bb324f8e86a1305685139ed.png

aefb5cd22e3dfc53f06054dd75d160bd.png

内生性

正如AJR(2001)讨论的,OLS模型会遇到内生性问题,这会导致估计偏误和非一致性。

也就是说,制度和经济结果之间有双边关系:

越富有的国家可能会更偏好更好的制度

影响收入的变量可能与制度差异有关

指标的构建可能存在偏误;分析师可能会出现偏误,收入越高,制度越好

为了处理内生性,我们能用二阶导最小二乘(2SLS)回归,它是OLS的一种扩展

该方法要求用一个变量来代替内生变量avexpri,

该变量

与avexpri相关

不与误差项相关

新的回归因子成为工具或工具变量,它们旨在消除制度差异的内生性

AJR(2001)的主要贡献是殖民地死亡率来作为制度差异的工具变量

他们假设,殖民地死亡率越高,那么,更加具有掠夺性制度就会建立(越少的法律保护),而且这些制度至今仍存在

01ca557b0cda3031ac5a4699400640b2.png

e7a6e7136af3f2aeb7d06375031501c4.png

如果17世纪-19世纪的死亡率直接影响目前的GDP,那么,第二个条件就不满足

例如,殖民死亡率可能与目前的疾病环境有关,其又影响经济绩效

AJR(2001)认为这是不可能的,因为:

死亡率是由于疟疾和黄热病引起的,不太可能影响当地居民

非洲或者印度居民的疾病负担可能不会高于平均水平,这是由于相对更高的人口密度导致的

因此,我么有一个有效的工具变量,我们能用2SLS回归哎获得一致无偏的参数估计

一阶段

一阶段就是内生变量对工具变量的回归

工具变量是一些列外生变量的集合

例如,我们的工具变量是常数和殖民死亡率logem4i

因此,我估计一阶段回归为

avexpri=δ0+δ1logem4i+vi

所需数据在maketable4.dta中,

d84f37e40f1d8008fb845c5c87c71eaa.png

511e8abab2bff0adc6cd019bb55c275e.png

二阶段

我们用.predict()来得到avexpri预测值

然后,用预测值取代内生变量avexpri

第二阶段的回归为

23bcb5a435788a23c95fb2ca25e832cd.png

a2689218e66d5ba0de101b17785fb079.png

62385ea4fb023925dfc4066d1cafac1d.png

第二阶段的回归结果才给我们提供了一个无偏、一致的估计

这个结果说明,工具变量回归结果比OSL结果更强列支持制度对经济发展的正向效应

我们能用linearmodel(https://github.com/bashtage/linearmodels)包一步估计出2SLS回归

要安装这个包,你需要在命令行运行pipinstalllinearmodels

5f7b836bfad8f2d62050556aa0d682f3.png

注意,当用IV2SLS时,外生和工具变量已经分离

假定我们现在得到一致、无偏估计,我们就能推断制度差异能解释国家之间的收入差异

AJR(2001)用0.94的边际效应来计算智利和尼日尼亚之间的制度差异所引起的7倍收入差异,强调制度在经济发展中的重要性。

总结

我们已经展示了statsmodels和linearmodels中的基本OLS和2SLS回归

如果你熟悉R,你也刻意用formula interface(http://www.statsmodels.org/dev/example_formulas.html)来调用statsmodels,或者考虑用r2py(https://rpy2.bitbucket.io/)来调用R

今天的文章回归算法python_python可以做回归分析吗分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/89159.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注