内容提要:
1,这篇文章探讨了如何在Python里调用Stata,并通过Jupyter Notebook把结果展示出来,提高实证研究的透明性和可复制性。
2,我们以2013年Journal of Financial Economics发表的论文Peer choice in CEO compensation为例,展示了部分Stata代码在Jupyter Notebook里的使用。
1. 引言
我们的论文复制系列已经推进到了第11篇论文,在这个过程中,一个问题一直困扰着我们,那就是我们既能更好地展示程序和代码,又能把文章的过程展示给读者。回顾我们复制的论文,使用的统计软件既包括Stata,又包括Matlab,R和Python。借助合适的工具,帮助我们恰当地展示结果,打通从论文复制内容的生产到公众号的展示就是一个很有价值的问题。
在学习Python的过程中,我们发现了Jupyter Notebook这个工具。Jupyter Notebook是一个基于网页的应用,它可以帮助我们建立一个可供分享的文档,这个文档里可以包括代码、公式、图形和解释性文字。如此一来,数据清洗、数值分析、统计建模甚至机器学习的代码过程都可以清晰地展示到文档里。对于公众号来说,这些文档可以直接转换成markdown格式,这也帮助我们直接复制粘贴到公众号的后台文本框中。
2. 前期准备
基础准备:1,Anaconda(已包含了Python和Jupyter Notebook),在安装Anaconda的过程中请把路径加入到环境变量里。2,Stata(我的版本是Stata15,官网购买的正版,其他版本的Stata不确定能否被正确调用)。
第一步,我们首先在CMD窗口安装IPyStata,通行的命令是
之后需要切换到Stata路径,并注册。详细的过程可以参考如下两个链接:
第二步,打开Jupyter Notebook开始我们的编辑,第一段代码是确认我们Stata能够在Python里被正确调用:
第三步,开始Stata的数据处理过程
限于篇幅接下来的描述性统计和回归结果,我就不一一截图。
3. Jupyter Notebook的JFE论文复制结果展示
我把Jupyter Notebook编辑的文档以markdown的形式下载下来,贴到最后:
我们首先导入程序,确保Stata程序可以在Python里调用
接下来我们导入JFE论文的Stata程序和数据
展示描述性统计结果,由于前面定义的global macro在Python里失效了,所以接下来需要重新定义。
汇报相关系数的结果
汇报回归分析的结果
领取专属 10元无门槛券
私享最新 技术干货