软件应用 | Stata 17 正式发布!
The following article is from 计量经济学及Stata应用 Author 陈强
本文转载自公众号计量经济学及Stata应用
2021年4月20日,Stata 公司正式宣布Stata 17上线啦!
Stata之所以能成为最流行的计量经济学软件,根本原因在于Stata十分贴近计量经济学的实践应用。那么,全新的Stata 17给我们带来了怎样的惊喜呢?总结起来,主要有以下十个方面,下面分别介绍:
双重差分法的官方命令
完美的表格输出
Lasso的新功能
离散选择模型的新命令
久期数据的新命令
贝叶斯计量经济学的全面升级
非参数的趋势检验
元分析的新命令
Stata与Python、Java、H2O 及 Jupyter Notebook的整合
Do文件编辑器的改进与Stata速度提升等
1. 双重差分法的官方命令
“双重差分法”(Difference-in-differences,简记DID)或许是最常用的计量方法。怎么能没有DID的Stata官方命令呢?为此,Stata 17及时地推出了DID的官方命令xtdidregress
;其中,“xt” 表示这是适用于面板数据的命令。
除了进行常规的 DID 估计,命令xtdidregress
还允许最多指定三个“分组变量”(group variables),或两个分组变量与一个时间变量,从而进行“三重差分法”(Difference-in-differences-in-differences,简记DDD)的估计。
另外,针对“重复截面数据”(repeated cross-sectional data),即所谓“准面板”(pseudo panel data),Stata 17也推出了相关的新命令didregress
,可进行类似 DID 的估计。
更重要的是,你可以用DID的官方命令,轻松地画平行趋势图啦~
2. 完美的表格输出
实证研究者经常需要将Stata的多个回归结果以表格形式输出到Word文件中。虽然早有官方命令estimates table
可完成此类任务,但比较死板;故此前Stata用户一般使用非官方命令(比如estout
或outreg
)来输出回归结果。为此,Stata 17大幅改善了原来的table
命令,使用户可轻松地以表格形式汇报回归结果(regression results)或统计特征(summary statistics)。
进一步,你可以设计回归表格的风格(styles),并应用于所创建的表格,然后将此表格输出到Word或其他形式的文件(包括PDF、HTML、LaTex、Excel、Markdown 等)。另外,你还可以使用新增的前缀(prefix)collect
,来收集Stata命令的各种估计结果。最后,Stata 17还新增了Table Builder
(表格创建器),让用户可通过点击鼠标(point-and-click)来创建表格。
3. Lasso的新功能
作为“高维回归”(high-dimensional regression)的常用工具,Stata 16已经推出了有关Lasso(Least Absolute Shrinkage and Selection Operator,即所谓 “套索估计量”)的一系列官方命令。Stata 17则提供了更多有关 Lasso 的新功能。
使用Lasso估计处理效应模型。在 Stata 16 中,可使用命令teffects
估计“处理效应”(treatment effects)模型;而命令lasso
则用于估计协变量很多的高维模型。Stata 17则将二者结合起来,其推出的新命令telasso
,可估计包含很多协变量的处理效应模型。
在Stata 17中,新增了选择项 “selection(bic)
”,可使用 “贝叶斯信息准则”(Bayesian Information Criterion,简记BIC)选择惩罚参数。而且,新增的估计后命令(postestimation command)bicplot
可以很方便地将此选择过程可视化。lasso
或elasticnet
时,可通过新增选择项 “cluster(clustvar)
” 来处理聚类数据。进一步,对于使用Lasso进行统计推断的命令,比如poregress
(表示partialing-out regress),则可使用Stata 17的新增选择项 “cluster(clustvar)
” 来得到聚类稳健的标准误(cluster-robust standard errors)。
4. 离散选择模型的新命令
离散选择模型(discrete choice model)是微观计量经济学的常用模型。在Stata 17中,增加了以下离散选择模型的新命令:
“面板多项逻辑模型”(panel multinomial logit model)。对于横截面数据的多项逻辑模型,Stata已有mlogit
命令。Stata 17新增的xtmlogit
命令则可使用面板数据估计多项逻辑模型。这无疑是Stata在离散选择模型方面的一大进步,因为此前Stata只能使用xtlogit
或xtprobit
估计面板二值选择模型。ologit
或oprobit
进行估计。在实践中,有时排序数据中最低类别所占比重很大。若将最低类别的取值记为“零”,则存在所谓“零膨胀”现象。此时可使用Stata 17的新增命令ziologit
,估计更有效率的“零膨胀排序逻辑模型”(zero-inflated ordered logit model)。
5. 久期数据的新命令
“久期数据”(duration data)常用于生物统计的 “生存分析”(survival analysis),在经济学中也有广泛用途,例如失业的持续时间,婚姻的延续时长,王朝的寿命等。久期数据常存在 “删失”(censoring)或 “归并” 问题,比如当研究结束时,有些病人可能尚未死亡;或者有些失业者还未找到工作。
Stata 17新推出的命令stintcox
,可使用Cox模型来估计一种特殊的“区间删失”(interval-censored)数据。对于区间删失数据,我们只知道事件发生于某个区间,但无法确知其发生时点;比如,只知道癌症复发于两次体检之间的时段。如果忽略久期数据存在的区间删失问题,则会导致估计偏差。
6. 贝叶斯计量经济学的全面升级
在大数据时代,由于数据日益复杂而多样,在处理有些问题时,基于频率学派的传统计量方法可能不便使用,使得贝叶斯学派的计量经济学逐渐兴起。频率学派认为待估计的参数是给定的未知数(fixed unknown parameters),而贝叶斯学派则将未知参数视为服从某个分布的随机变量,并可随时根据新的样本信息将其 “先验分布”(prior distribution)更新为 “后验分布”(posterior distribution)。
贝叶斯面板数据模型(Bayesian panel-data models)。Stata目前已有的面板命令包括xtreg
(静态面板),xtlogit
或xtprobit
(面板二值选择模型),以及xtologit
或xtoprobit
(面板排序模型)等。在 Stata 17中,如果要使用贝叶斯方法估计这些面板模型,只要在原命令之前加上 “前缀”(prefix)bayes
即可。var
来估计VAR模型,而后续命令则包括:使用fcast
进行 “动态预测”(dynamic forecast),以及使用irf
估计 “脉冲响应函数”(impulse response function,简记 IRF)与 “预测误差方差分解”(forecast error variance decomposition,简记 FEVD)。
在Stata 17中,则可使用命令“bayes: var
”(即在命令var
之前加上前缀bayes
)估计贝叶斯的 VAR 模型。bayesfcast
进行动态预测;
其次,经典的VAR模型使用大样本理论进行统计推断与预测,需要假设估计量服从渐近正态分布,在小样本中不易满足。而贝叶斯方法则不使用大样本理论,也无须渐近正态的假设,故更适用于小样本。
贝叶斯多层模型(Bayesian multilevel models)。Stata 17新推出的bayesmh
命令可以估计一系列的贝叶斯多层模型,包含“单变量”(univariate)或“多变量”(multivariate)的线性与非线性多层模型(linear and nonlinear multilevel models),乃至面板的生存时间模型(joint longitudinal and survival-time models)以及结构方程之类的模型(SEM-type models)等。
贝叶斯线性与非线性DSGE模型(Bayesian linear and nonlinear DSGE models)。“动态随机一般均衡”(Dynamic Stochastic General Equilibrium,简记DSGE)模型是宏观经济学的主流模型。在Stata 16 中,可使用命令dsge
与dsgenl
分别估计线性与非线性的 DSGE 模型。
在Stata 17中,只要在命令dsge
与dsgenl
之前加上前缀bayes
,即可估计相应的线性或非线性的贝叶斯DSGE模型。可供用户选用的 “先验分布”(prior distribution)多达30以上,并可进行贝叶斯脉冲响应分析(Bayesian IRF analysis),区间假设检验(interval hypothesis testing),以及使用贝叶斯因子(Bayesian factors)来比较模型等。
7. 非参数的趋势检验
有时样本数据中存在分组(比如,分为3组),且这些分组有天然的排序(比如,记为1,2,3组),即所谓 “排序分组”(ordered groups)。在这种排序分组的数据中,经常希望检验某个变量在此分组排序中(比如,第1-3组),是否存在某种趋势,比如此变量的取值倾向于越来越大,即所谓 “tests for trend across ordered group”。
为此,可使用Stata已有命令nptrend
,进行非参数的Cuzick秩检验(Cuzick test using ranks)。而Stata 17的最新版nptrend
命令,则在Cuzick秩检验之外,新增了三个非参数检验,即“Cochran-Armitage test”,“Jonckheere-Terpstra test” 与“linear-by-linear trend test”,使得命令nptrend
的功能大大增强。
8. 元分析的新命令
“元分析”(meta-analysis)将多个类似的研究结果综合在一起。比如,针对某个疫苗的有效性(vaccine efficacy),在世界各地进行了多个实验,如何将每个实验所得的疫苗有效性指标,通过加权平均得到统一的度量。Stata 17将Stata的元分析功能作了进一步的提升。
多维元分析(Multivariate meta-analysis)。在将多个研究结果综合在一起时,其中的每个研究可能同时汇报 “多个效应规模”(multiple effect sizes),而这些效应之间可能存在相关性。若使用Stata既有的meta
命令,则会忽略这种相关性。Stata 17的新增命令meta mvregress
可进行多维元分析,并处理这种相关性。meta galbraithplot
,可以画元分析的 “加尔布雷斯图”(Galbraith plots)。此图可用于评估不同研究之间的异质性(assessing heterogeneity of the studies),并发现潜在的极端值(potential outliers)。meta summarize
或meta forestplot
进行元分析时,可使用新增的选择项leaveoneout
来进行留一元分析。
9. Stata与Python、Java、H2O及Jupyter Notebook的整合
在大数据时代,Stata也在加快与主流软件平台的整合,为用户提供更多的增值服务。这在Stata 17的此次升级中体现尤其突出。
与 Python 的整合(Python integration)。Python已是炙手可热的主流计算机语言。为此,Stata 16专门提供了一个与Python的接口,让用户在熟悉的Stata界面下调用Python,并在Stata中显示运行结果。Stata 17则更进一步,推出了新的Python包(Python package)pystata
,使得用户可在Python 中方便地调用Stata。Stata 17还引入了一个新概念 “PyStata” ,包括 Stata与Python交互的所有方式。
对于JDBC数据交换格式的支持(Support for JDBC)。JDBC(Java Database Connectivity)是一个在不同程序与数据库之间交换数据的跨平台标准(a cross-platform standard for exchanging data between programs and databases)。在Stata 17中,通过支持JDBC,使得 Stata用户可从一些最流行的数据库导入数据,包括Oracle、MySQL、AmazonRedShift、Snowflake、Microsoft SQL Server等。
与H2O的整合(H2O integration)。H2O是一款流行的机器学习软件平台。在Stata 17中,你可以连接并调用H2O的机器学习算法。这无疑为Stata用户打开了另外一扇通往机器学习的窗口!
在Jupyter Notebook中使用Stata(Jupyter Notebook with Stata)。Jupyter Notebook是一款基于网页的流行“集成开发环境”(integrated development environment,简记 IDE),尤其方便展示代码、公式、文字与可视化。在Stata 17中,作为PyStata的一部分(依赖于 Python 包pystata
),你可以从 Jupyter Notebook调用 Stata与Mata(Stata的矩阵语言)。这意味着,你可以在同一环境中整合Python与Stata的功能,使得你的工作更加可复制(reproducible)且易于分享。
10. Do文件编辑器的改进与Stata速度提升等
Do文件编辑器的改进(Do-file Editor improvements)。随着编程的重要性日益提高,Stata 16在Do文件编辑器中加入了 “自动填写完成”(autocompletion)与 “语法高亮”(syntax highlighting)的功能。Stata 17又将Do文件编辑器的功能进一步提升。
在Stata 17的Do文件编辑器中,可通过设置 “bookmarks
”(书签)而在一个较长的do文件中迅速跳至想要编辑的部分。Stata 17的Do文件编辑器还新增了“navigation control
”(导航),其中罗列所有的书签及其标签(bookmarks and their labels),以该Do文件中的全部“程序”(programs)。sort
与collapse
的算法,使之更为快捷。另外,Stata 17也提升了命令mixed
(用于估计多层混合效应模型,即 multilevel mixed-effects models)的运行速度。Datetime duration
(计算持续时间),Datetime relative dates
(计算相对日期,比如下个生日的日期),以及Datetime
(从日期中提取不同的成分)。这些新函数还会自动考虑闰年(leap years)、闰日(leap days)与闰秒(leap seconds)的因素。
点击搜索你感兴趣的内容吧
往期推荐
数据Seminar
这里是大数据、分析技术与学术研究的三叉路口
欢迎扫描👇二维码添加关注