楼主: carweed
13598 31

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

11
carweed 发表于 2013-9-21 08:50:53
voodoo 发表于 2013-9-20 23:44
正解!先statsby ...,然后merge ...,然后gen ...。我相信应该不用半个小时就能搞定!

(ps:个人认为 ...
光statsby.... 就1个小时了
不知道为啥这么慢呢?

12
carweed 发表于 2013-9-21 09:06:49
xingxf 发表于 2013-9-21 00:40
恩两万个回归,statsby估计也就15分钟?应该差不多吧。

可以看看statsby的ado,哈哈
算出来了  大概用了1个半小时   计算效率提高了不少!谢谢~!

但是还是达不到你说的15分钟的水平   莫非跟软件的版本有关系?11.2MP

计算过程中,CPU使用率一直在50%以下

13
voodoo 发表于 2013-9-21 09:29:08
carweed 发表于 2013-9-21 08:50
光statsby.... 就1个小时了
不知道为啥这么慢呢?
你的dta文档是否很大?是否包含很多非必须变量?
建议你可试试(大致思路):
1. 仅保留回归中必须使用到的变量;

keep year id W L2C LC C FC F2

2. 将每一年度的数据存为一个数据集如_data_1.dta, _data_2.dta, ...:

forv i = 1/12 {
    preserve
    keep if year == `i'
    save _data_`i'.dta, replace
    restore
}

3. 就每一年度的数据集就每一公司id进行回归:
forv i = 1/12 {

    use _data_`i', clear
    statsby _b, by(id) clear: reg W L2C LC C FC F2
    gen year = `i'
    save _b_`i'.dta, replace
}

4. append回归系数数据集
use _b_1.dta, clear
forv i = 2/12 {
    append using _b_`i'.dta
}
save _b.dta, clear

5. merge ..., gen ..., erase ...


已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
xingxf + 5 + 5 + 5 热心帮助其他会员
dxystata + 20 + 50 + 1 + 1 鼓励积极发帖讨论

总评分: 经验 + 20  论坛币 + 50  学术水平 + 6  热心指数 + 6  信用等级 + 5   查看全部评分

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

14
dxystata 发表于 2013-9-21 09:49:20
xingxf 发表于 2013-9-20 21:18
其实能不用循环最好不用,循环本身是比较费时间的。如果就是回归的话根本用不着循环,直接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文件,包含所有回归的系数,有了这些系数,不就可以做预测了么。
statsby _b, by(year id) clear: reg W L2C LC C FC F2
能否解决一下具体运行过程?

15
dxystata 发表于 2013-9-21 09:55:55
sysuse auto, clear
statsby _b, by(foreign) : reg price mpg
不用clear也可以得到同样的结果啊!

16
carweed 发表于 2013-9-21 15:07:11
voodoo 发表于 2013-9-21 09:29
你的dta文档是否很大?是否包含很多非必须变量?
建议你可试试(大致思路):
1. 仅保留回归中必须使用 ...
恩!确实数据集比较大,里面有很多回归不用的变量。

你这个思路应该能大大加快运算速度!很厉害!!点赞!!!

17
voodoo 发表于 2013-9-21 15:21:31
carweed 发表于 2013-9-21 15:07
恩!确实数据集比较大,里面有很多回归不用的变量。

你这个思路应该能大大加快运算速度!很厉害!!点 ...
你有空试一下,再告诉大家结果啦!









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

18
carweed 发表于 2013-9-21 15:35:00
voodoo 发表于 2013-9-21 09:29
你的dta文档是否很大?是否包含很多非必须变量?
建议你可试试(大致思路):
1. 仅保留回归中必须使用 ...
我表示:太!快!了!
最初要7个多小时,改进到4个小时,到xingxf的1个半小时,你这个只要5!分!钟!太牛了!膜拜!

谢谢大家的帮助~!

19
carweed 发表于 2013-9-21 16:03:52
voodoo 发表于 2013-9-21 15:21
你有空试一下,再告诉大家结果啦!
试完了 吓死人的速度  不到五分钟!

20
xingxf 发表于 2013-9-21 18:21:56
dxystata 发表于 2013-9-21 09:55
sysuse auto, clear
statsby _b, by(foreign) : reg price mpg
不用clear也可以得到同样的结果啊!
结果肯定是一样的啊。clear是清空内存用的。

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-18 10:29