多开一扇门:我要「Stata+R」了!
目录
游万海,福州大学经济与管理学院副教授,主要研究领域为空间计量模型、分位数回归模型及相关实际问题的应用,已在《World Development》、《Energy Economics》、《Economics Letters》、《Finance Research Letters》、《Journal of Cleaner Product》、《Energy Sources, Part B: Economics, Planning, and Policy 》、《统计研究》等期刊发表学术论文 30 余篇,担任《Energy Economics》、《Journal of Cleaner Product》、《Economic Modelling》、《International Review of Economics & Finance》等期刊匿名审稿人。
我从 2003 年开始接触 Stata,几乎每天都用,快 20 年了。过去的一年中,我追踪因果推断、机器学习、政策学习 (Policy Learning)、模型平均化 (Model Averaging) 等领域的最新进展时,发现很多新方法的实现多以 R 语言为主。我逼自己花了 1 个多月去了解 R 语言,发现她有很多可爱之处,完全打消了我多年来对开源软件的误解。
与几位好友交流的结论是:一个软件包打天下的时代已经过去了,我们需要同时掌握多种工具,原因如下:
其一,学科之间的交叉融合。很多 Top 期刊的论文会由多位合作者协作完成,大家来自不同学校、不同专业,既有思想碰撞又可以发挥各自的比较优势。因此,一篇文章中同时使用多种软件或语言不足为奇,比如:
其二,统计和计量方法的快速发展。同样一个政策评价问题,往往有多种各有优劣的识别方法,为了确保结果的稳健性,往往需要同时使用多种方法和模型进行估计和检验。这也为实证分析工作提出了新的挑战:如何有效掌握多种方法,合理应用之?此时,同时掌握多个工具便是很好的选择。比如,就面板数据模型而言,Stata 具有绝对优势,然而,在机器学习、文本分析和可视化等方面,R 语言和 Python 明显占优。尤其是最近十年中,很多基于大数据、机器学习发展出来的因果推断方法都是由统计学家主导的,而 R 是他们的主要工具。相比之下,Stata 在这些领域的更新速度就显得过于缓慢了。
目前,Stata 官方已经提供了与 Python 的交互功能,应该很快就会提供与 R 语言的交互 (目前,外部命令 rcall
, rsource
等命令已经可以在 Stata 中执行 R 命令)。从 R 和 Python 的角度来看,二者都可以很轻松地读入 Stata 格式的数据,甚至执行 Stata 命令。
在这种大趋势下,我们的问题不再是「我该学习 哪种 软件?」,而是「我该学习 哪几种 软件?如何搭配?」
大体建议如下:
当然,这里只是列举各个工具的典型优势,至于最终选择 Stata+R 还是 Stata+Python,抑或其它组合完全取决于我们的研究领域和个人的偏好。
简言之,我们应该 掌握多种软件和语言,把更多的精力放在选题、深度思考上,而不是 重复造轮子,把精力放在复杂编程上。
对于多数已经具有 Stata 基础的同学而言,R 或 Python 很容易上手,大道至简,很多基本思想和语法都相通。即使仅仅掌握如何在 R 软件中调用各类包,学会运行命令也足为我们开启一扇新的大门。
作为一个 Stata 老用户,我为自己的「叛变行为」感到自豪,这种「反叛」意味着更开放、更包容的学习态度。
基于上述考虑,连享会在后续的课程中会尝试促进各个工具软件的融合使用。本次课程,我们邀请了有多年 R 使用和编程经验的游万海老师,帮助大家搭建起 R 语言的学习框架,以便为后续的进阶学习打好基础。
连玉君 (连享会课程负责人)
2022/9/9
作为一门免费、开源的语言,R 被广泛应用于 数据挖掘、机器学习、数据可视化、计量经济学和空间统计 等领域。正是因为其拥有众多使用者,大量的外部包被开发应用于各个领域 (18549 个,截止 2022.8.28)。这也是 为什么 R 体积小,功能却如此多 的原因所在。
R 用户群体非常庞大,且呈现逐年递增趋势,资源丰富,遇到的问题大都能找到答案,如 统计之都论坛、RWeekly、stackoverflow 等。这就带来很多益处,包括:
第一,众多新提出的计量和统计模型在 R 中可以找到相应的工具包实现。如在因果推断中,各类的 DID 衍生模型可以在 R 中方便的实现,如 多期DID、双重稳健DID、合成 DID。又如,近年来发展迅猛的模型平均化 (model averaging),最前沿的方法基本上都能在 R 中实现,参见 MA-R,以及 R pakcages。相比之下,Stata 中只有 2009 年发布的 bma
命令。
第二,与 Stata 的友好衔接。让 Stata 用户可以临时做客 R,使用 R 中独有的新命令和功能。当前,Stata 提供了 rcall
和 rsource
两个命令,使得 Stata 用户可以很方便的调用 R 代码。如输入 rcall: library(ggplot2)
即可调用 R 中的 ggplot2
包绘制精美图形。随着时间的推移,Stata 与 R 间的互动将越来越紧密,对于 Stata 用户来说,是时候掌握一些 R 的基础操作,以达到事半功倍的效果。
第三,可重复研究。也许大家都碰到这样的一个问题,好不容易等到审稿意见回来,审稿人让更新实证数据。看似简单的一条审稿意见,其实不然,包括了:运行实证结果 → 整理表格和图形 → 将图表插入到论文指定位置 ...,那么有没有一种模式能将文字和代码融为一体,使得只需要更新原始数据,相应的结果将自动更新呢?R 中的可重复研究 Reproducible Research为这问题的解决提供了可能,包含了诸如 knitr
, rmarkdown
等包。
第四,与 Stata 相对,R 在机器学习和自然语言处理方面的优势也十分明显,包括 随机森林-Random Forests、支持向量机-Support Vector Machines、递归分类算法-Recursive Partitioning and Regression Trees、神经网络与深度学习-Neural Networks and Deep Learning 等机器学习算法,以及 quanteda、tidytext、tm、topicmodels 等自然语言处理技术。
第五,相比于 Stata,在图形绘制方面,R 主要有以下几点优势:(1) 能绘制的图形丰富多样,包括 雷达图、相关矩阵图、多层网络图等,还包括了 patchwork、ggthemes 等图形修饰包;(2) 语法相对统一,比如可以通过 geom_point
, geom_line
, geom_bar
等分别绘制点图、线图和柱状图,同时图形可以通过 +
叠加多个图层,更加符合人们的画图习惯。
在此次课程中,力求通过三天课程的系统学习,实现如下目标:
其一,建立起 R 的基本架构,熟知 R 能做什么、如何做,以期为后续学习打下宽厚扎实的基础;
其二,掌握使用 R 进行实证分析的流程,从数据导入与整理、模型估计、表格图形输出,以及文档的制作。这样可以避免繁琐的图表插入,大大提高论文写作效率。
在内容安排上,基本上遵循了由浅入深,循序渐进的原则。
第 1-3 讲 依序介绍 R 的基本用法、常规数据处理、程序编写,学习这些内容对于提高实证分析能力和分析效率大有裨益。同时,也会同时列出一些常用命令的 Stata 和 R 代码,通过平行的比较,以便大家将 Stata 的经验迁移到 R 语言学习中,做到融会贯通。其实,不管是 Stata,R,或是 Python,都可以相互调用。比如,借助 PyStata,用户可以直接在 Stata 17 中执行 Python 指令;R 中最受欢迎的编辑器 RStudio 可以直接运行 Python 指令,稍加设置即可调用 Stata 指令。
第 4-5 讲 介绍文本分析处理和文本数据分析方法,包括各类文本数据的读取、匹配、抽取等,以及文本相似度、文本复杂度计算和主题模型。
第 6 讲 介绍实证分析可视化中常见图形的绘制,包括散点图、线形图、相关矩阵图、雷达图等,通过讲解,希望各位同行不仅能够自行绘制这些图形,更重要的是要了解这些图形的应用场景。
具体说明如下:
第 1 讲 介绍 R 的基本语法结构,并对数据处理过程中的关键问题进行介绍,如离群值的处理等。通过帮助文件和外部工具包的使用等讲解 R 语言的学习路径。数据处理能力的高低直接决定实证分析的效率,而对于离群值等问题的处理是否妥善会直接影响全文结果的稳健性,是多数人不够重视但却至关重要的问题。
第 2 讲 介绍 R 编程的基础知识。谈到程序撰写,很多人可能会产生恐惧心理,其实一旦掌握了最基本的原理和语法格式,程序的撰写并没有想象的那么困难。在掌握基本的命令使用和四则运算后,可以将内容分解为基本数据类型、数据结构和控制语句,然后通过函数编写将程序进行封装,使之成为可以被方便使用的命令。一旦掌握了基本的编程知识和理念,你的实证分析便开始进入「快车道」了。
第 3 讲 介绍常用的数据处理工具包,讲解常规数据处理方法,包括数据的横向合并和纵向追加、长宽数据变换、多文件操作。本部分将同时展示 R 和 Stata 用于处理数据的方法,通过对照学习,加深理解。
第 4 讲 通过具体实例介绍文本数据的清洗方法,包括各类文本数据的导入、文本匹配、文本截取等,讲解基础的正则表达式,R 在文本型数据方面的优势更为明显。
第 5 讲 介绍文本数据中涉及的常用分析方法,包括文本分词,词频统计,文本复杂度和相似度计算,主题模型以及文本数据可视化等。
第 6 讲 介绍实证分析中常用的图形绘制方法,特别是外部包 ggplot2 及其扩展包的功能实现。为什么学习 ggplot2
? 归纳起来有如下几点理由:第一,绘制的图形非常美观,这点也是最为重要的;第二,延伸功能非常强大,大量基于 ggplot2
的扩展包被开发,例如:扩展包;第三,绘图语法非常直观,实现了数据和图层的分离,真正做到图形的「可加」。利用 ggplot2
所画的图形已经出现在了 Nature,Nature Communications ,PANS 和 Cell 等期刊上。
A1. R 语言基础
R
? R vs. StataA2. R 语言程序
A3. 数据处理
dplyr
、data.table
介绍Reduce()
, do.call()
等WDI
数据整理为面板数据格式A4. 文本数据清洗
grep()、grepl()
等stringr
的文本清洗A5. 文本数据分析
A6. 实证分析可视化
plot()
ggplot2
绘图工具:散点图、线图、雷达图等ggcorrplot
patchwork
、geomtextpath
长按/扫描二维码报名:
方式 1:对公转账
方式 2:扫码支付
温馨提示: 扫码支付后,请将「付款记录」截屏发给王老师:18903405450 (微信同号)
听课软件:本次课程可以在手机,ipad ,平板以及 windows/Mac 系统的电脑上听课 (台式机除外)。
特别提示:
本次课程实行实名参与,具体要求如下:
扫码填写助教申请资料: