2025年4月8日,Stata公司正式宣布Stata 19上线啦!或许计量小伙伴们还没把Stata 18捂热,Stata公司就推出了功能更为强大的Stata 19。工欲善其事,必先利其器。Stata公司正如“有匪君子,如切如磋,如琢如磨”,将Stata利器打造得日益精良与强大。
Stata之所以能成为流行的计量经济学软件,根本原因在于Stata十分贴近计量经济学的实践应用。此次Stata 19的全新升级,一如既往地切中了时下实证研究的热点与痛点。总结起来,主要有以下六大方面更新,下面将分别介绍:
1、机器学习(随机森林,梯度提升法)2、面板数据(高维固定效应,相关随机效应,面板VAR)3、因果推断(条件平均处理效应,控制函数法,弱工具变量稳健推断等)4、贝叶斯方法(贝叶斯变量选择、分位数回归、自助法)5、其他计量方法(久期模型,相关系数的元分析等)6、Stata基础功能升级(Do文件编辑器,画图,制表等)
1、机器学习
自从Stata 16引入了拉索估计量(lasso),计量小伙伴们一直在期待Stata官方命令能引入另一类常用的机器学习方法,即基于决策树(decision trees)的集成学习方法(ensemble learning),包括随机森林(random forest)与梯度提升法(gradient boosting machine)。Stata 19让我们的梦想成真了!
Stata 19提供了一套新的h2oml命令,可轻松地接入开源的大数据机器学习平台H2O,针对回归(regression)或分类(classification)问题使用随机森林或梯度提升法。H2O使得机器学习变得更加容易,有时称为AutoML。我们直接上例子吧!
在Stata中初始化(initiate)H2O:
. h2o init
将Stata内存中的当前(current)数据集导入H2O,并记为“dataframe”:
. _h2oframe put, current into(dataframe)
针对二分类问题(binary classification),进行梯度提升法的估计,并自动选择有关决策树数目(number of trees)与学习率(learning rate)的zui优超参数(hyperparameters):
. h2oml gbbinclass response predictors, ntrees(20(10)200) lrate(0.1(0.1)1)
其中,gbbinclass表示“gradient boosting binary classification”,response为响应变量(即被解释变量),predictors为预测变量(即解释变量)。选择项“ntrees(20(10)200) ”表示从{20, 30,...,200}中选择zui优的决策树数目,而“lrate(0.1(0.1)1)”表示从{0.1, 0.2,...,1}中选择zui优的学习率。
画变量重要性图(variable importance plot):
. h2omlgraph varimp
使用已估计模型,进行预测:
. _h2oframe change newdata
. h20mlpredict outcome_pred
2、面板数据
Stata 19引入了有关面板数据的若干新命令或选择项,包括高维固定效应(high dimensional FE)、相关随机效应(correlated random effects)、面板向量自回归(panel VAR),给用户带来了强大的新功能与便利。
2.1 高维固定效应
不少计量小伙伴们知道用于估计高维固定效应(high-dimensional fixed effects)的非官方Stata命令reghdfe。这次Stata 19将其相应功能纳入了官方命令(无须额外命令,仅新增了一个选择项),使得操作更为简便可靠!
例如,在估计面板固定效应模型时,假设我们还想额外地控制三个分类变量(categorical variables)z1, z2与z3,只要在常规命令加上absorb()的选择项即可:
. xtreg y x, fe absorb(z1 z2 z3)
类似地,我们在进行二阶段zui小二乘法(2SLS)估计时,也可以使用absorb()的选择项:
. ivregress 2sls y1 x1 (y2 = x2), absorb(z1 z2 z3)
这真的太方便啦!
2.2 相关随机效应
静态面板的两个常用模型为随机效应(random effects,简记RE)与固定效应(fixed effects,简记FE)。然而,二者均有缺点。随机效应模型不够稳健,如果解释变量与个体效应相关,则得不到一致估计。另一方面,虽然固定效应模型较为稳健,但无法估计非时变(time-invariant)变量的系数。为此,Stata 19推出了“相关随机效应”(correlated random effects,简记CRE),可以兼顾二者的优点。
CRE模型允许解释变量与个体效应相关,且时变(time-varying)变量的系数估计值与FE完全相同,故本质上为FE模型。在算法上,CRE估计量将时变变量的组平均值加入混合回归中,故可视为一种控制函数法(通过时变变量的组平均值来控制遗漏变量)。由于CRE未做组内离差变换,故也可以估计出非时变变量的系数,这是CRE的优点。以数据集nlswork为例,可输入如下命令:
. webuse nlswork
. xtreg ln_wage tenure age i.race, cre vce(cluster idcode)
其中,选择项“CRE”表示相关随机效应。所得回归结果参见下图。
在该回归结果的zui后一行,提供了蒙德拉克设定检验(Mundlak specification test)的结果,强烈拒绝RE的原假设,而支持CRE模型。另外,该检验也可以在估计完RE或FE模型后单独使用,例如:
. quietly xtreg ln_wage tenure age i.race, vce(cluster idcode)
. estat mundlak
蒙德拉克设定检验的作用类似于豪斯曼检验(Hausman test),但前者的优点是可直接使用聚类稳健标准误,且只要作一个回归即可(豪斯曼检验需要作两个回归)。检验结果显示,强烈拒绝RE的原假设,而支持FE与CRE的替代假设。
2.3 面板向量自回归
向量自回归(vector autoregressoin,简记VAR)是常见的时间序列模型,但由于VAR模型的待估参数较多,故一般需要较长的时间维度。面板向量自回归(panel vector autogression,简记Panel VAR)将VAR模型推广到面板数据中。面板VAR模型既包含个体固定效应,也包括被解释变量的滞后项,故可视为动态面板模型(dynamic panel-data model)与VAR模型的结合。相应地,面板VAR模型的估计方法类似于动态面板,主要使用广义矩估计(generalized method of moment,简记GMM)。其渐近理论要求横截面单位的数量趋向无穷大,故适用于时间维度较短的短面板。
以瑞典政府开支数据集swedishgov为例,可输入如下命令:
. webuse swedishgov.dta
. xtvar grants revenues expenditures, lags(2)
其中,“xtvar, lag(2)”表示将被解释变量滞后二阶进行面板VAR估计。
在估计面板VAR模型后,还可使用命令vargranger进行格兰杰因果检验,并使用irf系列的命令估计脉冲响应函数,并画脉冲响应图;在Stata操作上非常类似于VAR模型。
3、因果推断
因果推断始终是实证研究的核心方法。Stata 19在因果推断方面的功能也进一步加强,新推出的方法包括条件平均处理效应(CATE)以及有关工具变量法的一些新方法。
3.1 条件平均处理效应
因果推断关注的对象一般为全样本的平均处理效应(average treatment effect,简记ATE)或处理组平均处理效应(average treatment effect on the treated,简记ATT或ATET)。然而,不同个体的处理效应很可能存在异质性,而研究者有时感兴趣,异质性处理效应如何随着个体特征而变。例如,电商平台可能关心价格折扣如何影响消费者行为,而价格折扣的处理效应可能依赖于消费者的年龄与收入。
为此,Stata 19推出了全新的cate命令,用于估计“条件平均处理效应”(conditional average treatment effect,简记CATE),即在给定某种个体特征条件下的平均处理效应。命令cate可以估计三种不同类型的CATE,包括“个体平均处理效应”(individualized average treatment effect),“分组平均处理效应”(group average treatment effect)及“排序分组平均处理效应”(sorted group average treatment effect)。除了估计外,cate系列命令还可进行预测、可视化及统计推断。
Stata 19的cate命令功能强大、灵活而稳健。例如,在对结果回归(outcome regression)与处理效应模型(treatment models)建模时,可使用参数模型(parametric models),拉索估计量(lasso)或广义随机森林(generalized random forest;有时也称为“诚实森林”,即honest forest)。该命令提供了两个稳健估计量,即“偏效应过滤”(partialling out)与“增强逆概加权”(augmented inverse probability weighting),其中后者为双稳健估计量(doubly robust estimator);并使用“交叉拟合”(cross-fitting)以避免过拟合(overfitting)。
3.2 控制函数法
传统的工具变量法一般使用二阶段zui小二乘法(two-stage least squares,简记2SLS)。2SLS之所以成立,是因为第yi阶段回归为线性模型,而线性回归的OLS估计具有正交性。这也意味着,2SLS一般无法推广到非线性模型中;例如,当内生变量为虚拟变量时,第yi阶段回归为Probit模型。
为此,Stata 19新推出了更为灵活的“控制函数法”(control function approach,简记CF),不仅可用于线性模型,而且也适用于非线性模型,例如第yi阶段回归为Probit。假设y1为被解释变量,x为外生解释变量,y2为内生解释变量,而z1与z2为工具变量,则传统的2SLS命令为
. ivregress 2sls y1 x (y2 = z1 z2)
若使用控制函数法,可调用Stata 19的cfregress命令:
. cfregress y1 x (y2 = z1 z2)
事实上,由于这是线性回归,故以上两个命令语句的回归结果完全相同(系数估计值与标准误均相同);尽管二者的算法不同。在算法上,二者的第yi阶段回归相同,但第二阶段回归则不同(尽管zui终结果在数值上相等):2SLS将第yi阶段回归的拟合值代入原方程,替代内生解释变量进行OLS回归;而CF则将第yi阶段回归的残差作为遗漏变量加入原方程,进行OLS回归。
控制函数法的优势在于,第yi阶段回归也可以使用非线性回归。例如,若内生解释变量y2为虚拟变量,则可使用Probit进行第yi阶段回归:
. cfregress y1 x (y2 = z1 z2,probit)
如果被解释变量y1为虚拟变量,则使用2SLS将无视y1服从两点分布的事实,而强行拟合线性模型。此时,可使用Stata 19新推出的cfprobit命令,使用控制函数法进行IV估计:
. cfprobit y1 x (y2 = z1 z2)
如果内生解释变量y2也为虚拟变量,则可输入命令
. cfprobit y1 x (y2 = z1 z2,probit)
3.3 弱工具变量稳健推断
使用工具变量法进行因果推断一般要求强工具变量。在弱工具变量(weak instrument)的情况下,2SLS估计量变得不可靠,即使在大样本下。这是因为2SLS估计量其实是一个比值(ratio),而在弱工具变量的情况下,该比值的分母接近于0,导致统计推断失效。
为此,Stata 19推出了安德森-鲁宾检验(Anderson-Rubin test),不再使用上述比值进行统计推断,故即使在弱工具变量的情况下依然稳健。例如:
. ivregress 2sls y1 x (y2 = z1 z2)
. estat weakrobust
此估计后命令(postestimation command)“estat weakrobust”也可以在命令ivregress gmm与ivregress liml之后使用。
3.4 时间序列的工具变量法
Stata 19专门推出了针对时间序列的工具变量法,包括通过工具变量法估计结构VAR模型,以及使用工具变量法估计脉冲响应函数。例如:
使用广义矩估计(GMM)估计结构向量自回归(Structural VAR,简记SVAR)模型:
. ivsvar gmm y1 y2 (shock = z1 z2)
在使用“局部投影”(local projection),通过脉冲响应函数(impulse response function,简记IRF)估计动态因果效应(dynamic causal effects)时,以工具变量法克服潜在的内生性:
. ivlpirf y, endogenous(x = iv)
其中,y为响应变量(response variable),x为内生的脉冲变量(impulse variable),而iv为工具变量。
4、贝叶斯方法
Stata 19在贝叶斯计量经济学(Bayesian econometrics)方面的功能继续得到加强,新增方法包括贝叶斯变量选择、分位数回归及自助法等。例如:
使用贝叶斯方法从变量x1-x100中进行变量选择:
. bayesselect y x1-x100
使用贝叶斯方法进行分位数回归(quantile regression):
. bayes: qreg y x1 x2
其中,前缀(prefix)“bayes”表示使用贝叶斯方法进行分位数回归,而非通常频率学派(frequentist school)的分位数回归。
使用贝叶斯自助法(Bayesian bootstrap)估计x的均值:
. bayesboot r(mean): summarize x
其中,前缀(prefix)“bayesboot ”表示使用贝叶斯方法来汇报变量x的统计特征,并提取其均值。
5、其他计量方法
Stata 19还提供了其他方面的计量新方法,包括久期模型、相关系数的元分析、潜类别模型等。
5.1 久期模型
久期模型(duration model)的被解释变量为某事件存续的时间,例如失业持续时间,病人存活的时长等。在原有久期模型的Stata模块基础上(命令均以st开头),针对存在“区间删失”(interval-censored)的多事件数据(multiple-events data),Stata 19提供了估计“边际考克斯比例风险模型”(marginal Cox proportional hazards model)的新命令stmgintcox。
5.2 相关系数的元分析
在文献中,针对同一问题,常常有多项类似的研究,但所得估计结果不尽相同。如何将这些相似研究的结果进行整合,以得到统一的结论,这正是“元分析”(meta-analysis)的目标。在Stata原有的元分析meta命令模块中,Stata 19新增了对于相关系数的元分析功能。相关系数无疑是zui重要的描述性统计之一。
5.3 潜类别模型
“潜类别模型”(latent class model)是一种常见的统计模型,它假设数据来自于若干总体(或类别)的混合,故也称为“有限混合模型”(finite mixture model);例如,三个服从正态分布的总体按照一定比例的混合。如果知道类别的数目,则可使用原有的Stata命令gsem(表示generalized structural equation model)进行估计。例如,分别估计单类别(one-class)、双类别(two-class)与三类别(three-class)的潜类别模型,并存储相应的估计结果:
. gsem (y1 y2 y3 y4 <- ), logit lclass(C 1)
. estimates store oneclass
. gsem (y1 y2 y3 y4 <- ), logit lclass(C 2)
. estimates store twoclass
. gsem (y1 y2 y3 y4 <- ), logit lclass(C 3)
. estimates store threeclass
Stata 19提供了对以上所估计的三个潜类别模型进行模型比较(model-comparison)的统计量及检验,可输入命令:
. lcstats
其中,“lc”表示latent class(潜类别),而“stats”表示statistics(统计量)。
6、Stata基础功能提升
6.1 Do文件编辑器
Stata 19的Do文件编辑器(Do-file Editor)变得更为强大,新增功能包括:
(1)变量名(variable names)、宏(macros)与存储结果(stored results)的自动补全(autocompletion);
(2)方便用户使用的Do文件编辑器模板(Do-file Editor templates);
(3)对当前词(current word)在编辑器中的所有出现之处均提供高亮(highlighting),无论大小写(case-insensitive);并对当前所选内容(current selection)在编辑器中的所有出现之处均提供高亮(highlighting),区分大小写(case sensitive)。
(4)括号高亮(bracket hightlighting),即对包含当前光标的括号(the brackets enclosing the current cursor position)提供高亮。
(5)代码折叠功能的提升(code folding enhancement),包括新增的菜单栏目(menu items)“Fold all”(折叠全部可折叠代码), “Unfold all”(展开所有已折叠代码)与“Fold selection”(折叠所选内容)。
6.2 画图
Stata 19的画图功能也变得更为强大,新增功能包括:
(1)通过新增命令twoway heatmap画热图(heat maps),即在变量(x, y)取值的网格上,以小方块的颜色变化来表示对应变量z的取值高低。
(2)通过新增命令twoway rpspikes画“刺形”的点图或范围图(plot points and ranges indicated by spikes),例如展示某统计量及其相应的置信区间。
(3)通过新增命令twoway rpcaps画“带帽刺形”的点图或范围图(plot points and ranges indicated by spikes with caps),例如展示某统计量及其相应的置信区间。
(4)在使用命令graph bar画柱状图/条形图(bar plot)时,可画样本均值及其置信区间,以及在标签与控制条形分组方面的改进(improved labelling, and control of bar groupings)。
(5)在使用命令graph dot画点状图(dot chart)时,可画样本均值及其置信区间,以及在标签与控制点状分组方面的改进(improved labelling, and control of dot groupings)。
(6)在使用命令graph box画箱形图(box plot)时,改进了标签与对箱形分组的控制(improved labelling, and control of box groupings)。
(7)根据变量上色(colors by variable)的选择项colorvar(),可适用于更多的twoway plot命令,包括line, connected, tsline, rconnected及tsrline等。
6.3 制表
Stata 19的制表功能也得以进一步提升,可更方便地创建与定制表格,例如:
(1)Stata的制表命令table新增了增加标题的选择项title(),增加脚注的选择项note(),以及将表格导出为指定文件格式(例如Word, LaTex, Excel等)的选择项export()。
(2)更简便的方差分析表格(easier ANOVA tables)。
Stata 19制表功能的更多细节改进,可参见Stata官网(www.stata.com)。
总之,Stata 19是一次令人激动的重大升级,在机器学习、因果推断、面板数据、贝叶斯方法、Stata基础功能等领域均推出了功能强大的新方法,更加贴近计量实战的需求。显然,在可预见的将来,Stata 仍将是经管社科的计量与统计软件。
关于 Stata 19 的更多详细内容,请点击页底 “阅读原文”。
备注:为保护正版软件权益,防止盗版软件的传播,如对Stata 19感兴趣的学者,可联系StataCorp, LLC官方授权合作伙伴北京友万信息科技有限公司(友万科技)采购正版软件或申请试用。
具体申请方式如下:申请方式 1: 联系徐老师 18610597626 (手机/微信同号)。申请方式 2: 扫描下方二维码