楼主: 夏目贵志
7850 14

[编程问题求助] 怎么在stata里做进度条 [推广有奖]

贵宾

已卖:483份资源

学科带头人

96%

还不是VIP/贵宾

-

威望
1
论坛币
238675 个
通用积分
17659.3894
学术水平
851 点
热心指数
971 点
信用等级
711 点
经验
759469 点
帖子
4028
精华
1
在线时间
793 小时
注册时间
2012-7-15
最后登录
2017-9-16

楼主
夏目贵志 发表于 2012-9-9 21:46:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
前两天跑一些耗时很长的程序,需要在程序运行同时加入一个进度条。我不知道stata有没有自带这种功能,所以自己做了一个简单的。不过不太理想的是,如果loop的次数少,进度条显示就不够完美。开这个帖子是想大家来讨论一下怎么样制作一个好的进度条。有已经做过的朋友也希望你们能共享一下代码。

另外一个问题:stata里能改动result window已经显示出来的东西吗?我觉得是不行的,不过我想确认一下。


我的进度条:
  1. * progress bar example
  2. local totaldate = `enddate'-`startdate'+1
  3. forvalues currentdate = `startdate'/`enddate' {
  4.         * progress bar
  5.         if mod((`currentdate'-`startdate'+1), `totaldate'/10)<1 {
  6.                 noi di %2.0f (`currentdate'-`startdate'+1)/`totaldate'*100 "%" _continue
  7.         }
  8.         else if mod((`currentdate'-`startdate'+1), `totaldate'/50)<1 {
  9.                 noi di "." _continue
  10.         }
  11. }       
复制代码
如果循环次数足够, 比如从379到852, 那么进度条会显示:
....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%

但是如果次数不足,比如从15到83,进度条会显示为:
....10%....20%....30%....41%....51%....61%....71%....81%....91%....100%

如果更少一些,比如从1到7, 进度条会显示为:
14%29%43%57%71%86%100%

大家对以下问题有什么建议吗?
1. 怎么才能让进度条既适应次数多的循环,也适应次数少的循环?
2. 有没有可能让进度条给出剩余的训话所需要的时间的估计值?
3. 如果单次循环需要的时间越来越多(比如日期越往后样本量越大),又没有可能给进度条“加权”一下,使进度条基本匀速前进,而不是很快的从1到90%然后最后10%花很久才能走完?


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Stata tata forvalues Progress forvalue 进度

沙发
dxystata 发表于 2012-9-10 11:07:34
R中是可以实现的,Stata中不知能否实现和R一样的效果。

藤椅
夏目贵志 发表于 2012-9-10 11:50:45
dxystata 发表于 2012-9-10 12:07
R中是可以实现的,Stata中不知能否实现和R一样的效果。
能介绍一下原理么?具体怎么实现的问题我慢慢研究。我只要知道一个有效的算法就好了。语言描述都行。谢谢~

板凳
sungmoo 发表于 2012-9-10 12:23:17
http://statajournal.com/article.html?article=pr0030
(Stata tip 41: Monitoring loop iterations)

使用_dots.ado

报纸
dxystata 发表于 2012-9-10 12:46:35
sungmoo 发表于 2012-9-10 12:23
http://statajournal.com/article.html?article=pr0030
(Stata tip 41: Monitoring loop iterations)

使用_dots.ado
bootstrap permute中用的就是这种。

地板
夏目贵志 发表于 2012-9-10 21:03:53
sungmoo 发表于 2012-9-10 13:23
http://statajournal.com/article.html?article=pr0030
(Stata tip 41: Monitoring loop iterations)

...
非常感谢。今天回去看看具体是怎么实现的。感觉上好像还是不能根据时间来显示dots,换句话说,上述问题中第3点还是有待解决。不过第一点应该是可以圆满解决了。

7
tq1258 学生认证  发表于 2017-11-16 12:56:58
楼主有做好进度条设置么,在做数据大一点的回归stata太慢了,又不知道完成了多少非常纠结啊

8
wisdomhong 发表于 2019-2-21 15:57:35
用_dots命令解决了,谢谢分享

9
frederick2012 发表于 2019-3-15 19:34:08
wisdomhong 发表于 2019-2-21 15:57
用_dots命令解决了,谢谢分享
求问怎么解决的 我怎么没有找到这个命令

10
frederick2012 发表于 2019-3-15 20:12:24
请问夏老师现在这个问题有什么好的解决吗,我只想实现普通的进度条就好,每次等的太漫长了

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-12 07:32