asrol命令——让你的描述性统计信息滚动起来
本文作者:朱巧利
文字编辑:李钊颖
技术总编:李朋冲
爬虫俱乐部将于2020年1月5日至11日在湖北武汉举行为期一周的Stata编程技术定制培训,此次采取初级班和高级班分批次培训。课程通过案例教学模式,旨在帮助大家在短期内掌握Stata软件编程、金融计量知识和实证分析方法,使大家熟悉Stata核心的爬虫技术,以及Stata与其他软件交互的高端技术。目前正在火热招生中~详细培训大纲及报名方式,请点击《爬虫俱乐部2020第一期Stata编程训练营开始报名啦!》或点击文末阅读原文呦~
asrol命令为外部命令,使用前需安装:
ssc install asrol, replace
一、asrol命令介绍
[bysort]:asrol varlist [if] [in], stat(stat_options) window(rangevar #)
[gen(newvar)by(varlist) minimum(#) add(#) ignorezero perc(#) xf([focal | rangevar])]
window()选项用于指定滚动窗口。这一选项中包含两个参数,第一个参数通常是一个数值型变量的变量名,且一般为时间变量,如年、月、日、季度等。第二个参数是一个指定滚动窗口长度的整数。如在下例中我们要按公司分组依次计算每五年的投资均值,window()选项应设置为:window(year 5),这一程序如下:
webuse grunfeld, clear
bysort company: asrol invest, stat(mean count first last) window(year 5) min(5)
list company year invest *_invest in 1/10, abbrev(13)
window()并非必选项,在不设置滚动窗口时,asrol命令与bysort命令组合可以计算分组的描述性统计信息,其性能类似于egen命令。在上例中,我们去掉window()选项,并分别用asrol命令和egen命令中的求均值函数mean()计算invest的均值,程序及结果如下:
webuse grunfeld, clear
bysort company: asrol invest, stat(mean) gen(mean_asrol)
bysort company: egen mean_egen = mean(invest)
list company year invest mean_* if year == 1935, abbrev(10)
perc()是计算分位数时需指定的一个选项,不指定perc()选项时,stat(median)默认计算给定窗口中的第50个百分位数。若需要计算给定窗口中的第75个百分位数或第k个百分位数,可将此选项指定为perc(0.75)或perc(k)。示例如下:
webuse grunfeld, clear
bysort company: asrol invest, stat(median) window(year 5) perc(0.75) ///
gen(median75) min(5)
list company year invest median75 in 1/10
3、分组——by(varlist)
其实使用by()这个选项与在开头使用bysort有一样的结果,即:
asrol invest, window(year 5) stat(mean), by(country)
bysort country : asrol invest, window(year 5) stat(mean)
webuse grunfeld, clear
set rmsg on
bysort company: asrol invest, stat(mean) win(year 10)
qui rolling mean = r(mean), clear window(10): sum invest
set rmsg off
关于我们
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。