首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

利用python输出规范的回归结果

相比Python,Stata是在实证研究中运用更为广泛的一款计量工具,它可以通过第三方命令方便快捷地输出模型回归结果,且基本可以达到出版要求,这极大减少了手工整理的工作。如esttab命令:

虽然stata在模型结果输出上功能强大,但其在面临较为复杂的数据处理时往往显得心有余而力不足。相较而言,python在数据处理上功能十分强大。举个我遇到的例子,之前有个同学手里有这样一份数据,大概结构是:每一列代表一个家庭,每一行是一个家庭成员,该同学想要统计出每个家庭兄弟姐妹各有多少个,然后写了一连串stata循环命令来问我,无奈我也才疏学浅,并没有给出有效的解决办法。但是,对熟悉python的朋友而言,这只需要一个轻松又愉快的命令就可以解决(pd.value_counts())。

在实际应用中,将这两种工具相结合无疑会相得益彰。但是,不足之处就是需要在两种工具、两种语言中来回切换。大多时候能够熟练掌握一种工具就很优秀了。有句话叫“数据处理,首选python”,对研究工作来说,问题的关键就在于python是否能够像stata一样便捷输出回归结果。遗憾的是,python专门用于统计模型处理的库statsmodels的官方示例中只给出了两种方法,即summary()和summary2()。(如图)输出结果远不能满足论文格式要求,且并没有提供导出为外部文件的功能。

既然官方没有给出相应的方法,那就只有充分发挥"自己动手丰衣足食"的精神了。我足足花了好几天时间研究summary和summary2的源代码,幸运的是在summary2的源代码里寻到了一些“惊喜”,具体来说就是是发现了两个目前存在并没有被使用的函数_col_params()和summary_col()。

根据函数说明可以知道第一个函数用途是将回归系数和标准误堆叠放置,第二个函数应该就是将多个回归结果并列放置。将具体的回归结果传入后可一目了然:如图,这不正是我们想要的吗!如此看来这个功能正在开发者们的努力中。

对此我进行了大量测试和检验,发现_col_params()函数只支持系数下显示标准误(Std.Err.),summary_col()函数默认不输出“*”号,且传入回归结果后存在除数为的异常(如图’division by zero’,本文省略了详细异常信息)。最后,根据summary2的源代码,我做了很多修改,而且添加了一些新的功能。比如系数可以选择输出标准误se、t值还是p值,可以导出为excel或者csv文件,甚至支持linearmodels库所提供的面板回归结果的输出等等。最终实现了利用python输出和stata类似的回归结果。

上述只是一个过程性说明,接下来举例说明才是本文的重点。怎么用才是至关重要的。

首先,导入函数。(在此之前需要下载修改后的文件作为一个模块放在python安装目录中的Lib\site-packages文件夹下,这样就可以直接导入了。我将其放在了百度云盘https://pan.baidu.com/s/1gTNOyXDjDbjardTozvUVWg)

我们只需要导入该函数即可,该函数是我完成所有修改之后的核心,提供了如下参数选择:

然后,用几个官方示例进行演示。这里以普通最小二乘回归(ols)、逻辑回归(logit)、混合面板回归(pooled)以及固定效应回归(fe)为例:

这样我们分别得到了四个模型的回归结果,下面利用summary_col()函数将结果进行输出,默认情形下传入回归结果即可:

将显示出如下结果:

我们也可以自定义变量顺序、标题、添加统计量信息、设置小数位数以及显示标准误'se'等:

结果将按照我们的设置显示为:

最后,我们也可以选择输出为excel或者csv文件,以excel为例,将结果输出到桌面,并命名为"sum_results":

在桌面打开该excel文件,这时需要我们手工整理的工作就大大减少了,如图:

本文的说明介绍到此结束,主要提供给希望利用python进行回归结果输出,同时不想在python和stata二者间换来换去的需求者,希望对他们有所帮助。若有错误还请见谅指正。

欢迎大家踊跃投稿,内容有关人文社会科学的即可,可以是时事热点评论、学术前沿思想介绍、各种定量研究技术和方法介绍、各种软件(stata、Python、R语言,数据可视化等等)数据处理及分析技巧,可以是网络爬虫技巧,也可以是学术论文写作与发表等相关内容。

投稿邮箱:qunxue@qunxue.net.cn

投稿要求:

1、务必原创、禁止抄袭;

2、务必准确、详细,有例子,有数据,有截图;

注意事项:

1、所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,我们会在推文里注明作者署名,并有稿酬提供

2、邮件请注明投稿,邮件名为“投稿+推文名称+作者+联系方式”;

以人文之情怀

以学术为志业

···········

近期大事儿:

重磅通知|2018定量群学全球主编年会暨青年社会学人学术冷餐会

前沿招生|2018前沿社会科学研究方法暑期高级研修班

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180712G1UDIW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券