set trace on —追踪你的程序

2017-07-11 薛原 爬虫俱乐部 爬虫俱乐部

追踪


       在实证研究过程中,我们通常会对自己的研究过程进行设计,编写程序并选择合适的模型,然而我们事前的思考无论多么周密,总可能会存在一些纰漏 使得程序运行结果出错,那么有没有一个简单的命令让自己可以监控程序的处理过程呢,答案是肯定的,今天就让我们来了解一下set trace on 

set trace on命令主要功能是帮助我们追踪程序的运行过程,展示详尽的运算结果,例如:运行以下回归时加入set trace on 命令

clear

set more off

sysuse auto.dta

set trace on

reg price length weight

可以看到在加入set trace on之后,Stata向我们展示了程序的详细执行过程。

此外,我们在运行程序时难免会碰到报错,此时可以使用display命令去定位可能出现错误的位置。而set trace on基于其自身追踪程序的特点也有一个强大的功能,那就是帮助我们准确定位复杂程序中可能出现的错误。

例如运行以下程序时:

clear

set obs 100

set seed 10101

gen x1var=runiform()

gen x2var=runiform()

gen x3var=runiform()

gen x4var=runiform()

gen x5var=runiform()

gen sum=x1var+x2var+x3var+x4var

quietly replace sum=0

local i 1

while `i'<= 4{

quietly replace sum=sum+x`i'var

local i=`i'+1

forv `i'=2/4{

local x`i' sum

replace sum=x`i'+`i' 

if x1var[_n-1]!=x2var in `i' {

replace sum=x`i'var+`1'

continue, break

}

else{

replace sum=x`i'var+`i'

}

}

}

我们得到的结果如下:

运行结果报错,但是由于循环较长,很难具体定位错误位置,此时set trace on的作用就体现出来了,在觉得可能出错的宏命令之前加入set trace on后再次运行程序:

clear

set obs 100

set seed 10101

gen x1var=runiform()

gen x2var=runiform()

gen x3var=runiform()

gen x4var=runiform()

gen x5var=runiform()

gen sum=x1var+x2var+x3var+x4var

quietly replace sum=0

local i 1

set trace on

while `i'<= 4{

quietly replace sum=sum+x`i'var

local i=`i'+1

forv `i'=2/4{

local x`i' sum

replace sum=x`i'+`i' 

if x1var[_n-1]!=x2var in `i' {

replace sum=x`i'var+`1'

continue, break

}

else{

replace sum=x`i'var+`i'

}

}

}

此时Stata给出了详细的运行过程和错误出现的具体位置,十分方便自己确定命令出错的具体原因,例如在本案例中编写命令时候混淆了i和1。

当然,使用此功能可能会造成的问题是产生了很多输出结果,因此可以根据自己的需要关闭此功能,只需要运行 set trace off 即可。



如需新版本采购及老版本升级服务,请联系Stata软件在中国大陆的指定经销商友万科技(www.uone-tech.cn),联系人徐青青:Tel/WeChat 18610597626,感谢您的支持与关注!

以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

                     文字编辑:司海涛

技术总编:刘贝贝



往期推文推荐:

1.高校学术大神:你的导师上榜了吗?

2.中国高校财经、管理与综合类期刊灌水排行榜

3.关于RTF你不知道的命令之番外篇

4.免费事件研究,一片片从邮局寄来

5.免费的股价同步性,一片片从邮局寄来

6.Stata叫你回家听音乐了!

7.一言不合就用stata写邮件(Outlook/Foxmail)

8.听说你想知道怎么用stata画地图?

9.I have a Stata, I have a python

10.I have a Stata, I have a Python之二——pdf转word




关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部 

微信扫一扫
关注该公众号