速度大比拼之Stata17有多快?
本文作者:李婷婷,河南大学经济学院
本文编辑:刘子艳
技术总编:戴 雯
Stata&Python云端课程来啦!
好雨知时节,当春乃发生。为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》。关于Stata,爬虫俱乐部推出了系列课程,内容包括字符串函数、正则表达式、爬虫专题和文本分析,可以随心搭配,价格美丽,物超所值,更多信息可查看Stata系列推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》、《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程》等。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦!
sort
和collapse
背后的算法,使这些命令运行地更快。同时,对一些估计命令,如mixed
命令,运行速度上也得到了改进。 我们今天使用timer
命令分别测试sort
命令和collapse
命令在Stata16和Stata17中的运行速度,看看在Stata17中这两个命令的运行速度是否真的提高了呢?
timer
命令的用法吧!
timer
命令可以记录并报告执行代码所花费的时间。
timer clear [#]
可以将计时器重置。
timer on #
和timer off #
分别代表计时开始和计时结束。
timer list [#]
可以列出计时。其中#可以是一个1-100的整数。
01
测试sort命令的速度
sort
命令对数据进行排序并对排序部分的程序分别进行五次测速,取五次时间的平均值。clear all
set obs 10000000
gen x1=runiform()
gen x2=runiform()
gen x3=runiform()
gen x4=runiform()
gen x5=runiform()
gen x6=runiform()
gen x7=runiform()
gen x8=runiform()
save runiform.dta,replace
scalar sum=0 //生成一个标量来存储5次运行程序所耗费的总共时间
forvalues i = 1/5{
use runiform.dta,clear
timer clear 1
timer on 1
sort x1 x2 x3 x4 x5 x6 x7 x8
timer off 1
timer list 1
scalar sum=sum+r(t1)
}
scalar average=sum/5 //运行时间均值
di "使用Stata16耗费的时间为",average
在Stata16中运行上述程序,结果如下图所示:通过在Stata16和Stata17中的对比,我们可以发现,使用Stata17执行包含
sort
命令的这段程序,速度会更快一些!02
测试collapse命令的速度
同样,我们先生成一个含有10000000个样本的大数据集,再使用collapse命令,并测试使用
collapse
命令部分的程序的运行速度。大家如果不太了解collapse
命令,可以查看我们之前发布的推文《利用collapse命令转化原始数据》进行学习哦~clear all
set obs 10000000
gen gpa= runiform(2,4)
format gpa %2.1f
gen hour=int(runiform(20,40))
gen year=int(runiform(1,4))
save college.r.dta,replace
scalar sum=0 //生成一个标量来存储5次运行程序所耗费的总共时间
forvalues i = 1/5{
use college.r.dta,clear
timer clear 1
timer on 1
collapse (mean) gpa,by(year)
timer off 1
timer list 1
scalar sum=sum+r(t1)
}
scalar average=sum/5 //运行时间均值
di "使用Stata16耗费的时间为",average
在Stata16中执行上述程序,运行结果如下:
使用Stata17执行上述相同程序并展示使用Stata17所耗费的时间,运行结果如下图所示:
从两张图中可以看出来,使用同一台电脑,同样的程序,Stata16和Stata17运行
collapse
命令,Stata17平均只耗费了1.3秒,而Stata16平均耗费了10秒左右。当然,运行相同的程序所耗费的时间每次也都是不同的,这里只是截图了其中一次的来为大家说明。
除了上述测试的sort
和collapse
命令的速度变快了之外,在Stata17中,用于拟合多级混合效应模型的mixed
命令的速度也得到了改进。而且可以在Stata/MP中并行使用用于从CSV和其他带分隔符的文本文件导入数据的import delimited
命令。在Stata 17中,它导入大数据集的速度快了四倍。大家有兴趣的话,可以自己测试一下~
今天的推文到这里就结束啦!下期我们会继续为大家分享Stata17的新增功能,大家下期再会哦~
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
初识PyStata
辞旧迎新——Stata17之Do-file编辑器优化
Stata17新亮点——解放表格输出生产力
【爬虫+可视化】链家网北京租房信息
手把手教你如何获取股票数据和可视化
Countvalues——数数的超级小帮手
下拉选择框如何变成“小猫咪” | selenium小技巧
Python中的运算符知多少?
快来get缺失值的正确打开方式
如何使用Pandas读取txt文件?
基于MySQL数据库实现增量式爬取
寻找春日气息|本月最受欢迎的景点都在这里!
问世间情为何物,大数据也想参悟——后考研时代,何以解忧?唯有数据!
Python与数据库交互—浅述pymysql
偷懒小妙招|selenium之玩转鼠标键盘操作--鼠标篇
大家用Stata来“找茬”
“粉墨登场”——多期双重差分法(DID)的Stata操作
Python与百度地图合璧,绘制棒呆的热力地图
【数据可视化】统计图绘制神器:Seaborn
检索Stata推文的“任意门”学会了这些,分分钟提升你的毕业体验【爬虫实战】双一流大学的月关注度
【爬虫实战】“中国人不吃这一套”——人民日报微博评论分析
进化的标签管理助手——elabel命令关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。