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)?!跋蛄孔曰貧w”(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)?!皠討B隨機一般均衡”(Dynamic Stochastic General Equilibrium,簡記DSGE)模型是宏觀經濟學的主流模型。在Stata 16 中,可使用命令dsge與dsgenl分別估計線性與非線性的 DSGE 模型。
在Stata 17中,只要在命令dsge與dsgenl之前加上前綴bayes,即可估計相應的線性或非線性的貝葉斯DSGE模型??晒┯脩暨x用的 “先驗分布”(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)。在將多個研究結果綜合在一起時,其中的每個研究可能同時匯報 “多個效應規?!保╩ultiple 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。