2021年4月20日,Stata 17如约而至。本次亮点更新共有29处。下面我们将分别介绍每一项更新。这些功能中的大多数将对各个学科的研究人员有很大帮助。
1. 表格
用户一直希望我们提供更优异的表格功能。现在您可以轻松地创建用于比较回归结果或摘要统计信息的表格,可以创建自定义样式并将其应用于所构建的任何表格,还可以将表格导出到MSWord,PDF,HTML,LaTeX,MS Excel或Markdown并且将它们放在报告中。同时table命令已经被修改。新的collect前缀从任意多个命令中收集任意多个结果,生成表,将它们导出为多种格式。您还可以使用新的Tables Builder来单击并创建表格。
2. 贝叶斯计量经济学
Stata可用于计量经济学,并且可以用Stata进行贝叶斯统计。现在,Stata 17还可以用来执行贝叶斯计量经济学。想用概率陈述来回答经济问题,例如,那些参加职业培训计划的人是否更有可能在未来五年内继续受雇?想结合经济过程的先验知识吗?Stata的新贝叶斯计量经济学功能可以提供帮助。适合许多贝叶斯模型,例如横截面模型、面板数据模型、多层模型和时间序列模型。使用贝叶斯因子比较模型,获得预测结果。
在经济计量模型中使用贝叶斯方法的一个优点是结合了实际中常用的模型参数的外部信息。这些信息可能来自历史数据,也可能来自对经济过程的自然了解。无论哪种方式,贝叶斯方法都可以使我们将外部信息与我们在当前数据中观察到的信息结合起来,以形成对感兴趣的经济过程的更现实的看法。
Stata 17在贝叶斯计量经济学领域提供了一些新功能:
Ÿ贝叶斯VAR模型
Ÿ贝叶斯IRF和FEVD分析
Ÿ贝叶斯动态预测
Ÿ贝叶斯纵向/面板数据模型
Ÿ贝叶斯线性和非线性DSGE模型
3. Stata运行更快
Stata重视数据准确性的同时也非常重视处理速度。两者之间通常需要权衡取舍,但Stata努力为用户提供两全其美的选择。在Stata 17中,我们更新了sort和collapse背后的算法,使这些命令运行更快。同时,对一些估计命令,如mixed,运行速度上也得到了改进,这些命令适合多级混合效应模型。
4. DID和DDD模型
新的估计命令didressage和xtdidressage用重复测量数据拟合差异中的差异(DID)和差异中的差异或三重差异(DDD)模型。didregress适用于重复横截面数据,xtdidregress适用于纵向/面板数据。
利用重复测量数据,用DID和DDD模型估计平均治疗(ATET)效果。治疗效果可以是药物治疗对血压的影响,也可以是培训计划对就业的影响。与现有的teffects命令提供的标准横截面分析不同,在评估ATET时,是否对组和时间效应进行了分析控制,其中组可识别重复测量。附加群体效应及其与时间相互作用的DDD分析控制---您最多可以指定三个组变量或两个组变量和一个时间变量。
5.区间删失Cox模型
半参数Cox比例风险回归模型通常用于分析未审查和右删失事件时间数据。新的估计命令stintcox使Cox模型适用于区间删失的事件时间数据。
区间删失发生在对某个感兴趣的事件(如癌症复发)的时间没有直接观察到,但已知在某个区间内时。例如,定期检查可以发现癌症复发,但不能观察到确切的复发时间。我们只知道在先前检查和当前检查之间的某个时间段复发了癌症。忽略区间删失可能导致不正确的(有偏见的)结果。
当基线风险函数完全不确定时,区间删失事件时间数据的半参数估计具有挑战性,因为没有一个事件时间是精确观测的。因此,这些数据的“半参数”建模通常采用样条法或分段指数模型作为基线风险函数。直到最近的方法学进展(在stintcox命令中实现)才提供真正的区间删失事件时间数据半参数建模。
6. 多元变量分析
您需要分析多个研究的结果。这些研究报告了多种效应大小,它们很可能在一项研究中相互关联。单独的meta分析(例如使用现有meta命令的meta分析)将忽略相关性。现在可以使用新meta mvregression命令执行多元meta分析,这将解释相关性。
7.贝叶斯VAR模型
Bayes前缀现在支持var命令来拟合贝叶斯向量自回归(VAR)模型。
VAR模型研究多个时间序列之间的关系,包括结果变量的滞后作为模型预测因子。
已知这些模型具有许多参数:有K个果变量和p个滞后,至少就有p(K ^ 2 + \ nn1)个参数。模型参数的可靠估计非常具有挑战性,尤其对于小数据集。
贝叶斯VAR模型通过结合模型参数的先验信息来稳定参数估计,从而克服了这些挑战。
8.贝叶斯多级模型:非线性、联合、 SEM-like等
使用bayesmh命令新的随机效果语法,拟合贝叶斯多层次模型的宽度。
您可以更容易地拟合单变量线性和非线性多层次模型。现在您可以拟合多元线性和非线性多层次模型了!并考虑到增长的线性和非线性多级模型,联合纵向和生存时间模型,SEM型模型等。
9.治疗效果lasso评估
您可以使用teffects来估计治疗效果。您也可以使用lasso来控制众多协变量。(当我们提到“多”时,指的是成百上千甚至更多!)现在您可以使用telasso来估计治疗效果并控制众多协变量。
10.Galbraith图
新命令meta-galbraithplot生成Galbraith图用于meta分析。这些图可用于评估研究的异质性和检测潜在的异常值。当有许多研究时,它们也被用来替代森林图,用于总结meta分析结果。
11.留一法元分析
您现在可以通过使用新的选项leaveoneout与meta summarize和meta forestplot来执行留一元的元分析。
省略元分析通过在每项分析中排除一项研究来进行多项元分析。研究产生夸大的效应量是很常见的,这可能会扭曲整体结果。省略的meta分析有助于调查每个研究对总体效应大小估计的影响,并确定有影响力的研究。参见[META] META summarize和[META] META forestplot。
12.贝叶斯纵向/面板数据模型
您可以通过使用xtreg来拟合随机效应面板数据或纵向模型,使用xtlogit或xtprobit来拟合连续结果,使用xtlogit或xtprobit来拟合二进制结果,使用xtologit或xtoprobit来拟合顺序结果等。在Stata17中,您可以通过简单地在这些模型前面加上bayes来拟合这些模型的Bayesian版本。
13.面板数据多项式logit模型
Stata的新估计命令xtmlogit将面板数据多项式logit(MNL)模型与随时间观察到的分类结果相匹配。假设我们收集了几个星期关于个人对餐馆选择的数据。餐厅选择是没有自然顺序的分类结果,因此我们可以使用现有的mlogit命令(使用cluster-robust标准误差)。xtmlogit直接对单个特征进行建模,因此可能产生更有效的结果。它可以很好地解释可能与协变量相关的特征。
14.零膨胀的有序logit模型
新的估计命令ziologit拟合零膨胀的有序逻辑回归模型。当数据在最低类别中表现出比标准有序逻辑模型预期的更高的观测值时,使用该模型。我们将最低级别的观察值称为零,因为它们通常对应于没有行为或特征。
零膨胀是通过假设零同时来自逻辑模型和有序逻辑模型来解释的。每个模型都可以有不同的协变量,结果可以显示为比值比而不是默认系数。
15.趋势非参数检验
nptrend命令现在支持跨有序组的四个趋势检验。您可以选择Cochran-Armitage检验,Jonckheere-Terpstra检验,线性趋势检验和Cuzick检验中进行选择。前三个检验是新的,第四个检验由nptrend执行。
16.贝叶斯动态预测
动态预测是在拟合向量自回归(VAR)模型等多变量时间序列模型后常用的预测工具。在拟合经典var模型后,使用fcast计算动态预测。在使用bayes:var拟合贝叶斯VAR模型之后,现在可以使用bayesfcast来计算贝叶斯动态预测。
贝叶斯动态预测产生预测值的整个样本,而不是经典分析中的单个预测。该样本可用于解答各种建模问题,例如,在估计预测不确定性时,模型在不作渐近正态假设的情况下预测未来观测值的能力。这对于可能怀疑渐近正态性假设的小数据集特别有吸引力。
17.贝叶斯IRF和FEVD分析
脉冲响应函数(IRFs),动态乘数函数和预测误差方差分解(FEVDs)通常用于描述多元时间序列模型(如VAR模型)的结果。VAR模型具有许多参数,可能难以一一解释。IRFs和其他函数将多个参数的效果合并到一个摘要中(每个时间段)。例如,IRFs测量一个变量的冲击(变化)对给定结果变量的影响。
贝叶斯IRFs(和其他函数)使用IRFs的“精确”后验分布产生结果,这不依赖于渐近正态性的假设。它们还可以为小数据集提供更稳定的估计,因为它们包含了有关模型参数的先验信息。
18. lasso惩罚选择BIC
惩罚参数的选择是lasso分析的基础。使用小的惩罚函数可能会包含太多的变量。使用较大的惩罚函数可能会忽略潜在的重要变量。
Lasso估计已经提供了几种惩罚选择方法,包括交叉验证、自适应和插件。现在可以使用贝叶斯信息准则(BIC)通过指定选择(BIC)选项来选择lasso之后的惩罚参数进行预测,并选择lasso进行推断。此外,新的后估计命令bicplot在拟合lasso模型后,将BIC值绘制为惩罚参数的函数。这为最小化BIC函数的惩罚参数的值提供了方便的图形展示。
19.集群数据lasso分析
现在,您可以在套索分析中考虑集群数据。忽略聚类可能会导致错误结果,因为同一聚类中的观测值之间存在相关性。使用用于预测的lasso命令(如lasso和elasticnet),可以指定新cluster({\it clustvar})选项。使用用于推断的lasso命令(如poregress),可以指定新的vce(cluster{\it clustvar})选项。
20.贝叶斯线性和非线性DSGE模型
现在,可以通过在dsge和dsgenl前面加上前缀bayes:来拟合贝叶斯线性和非线性动态随机一般均衡(DSGE)模型。通过从30多种不同的先验分布中进行选择,结合有关模型参数范围的信息。进行贝叶斯IRF分析,进行区间假设检验,使用Bayes因子比较模型等。
21. Do-file编辑器:导航控制,增强的书签功能……
Stata 17中的Do-file Editor有以下改进:
1.书签:现在与do-files一起保存。
2.新的导航控件:可以轻松浏览do文件。
3.语法高亮显示支持Java和XML。
4.选中区域中引号,括号和方括号的自动补全。例如,选择文本mymacro,然后输入左引号`; Do文件编辑器将用单引号绑定文本选择,将选择更改为“mymacro”。
书签:Do文件编辑器最需要的特性之一是能够在Do文件中保存书签。书签用于标记感兴趣的行,以便以后更容易地导航到它们。书签在浏览长Do-files时特别有用。您可以将书签添加到do文件中执行数据管理、显示摘要统计和执行统计分析的部分。然后,您可以使用菜单,工具栏或新的导航控件在这些部分之间快速来回移动,而无需滚动几行代码来查找所需的部分。
导航控件:Stata 17通过新的导航控件使导航do-files更容易,该控件显示书签及其标签的列表。从导航控件中选择书签会将Do文件编辑器移动到书签所在的行。除了书签之外,导航控件还将显示do文件中的程序列表。从导航控件中选择一个程序把Do文件编辑器移到程序的定义中。可以轻松的将程序添加到导航控件中。Do文件编辑器将自动向导航控件添加程序定义。
22.日期和时间功能更新
Stata 17增加了新的便利功能,用于处理Stata和Mata中的日期和时间。新功能可以分为三类:
1.Datetime持续时间:Datetime durations:用于获取持续时间的函数,例如ages。
2.相对日期:基于其他日期返回日期的函数,例如相对于给定日期的下一个生日。
3.Datetime组件:从Datetime值中提取不同组件的函数。
新函数以闰年、闰日和闰秒(如适用)为单位。闰秒是一秒调整,偶尔应用于协调通用时间(UTC)。
23.Intel Math Kernel Library (MKL)
Stata 17引入了在兼容硬件(所有基于Intel和AMD的64位计算机)使用Intel Math Kernel Library(MKL),并提供了深度优化的LAPACK例程。
LAPACK代表线性代数包,是一套免费提供的例程,用于求解联立方程组、特征值问题和奇异值问题等。Mata运算符和函数(例如qrd()、lud()、和cholesky())在可能的情况下利用LAPACK进行许多数值操作。
由英特尔MKL支持的LAPACK提供了最新的LAPACK例程,这些例程针对现代Intel和现代AMD处理器使用的64位Intel x86-64指令集进行了优化。使用MKL的Mata函数和操作符在性能方面有很大的优势。
最重要的是,您无需采取任何措施即可充分利用速度提升的优势。使用这些Mata函数和运算符以及Mata函数和运算符本身的Stata命令将在兼容硬件上自动使用“英特尔MKL”。
24. 运用于Apple Silicon
Stata 17 for Mac是一个通用的应用程序,它将在带有Apple Silicon和Intel处理器的Mac上运行。带有Apple Silicon的Mac包括新的MacBook Air, MacBook Pro和Mac mini,它们都带有M1处理器。M1芯片有更高的性能和更高的能效。
尽管M1 Macs被认为是入门级的,但我们发现,M1 Macs本机运行Stata的性能比Intel Macs高出30–35%。它们的性能甚至远远超过价格超过两倍的Intel Mac!对于那些坚持在他们的Apple Silicon Mac电脑上只使用Apple-Silicon原生软件的用户来说,从安装程序到应用程序本身,Stata 17的任何部分都不需要用到Rosetta 2。
Stata的功能与在M1 Mac或Intel Mac上本地运行Stata的方式相同,M1 Mac不需要特殊许可证。在未来的几年里,我们将继续支持并发布针对带有英特尔处理器的Mac的新版本Stata。
25. JDBC
将Stata与数据库连接变得更加容易。Stata 17添加了对JDBC(Java数据库连接)的支持。JDBC是在程序和数据库之间交换数据的跨平台标准。
新的jdbc命令支持jdbc标准,用于与具有矩形数据的关系数据库或非关系数据库管理系统交换数据。您可以从一些最流行的数据库供应商(如Oracle、MySQL、Amazon Redshift、Snowflake、Microsoft SQL Server等)导入数据。jdbc的优点在于它是一个跨平台的解决方案,因此我们的jdbc设置对Windows、Mac和Unix系统的工作方式是相同的。
如果您的数据库供应商提供了一个JDBC驱动程序,那么您可以下载并安装该驱动程序,然后通过JDBC在数据库上读取、写入和执行SQL。您可以将整个数据库表加载到Stata中,也可以使用SQL SELECT将表中的特定列加载到Stata中。您还可以将所有变量插入数据库表中,或仅插入数据集的子集。
26.集成Java
在Stata 17中,您现在可以直接在Stata中嵌入和执行Java代码。您可以在以前版本的Stata中创建和使用Java插件,但这需要您编译代码并将其捆绑到Jar文件中。在do文件中执行Java,您可以自由地执行直接绑定到Stata代码的Java代码。您可以在do文件或ado文件中编写Java代码,甚至可以从Stata中交互式地调用Java(如JShell)。
Java的优势之一在于它与Java虚拟机一起打包的大量APIs。还有许多有用的第三方库可用。根据需要,您甚至可以编写并行代码以利用多核运算。
您编写的Java代码是动态编译的,不需要使用外部编译器。此外,还包括Stata函数接口(SFI)Java包,提供Stata和Java之间的双向连接。SFI包中有访问Stata当前数据集、帧、宏、标量、矩阵、值标签、特征、全局Mata矩阵、日期和时间值等的类。
Stata将Java开发工具包(JDK)与其安装捆绑在一起,因此不涉及其他设置。
27. 集成H2O
在Stata 17中,我们一直在尝试连接H2O,这是一个可扩展的分布式开源机器学习和预测分析平台。您可以在https://docs.h2o.ai/上了解有关H2O的更多信息。
通过集成H2O,您可以在Stata上启动、连接和查询H2O集群。此外,我们提供了一套命令来操作集群上的数据(H2O帧)。例如,可以通过导入数据文件或加载Stata的当前数据集来创建新的H2O帧。您还可以从Stata中拆分、合并和查询H2O帧。
虽然这对我们来说还处于实验阶段,但我们希望让我们的用户可以试用。另一方面,因为这是一个实验状态,语法和功能可能会发生变化。当使用Stata命令提供对H2O给定功能的访问时,请记住这是H2O功能。虽然您可以通过Stata命令访问它,但它所能做的高于H2O并且在Stata之外。
28. PyStata
Stata 17引入了一个我们称之为PyStata的概念。PyStata是一个包含Stata和Python交互的所有方式的术语。
stata16的特点是能够从Stata调用Python代码。Stata17通过允许您通过一个新的
pystata Python包从一个独立的Python环境调用Stata,大大扩展了这一功能。
您可以在基于IPython内核的环境中方便地访问Stata和Mata(例如,Jupyter Notebook和控制台以及Jupyter Lab和控制台);在支持IPython内核的其他环境中(例如Spyder IDE和PyCharm IDE);或者从命令行访问Python时(例如,Windows命令提示符、macOS终端、Unix终端和Python的IDLE)。
29.带Stata的Jupyter Notebook
Jupyter Notebook是一个功能强大且易于使用的web应用程序,它允许您将可执行代码、可视化效果、数学方程和公式、叙述性文本和其他富媒体组合在一个文档(“笔记本”)中,用于交互式计算和开发。它被研究者和科学家广泛地用来分享他们的想法和成果,以促进合作和创新。
在stata17中,作为PyStat的一部分,可以使用IPython(交互式Python)内核从Jupyter笔记本调用Stata和Mata。这意味着您可以在一个环境中结合Python和Stata的功能,使您的工作易于复制并与其他人共享。
从Jupyter Notebook调用Stata是由新的pystata Python包驱动的。
以上是Stata 17 29处更新的内容,对于更详细的功能介绍,还请移步科学软件网查看。
北京天演融智软件有限公司(科学软件网)是Stata软件在中国的授权经销商,为中国的用户提供优质的软件销售和培训服务。
北京天演融智软件有限公司(科学软件网)
北京/广州/成都
电话:400 810 4001/ 18510103847