2021年4月20日,Stata 公司正式宣布Stata 17上线啦!
或许计量小伙伴们还没把Stata 16捂热,Stata公司就地推出了Stata 17。工欲善其事,必先利其器。而Stata公司正如“有匪君子,如切如磋,如琢如磨”,把Stata这把利器打造得日益精良与称手。
Stata之所以能成为热门的计量经济学软件,根本原因在于Stata十分贴近计量经济学的实践应用。那么,全新的Stata 17给我们带来了怎样的惊喜呢?总结起来,主要有以下十个方面,下面分别介绍:
1、双重差分法的官方命令
2、完美的表格输出
3、Lasso的新功能
4、离散选择模型的新命令
5、久期数据的新命令
6、贝叶斯计量经济学的全面升级
7、非参数的趋势检验
8、元分析的新命令
9、Stata与Python、Java、H2O 及 Jupyter Notebook的整合
10、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,可估计包含很多协变量的处理效应模型。
使用 BIC 选择Lasso惩罚参数。作为一种“惩罚回归”(penalized regression),在进行Lasso估计时,需要选择惩罚参数(penalty parameter)。在Stata 16中,可使用交叉验证(cross-validation)、适应性方法(adaptive method)或代入法(plugin)来选择惩罚参数。
在Stata 17中,新增了选择项 “selection(bic)”,可使用 “贝叶斯信息准则”(Bayesian Information Criterion,简记BIC)选择惩罚参数。而且,新增的估计后命令(postestimation command)bicplot可以很方便地将此选择过程可视化。
使用Lasso处理聚类数据。对于“聚类数据”(cluster data),由于每个聚类中观测值存在自相关,故通常的Lasso估计可能导致偏差。在Stata 17中,在使用命令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估计面板二值选择模型。
·“零膨胀排序逻辑模型”(zero-inflated ordered logit model)。对于排序数据(ordered data),此前可使用Stata命令ologit或oprobit进行估计。在实践中,有时排序数据中ZUI低类别所占比重很大。若将ZUI低类别的取值记为“零”,则存在所谓“零膨胀”现象。此时可使用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)。
Stata 17将Stata中原有的贝叶斯统计学与计量经济学进行了全面升级。
贝叶斯面板数据模型(Bayesian panel-data models)。Stata目前已有的面板命令包括xtreg(静态面板),xtlogit或xtprobit(面板二值选择模型),以及xtologit或xtoprobit(面板排序模型)等。在 Stata 17中,如果要使用贝叶斯方法估计这些面板模型,只要在原命令之前加上 “前缀”(prefix)bayes即可。
贝叶斯向量自回归模型(Bayesian VAR models)。“向量自回归”(Vector Autoregression,简记VAR)是常见的时间序列模型。在已有的Stata中,可用命令var来估计VAR模型,而后续命令则包括:使用fcast进行 “动态预测”(dynamic forecast),以及使用irf估计 “脉冲响应函数”(impulse response function,简记 IRF)与 “预测误差方差分解”(forecast error variance decomposition,简记 FEVD)。
在Stata 17中,则可使用命令“bayes: var”(即在命令var之前加上前缀bayes)估计贝叶斯的 VAR 模型。
然后,使用bayesfcast进行动态预测;
而脉冲响应函数(IRF)与预测误差方差分解(FEVD)也可类似地得到。
其次,经典的VAR模型使用大样本理论进行统计推断与预测,需要假设估计量服从渐近正态分布,在小样本中不易满足。而贝叶斯方法则不使用大样本理论,也无须渐近正态的假设,故更适用于小样本。
使用贝叶斯方法估计VAR模型有两大好处。首先,VAR模型通常包含较多参数,若样本较小,则估计结果不稳定。而贝叶斯方法由于较易“整合先验信息”(incorporating prior information),故在用小样本估计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的ZUI新版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可进行多维元分析,并处理这种相关性。
加尔布雷斯图(Galbraith plots)。Stata 17还新增了命令meta galbraithplot,可以画元分析的 “加尔布雷斯图”(Galbraith plots)。此图可用于评估不同研究之间的异质性(assessing heterogeneity of the studies),并发现潜在的极端值(potential outliers)。
留一元分析(Leave-one-out meta analysis)。Stata 17新增了 “留一元分析”(Leave-one-out meta-analysis)的功能。所谓“留一元分析”,就是在进行元分析时,每次均留出一个研究(即omitted study,不放在样本中),以考察元分析结果的稳健性;比如,ZUI终结果是否过度依赖于某个研究。在使用Stata命令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交互的所有方式。
与 Java 的整合(Java integration)。Java是一种应用广泛的跨平台编程语言。在Stata 17中,你可以十分方便地在Stata程序中嵌入并执行 Java 代码。
对于JDBC数据交换格式的支持(Support for JDBC)。JDBC(Java Database Connectivity)是一个在不同程序与数据库之间交换数据的跨平台标准(a cross-platform standard for exchanging data between programs and databases)。在Stata 17中,通过支持JDBC,使得 Stata用户可从一些ZUI流行的数据库导入数据,包括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)。
Stata的速度提升(Faster Stata)。在大数据时代,基础算法的速度越来越重要。为此,Stata 17更新了命令sort与collapse的算法,使之更为快捷。另外,Stata 17也提升了命令mixed(用于估计多层混合效应模型,即 multilevel mixed-effects models)的运行速度。
使用Intel Math Kernel Library(MKL)提升速度。Stata 17引入了Intel Math Kernel Library(MKL),适用于所有Intel或AMD的64位计算机,从而可调用深度优化(deeply optimized)的LAPACK(Linear Algebra PACKage)线性代数包。这将使得Stata与Mata的底层计算速度进一步提升,而Stata用户无须作任何事情即可享用。
处理日期与时间的新函数(New functions for dates and times)。Stata 17 引入了方便处理日期与时间的新函数,包括Datetime duration(计算持续时间),Datetime relative dates(计算相对日期,比如下个生日的日期),以及Datetime(从日期中提取不同的成分)。这些新函数还会自动考虑闰年(leap years)、闰日(leap days)与闰秒(leap seconds)的因素。
总之,Stata 17是一次令人激动的重大升级,不仅有贝叶斯计量经济学的高歌猛进,与主流计算机语言平台的深度整合,更便于编程的Do文件编辑器,而且更为贴近计量实战的需求(DID,表格输出,离散选择等)。显然,在可预见的将来,Stata 依然会是经管社科的首.选计量与统计软件。
如需正版 Stata 17,请咨询Stata软件官方授权经销商及合作伙伴:北京友万信息科技有限公司(www.uone-tech.cn),希望能为Stata中国用户提供更多服务与支持,联系人:徐经理,Tel/Wechat:18610597626。