关于Stata软件,学长经常会被人问道:“你知道它到底能做什么吗?”那我们今天就带大家来了解一下这门当下热门的软件究竟的用处是什么?
关于Stata,这些基础的东西你必须要知道
很长一段时间里,我一直把“Stata”读为“Stay-ta”。有一次和一个从日本回来的朋友聊天,她把Stata读为“Star-ta”,让我甚感不适。经查阅,方才发现,原来“Stata”并非数个单词的缩写(因此其正确拼写为Stata 而非STATA),而是由“statistics”和“data”合成的一个新词。从这个小小的趣闻中,可以看出Stata 在问世之初(1985年)的主要功能在于统计分析和数据处理。经历了三十余年的发展,Stata 已经升级到第15版,在不断强化上述功能的同时,Stata在矩阵运算、绘图、编程等方面的功能也在不断加强。Stata擅长数据处理、面板数据分析、时间序列分析、生存分析,以及调查数据分析,但其它方面的功能也并不逊色。(表1)
为何选择Stata?
这是个不太容易回答的问题。Stata网站列举了数条可能的原因。Edwards(2005)曾经非常细致地对比了Stata,SPSS和SAS的优劣。Princeton大学的Torres-Reyna博士则将四种常用软件的特征总结为表2。整体而言,Stata具有较强的优势。
弱水三千,我为何钟情于Stata?
就我个人的经历而言,如下几个原因使我自2003年以来一直钟情于Stata。
Stata的数据处理功能很强大。由于将数据导入内存后进行运算,其速度非常快。在多个数据文件的合并和追加,以及文字资料、时序资料,以及调查资料的处理方面,Stata 总能以极为简洁的命令完成分析。
自Stata12 发布以来,官方命令能快捷地导入导出文本(txt)和Excel(xls,xlsx)格式的数据文件。若进一步借助Stat/Transfer 软件,我们可以非常方便地实现不同软件数据格式的转换,如Excel, Access, SPSS, SAS, Eviews,Gauss, Limdep, S-Plus, R等。
我是做公司财务的,每年5月,在GTA、CCER、Wind 等数据库提供商提供了最新的数据后,我也需要更新自己的Stata 数据库(我把这些数据库提供的几十个子库合并为一个名为“Arlion_da”的Stata数据文件,并与我的合作者们分享)。
借助Stata 的数据处理功能,我只需在上一年度已经完成的do-files 中稍作修改即可完成数据的更新工作。整个过程仅需2天的时间。我无法想象,如果没有Stata提供的merge、append、forvalues等命令,这个数据更新的过程将会有多么痛苦。
Stata 的do-files 带来的便利。我很少点击Stata 的菜单,也很少在命令窗口中输入命令,我使用do-files(当然,每天要在这个窗口中敲入几十次help 命令)。简单而言,Stata 的do-files 只是一个包含了多行Stata命令的文本文件而已([U]16Do-files,Long(2009))。有些时候,要完成一篇文章的数据处理过程需要数周的时间,do-files就显得格外重要,它使得我们很容易对此前的处理过程进行修改。更为重要的是,后续文章都可以在这个do-files 的基础上扩展。我与搭档合作时,每天只需通过电子邮件发送只有几k大小的do-file即可;而我的学生们则可以通过do-files 重现我上课时讲解的每一个估计命令;很多学生的第一篇实证分析的论文都是在我已经完成的do-files 基础上完成的。
Stata 绘制的图形非常精美。这也为回归分析提供了一种可视化的分析工具,自Stata10发布以来,Stata增加了图形编辑、多种字体支持,以及数学符号支持等功能。3Stata 可以输出十余种图片格式,可以非常方便地插入Word、LaTeX等文字排版软件。即使采用点击鼠标的方式绘制图形,Stata 也会自动生成命令代码,为图形的修改提供了极大的便利。
Stata 在编程方面提供了良好的平台。比如,做非线性最小二乘(NLS)、最大似然估计(MLE)、广义矩估计(GMM),只需要设定函数形式,编写一些简单的程序即可完成,至于数值算法等比较复杂的技术问题,Stata都已帮你做好了。
例如,我完成的第一篇实证分析的论文便是以NLS为基础的,随后,我又采用MLE 完成了异质性随机边界模型(和双边随机边界模型)的估计。自Stata11发布以来,GMM 的实现也变得非常简单了,你只需设定残差方程、指定工具变量,并选择何时得权重矩阵即可完成估计。
Stata 具有良好的扩展性。Stata具有自己的编程语言,其所有命令都对应着一个以“.ado”为后缀的同名程序文件。对于Stata 用户而言,我们可以使用viewsource 或doedit 命令查看这些程序的代码。更为重要的是,我们可以非常方便地自行编写命令,以实现对Stata官方命令的补充和扩展。这种特殊的扩展功能赋予了Stata 用户极大的灵活性,我们可以用findit命令下载到大量的外部命令,以便适时跟进最新的统计方法。这同时也推动了Stata自身的发展,例如,Stata 用户开发出的可绘制地图的命令tamp,spmap, china_map 等就是一个很好的例证;由DavidRoodman 编写的xtabond2 命令则被Stata11 设定为估计动态面板模型的官方命令(xtdpd, xtdpdsys);同样,由F.Bornhorstand C.F. Baum 编写的ipshin、levinlin 命令,C.F. Baum 编写的hadrilm 命令,以及S. Merryman 编写的xtfisher 等用于执行面板单位根检验的命令都被Stata11设定为官方命令xtunitroot。饮水思源,我自己也贡献了xtbalance等命令。若想发布自己编写的Stata 命令,只需发邮件给波士顿大学的C.F. Baum 教授即可。
最后,从我身边这些老师和朋友的经验来看,Stata受到了越来越多的关爱。我的导师使用Gauss十年有余,在2001年接触Stata 后,毅然改用Stata。还有很多国外的朋友,基本上都在使用Stata。当越来越多的人开始使用Stata 时,我们的交流成本会迅速下降。
当然,软件本身并无好还之分,只是一个习惯的问题。关键的问题还是对统计和计量理论的掌握,这是决定你是否能驾驭软件的关键。
Stata并不完美,但她正在趋近完美。
诚如MacStats网站的评价,Stata 结果似乎无法像SPSS或Eviews 那样非常美观地输出(或粘贴)到Word/Excel 文档中。然而,得益于广大Stata 用户的努力,这不再是个问题,我们可以使用tabout (Watson(2007)), esttab (Jann and Long(2010)), logout,outreg2 (Jann(2005), Jann(2007)), xml_tab (Lokshin andSajaia(2008)) 等命令非常方便的把Stata 结果输出到Excel,Word, LaTeX和HTML (Gini andPasquini(2006)) 等文件中。连玉君博士制作的视频文件Stata 与Word、Excel、LaTeX的亲密接触非常细致地介绍了这一主题。他的另一份文档Stata与LaTeX 的完美结合则较为全面的介绍了如何将Stata 结果输出到LaTeX。
在早期版本中,Stata 的do-files编辑器过于简单。Stata11发布后,其do-files 编辑器已然从灰姑娘变成了白雪公主,具有了语法高亮显示、结构代码折叠、书签设定等功能,而且,对于书写大型do-files 的用户而言,命令的行数也不再受到任何限制。对于中文用户而言,只需稍作调整,即可获得很好的显示效果。
Stata9以前的版本无法对图形进行二次编辑,且图形中的可供选择的字体也非常有限。自从Stata10 和Stata11发布以来,这两个问题得到了很好的解决。图形中的文字可以是粗体、斜体,亦可包含多种数学符号;在用户手动编辑图形时,相应的命令会自动显示在屏幕上,进而用于处理其他类似的图形。
不同于SAS等从硬盘上读取数据的统计软件,Stata将数据调入内存后执行运算的,这使得其运算速度非常快。然而,对于经常处理高频数据和大型调查数据的用户而言,Stata 的这种运算机制反而成了其缺陷——它能够处理的数据量受限于计算机的内存容量。虽然在既有的多个Stata 版本中,Stata11家族中进一步增加了Stata/MP,使其在配有多核处理器的计算机中运算速度进一步得到提升,但数据容量的限制问题仍然未能得到实质性的改进。
我如何学习 Stata?
我经常会被问到“Stata 好学吗”、“我多长时间能学会Stata”,诸如此类的问题。诚然,相比于SPSS 和Eviews等软件,Stata 的门槛的确要高一些。然而,问题的关键并不在于Stata 本身有多么难学,而在于你在统计和计量方面花费了多少时间,这与学习Stata 所需的时间显著负相关。因此,我的回答往往会是:“哦,这个不好说,如果……,其实很简单……”。
相比于十年前,现在学习Stata 的资料已经非常丰富了。虽说殊途同归,但不同的学习路径却存在着巨大的效率差异。对于初学者而言,我的建议是,首要的问题是知道“Stata 能做什么”,继而才是“Stata 如何做什么”。
快快扫码学习吧~
本期小编:小靖