楼主: carweed
11710 31

[回归分析求助] 请教:为何Stata的回归计算速度比SAS慢那么多呢? [推广有奖]

  • 1关注
  • 6粉丝

教授

93%

还不是VIP/贵宾

-

威望
0
论坛币
86 个
通用积分
86.9727
学术水平
9 点
热心指数
8 点
信用等级
6 点
经验
117421 点
帖子
1014
精华
0
在线时间
2314 小时
注册时间
2009-1-19
最后登录
2024-4-22

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
       请教一下大家:为何Stata的回归计算速度比SAS慢那么多呢?
       我有一个循环回归的程序,大概10来年,每年有2000个左右的公司,就这么两万来个回归,stata计算要5~6个小时!!还是MP版的,i5的CPU。据朋友说,他用SAS不到半小时就出结果了。。。请教一下大家,为啥stata的计算这么慢呢?谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata CPU

本帖被以下文库推荐

沙发
voodoo 发表于 2013-9-19 17:55:57 |只看作者 |坛友微信交流群
“大概10来年,每年有2000个左右的公司,就这么两万来个回归”——每个“公司年”一个回归吗??

把程序(最好还有部分数据)放出来啊,坛友们才能帮你给出改进的方向。







巫毒上传,必属佳品!
坛友下载,三思后行!

使用道具

藤椅
xingxf 发表于 2013-9-19 20:07:52 |只看作者 |坛友微信交流群
我用Stata连续跑9万个回归并预测(3万events,分别用market model,Fama-French 3-factor model,Fama-French 4-factor model计算abnormal returns)也没用1小时。这么笼统的说,没办法比较Stata和SAS哪个快的。按道理来说,应该Stata快,一个在内存里跑,一个靠硬盘,内存和硬盘哪个快呢?还是把程序写出来,要不然别人没办法帮你看的。

使用道具

板凳
carweed 发表于 2013-9-20 20:31:20 |只看作者 |坛友微信交流群
xingxf 发表于 2013-9-19 20:07
我用Stata连续跑9万个回归并预测(3万events,分别用market model,Fama-French 3-factor model,Fama-Fren ...
谢谢!
我的程序如下;

                forvalues i=1(1)12  {
                        forvalues j = 1/2300        {
                                qui {
                                         cap reg W L2C LC C FC F2 if (year==`i' & id==`j')
                                         cap predict ttt if e(sample),resid
                                         cap replace www = ttt if e(sample)
                                         cap drop ttt
                                }
                        }
                }

麻烦你看看一下是咋回事?谢谢~!

使用道具

报纸
carweed 发表于 2013-9-20 20:51:38 |只看作者 |坛友微信交流群
voodoo 发表于 2013-9-19 17:55
“大概10来年,每年有2000个左右的公司,就这么两万来个回归”——每个“公司年”一个回归吗??

把程序 ...
程序已经放出来了 麻烦你给看看 谢谢~!

使用道具

地板
xingxf 发表于 2013-9-20 21:18:35 |只看作者 |坛友微信交流群
carweed 发表于 2013-9-20 20:31
谢谢!
我的程序如下;
其实能不用循环最好不用,循环本身是比较费时间的。如果就是回归的话根本用不着循环,直接reg是可以和bys一起使用的:
bys year id: reg W L2C LC C FC F2
看你的意思还要生成residual,
可以用statsby _b, by(year id) clear: reg W L2C LC C FC F2
这样会生成新的dta文件,包含所有回归的系数,有了这些系数,不就可以做预测了么。
已有 1 人评分经验 论坛币 学术水平 收起 理由
dxystata + 20 + 50 + 1 热心帮助其他会员

总评分: 经验 + 20  论坛币 + 50  学术水平 + 1   查看全部评分

使用道具

7
carweed 发表于 2013-9-20 22:34:08 |只看作者 |坛友微信交流群
xingxf 发表于 2013-9-20 21:18
其实能不用循环最好不用,循环本身是比较费时间的。如果就是回归的话根本用不着循环,直接reg是可以和bys ...
statsby _b, by(year id) clear: reg W L2C LC C FC F2

真是异常的巧妙啊!!!佩服!!!

我一开始之所以没有用by语句,就是因为要生成残差。你这个方法就可以了 多谢多谢!

使用道具

8
voodoo 发表于 2013-9-20 23:44:00 |只看作者 |坛友微信交流群
xingxf 发表于 2013-9-20 21:18
其实能不用循环最好不用,循环本身是比较费时间的。如果就是回归的话根本用不着循环,直接reg是可以和bys ...
正解!先statsby ...,然后merge ...,然后gen ...。我相信应该不用半个小时就能搞定!

(ps:个人认为,statsby的底层也是循环,只是statsby命令肯定经过优化,其执行效率要比我们"随意"写的forval ... 循环来得高。)








巫毒上传,必属佳品!
坛友下载,三思后行!

使用道具

9
xingxf 发表于 2013-9-21 00:40:42 |只看作者 |坛友微信交流群
voodoo 发表于 2013-9-20 23:44
正解!先statsby ...,然后merge ...,然后gen ...。我相信应该不用半个小时就能搞定!

(ps:个人认为 ...
恩两万个回归,statsby估计也就15分钟?应该差不多吧。

可以看看statsby的ado,哈哈

使用道具

10
carweed 发表于 2013-9-21 08:49:44 |只看作者 |坛友微信交流群
xingxf 发表于 2013-9-21 00:40
恩两万个回归,statsby估计也就15分钟?应该差不多吧。

可以看看statsby的ado,哈哈
已经一个小时了 还没有算出来。。。
这是怎么了?莫非跟stata的版本有关吗?我的是11.2MP

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 19:04