查看原文
其他

Stata: 我的程序多久能跑完?

连玉君 Stata连享会 2020-02-10

作者:连玉君 (知乎 | 简书 | 码云)

Stata连享会2018.11现场课程-内生性专题

特别说明: 文中包含的链接在微信中无法生效。请点击本文底部左下角的【阅读原文】,转入本文【简书版】。


导言

多数情况下,我们在 Stata 命令窗口中输入命令,敲回车,结果基本上瞬间生成。然而,在有些情况下,一个程序经常需要花费几十分钟 (比如,做面板门槛模型,或需要 Bootstrap),甚至几十个小时才能完成。此时,若能预先估算完成所有程序所花费的时间,对于我们合理安排日程会非常有帮助。

今天我们介绍两种方法:一个是 Stata 官方命令 timer,另一个是外部命令 benchmark,二者各有优劣。

程序计时器 timer

类似于我们在操场上跑步时所使用的秒表,每次摁下秒表,开始计时;再次摁下时则会呈现跑一圈所花费的时间。

下面我们通过一个简单的例子来说明该命令的使用方法:

1timer clear 1
2timer on 1
3  sysuse "auto.dta", clear
4  reg price wei len, vce(bootstrap, reps(1000))
5timer off 1
6timer list 1

结果如下:

1. timer clear 1
2. timer on 1
3.   sysuse "auto.dta", clear
4(1978 Automobile Data)
5.   reg price wei len, vce(bootstrap, reps(1000))
6(running regress on estimation sample)
7
8Bootstrap replications (1000)
9----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5 
10..................................................    50
11..................................................   100
12            .......................
13..................................................   950
14..................................................  1000

15               .......................
31
32. timer off 1
33. timer list 1
34   1:      3.92 /        1 =       3.9180

  • 关键点是说明:

  • timer clear 1:用于复位第一个秒表的时间至 0;

  • timer on 1:用于启动第一个秒表,

  • timer close 1:用于关闭第一个秒表,

  • timer list 1:用于列示第一个秒的耗时

  • 在本例中,我们进行了一百次 Bootstrap 抽样,用于估算稳健型标准误,整个过程耗时 13.9 秒。

  • 因此,如果把抽样的次数增加为5000次耗时大约是 4×5=20秒 (实测结果是  18.77 秒)。你也可以据此推断当变量增加、样本数增加等情形下,大致的耗时。

外部命令 benchmark

Stata 范例

1. benchmark, reps(10) disp:    ///
2      qui reg price wei len, vce(bootstrap, reps(1000))
31: 3.373 seconds
42: 3.225 seconds
53: 3.247 seconds
64: 3.172 seconds
75: 3.207 seconds
86: 3.398 seconds
97: 3.265 seconds
108: 3.292 seconds
119: 3.208 seconds
1210: 3.375 seconds
13Average over 10 runs: 3.277 seconds

该命令的语法相对比较简洁,而且可以一次性帮我们进行十轮测试,并进而帮我们计算出平均耗时为 3.277 秒。据此我们推断,进行5000次抽样的时间,就会更加准确一些,约为 3.277*5 = 16.385 秒。

实测结果如下,与我们推算的结果非常接近:

1. benchmark, reps(10) disp:    \\\
2     qui reg price wei len, vce(bootstrap, reps(5000))
31: 16.12 seconds
42: 16.12 seconds
53: 16.18 seconds
64: 15.82 seconds
75: 16.07 seconds
86: 15.99 seconds
97: 16.08 seconds
108: 16.19 seconds
119: 16.07 seconds
1210: 15.51 seconds
13Average over 10 runs: 16.02 seconds

benchmark 的下载及安装

在命令窗口中输入如下命令,即可下载:

1net install benchmark,   ///
2from(https://raw.githubusercontent.com/mcaceresb/stata-benchmark/master/)

下载完成后输入如下命令,可查看详细的帮助文件:

1help benchmark

关于我们

  • Stata 连享会(公众号:StataChina)】由中山大学连玉君老师团队创办,旨在定期与大家分享 Stata 应用的各种经验和技巧。

  • 公众号推文同步发布于 CSDN-Stata连享会 、简书-Stata连享会 和 知乎-连玉君Stata专栏。可以在上述网站中搜索关键词StataStata连享会后关注我们。

  • 点击推文底部【阅读原文】可以查看推文中的链接并下载相关资料。

  • Stata连享会2018.11现场课程-内生性专题

联系我们

  • 欢迎赐稿: 欢迎将您的文章或笔记投稿至Stata连享会(公众号: StataChina),我们会保留您的署名;录用稿件达五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。

  • 意见和资料: 欢迎您的宝贵意见,您也可以来信索取推文中提及的程序和数据。

  • 招募英才: 欢迎加入我们的团队,一起学习 Stata。合作编辑或撰写稿件五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。

  • 联系邮件: StataChina@163.com

往期精彩推文


欢迎加入Stata连享会(公众号: StataChina)


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存