全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
8283 5
2012-04-19
悬赏 70 个论坛币 已解决
小弟现在有一个回归的命令,对三位数代码的行业进行回归然后保存到Excel。这个过程需要重复171次,每次换一个不同的行业。下面的命令中红字的部分就是表示行业代码
行业已经有了一组标准代码,从131一直到469,但是不连续。

怎样让下面这个程序自动执行171次,每次换一个行业(也就是红字的部分变换一下)呢?

clear all
use "C:\Users\Administrator\Desktop\新建文件夹\新数据2.dta", clear
keep if industry==191
xtbalance, range(2005 2007)
reg Y2 X1 X2, noc robust
est store R1
outreg2 using 2digit2.xls, cttop(OLS:C191) e(all) append
outreg2 using 2digitnoa2.xls, cttop(OLS:C191) noas append
xtabond2 Y2 X1 X2, gmm(X1) iv(zk allempl_arvenum X2) noc robust
est store G1
outreg2 using 2digit2.xls, cttop(GMM:C191) e(all) append
outreg2 using 2digitnoa2.xls, cttop(GMM:C191) noas append

最佳答案

sungmoo 查看完整内容

clear all set more off cap log close cd "C:\Users\Administrator\Desktop\新建文件夹" use "新新2位数行业新数据.dta", clear egen g=group(businessnature4) su g loc n=r(max) forv i=1/`n'{ preserve keep if g==`i' xtbalance, range(2005 2007) reg Y2 X1 X2, noc robust est store R1 outreg2 using 2digit3.xls, cttop(OLS:C`i') e(all) append outreg2 using 2digitnoa3.xls, cttop(OLS:C`i') noas app ...
二维码

扫码加我 拉你入群

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

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

全部回复
2012-4-19 05:43:02
clear all
set more off
cap log close
cd "C:\Users\Administrator\Desktop\新建文件夹"
use "新新2位数行业新数据.dta", clear
egen g=group(businessnature4)
su g
loc n=r(max)
forv i=1/`n'{
preserve
keep if g==`i'
xtbalance, range(2005 2007)
reg Y2 X1 X2, noc robust
est store R1
outreg2 using 2digit3.xls, cttop(OLS:C`i') e(all) append
outreg2 using 2digitnoa3.xls, cttop(OLS:C`i') noas append
xtabond2 Y2 X1 X2, gmm(X1) iv(zk allempl_arvenum X2) noc robust
est store G1
outreg2 using 2digit3.xls, cttop(GMM:C`i') e(all) append
outreg2 using 2digitnoa3.xls, cttop(GMM:C`i') noas append
restore
}
二维码

扫码加我 拉你入群

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

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

2012-4-19 05:53:06
*其他帖中已有相关讨论
egen g=group(industry)
su g
loc n=r(max)
forv i=1/`n'{
*循环中把红字 191 换成  `i'  即可。
}
二维码

扫码加我 拉你入群

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

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

2012-4-19 07:04:46
受益了,赶紧学了,哈哈哈哈
二维码

扫码加我 拉你入群

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

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

2012-4-20 18:58:46
sungmoo 发表于 2012-4-19 05:53
*其他帖中已有相关讨论
egen g=group(industry)
su g
还是不太明白啊,我之前的程序是贴在哪里呢?
是放在大括号里面吗?
但是还有一个问题,因为我每一次执行回归的时候都选择Keep某个行业的数据来做,等于把其他行业就删掉了。执行完了以后下次再回归都是clear all 然后再导入数据再做。

这样一循环就出问题了,因为你那个g生成是建立在数据已经导入数据的情况下啊,有没有什么办法不需要删除其他行业,直接对某个行业进行回归呢?
二维码

扫码加我 拉你入群

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

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

2012-4-20 19:01:24
sungmoo 发表于 2012-4-19 05:53
*其他帖中已有相关讨论
egen g=group(industry)
su g
clear all
set more off
cap log close
cd "C:\Users\Administrator\Desktop\新建文件夹"
use "新新2位数行业新数据.dta", clear
egen g=group(businessnature4)
su g
loc n=r(max)
forv i=1/`n'{
keep if businessnature4==`i'
xtbalance, range(2005 2007)
reg Y2 X1 X2, noc robust
est store R1
outreg2 using 2digit3.xls, cttop(OLS:C`i') e(all) append
outreg2 using 2digitnoa3.xls, cttop(OLS:C`i') noas append
xtabond2 Y2 X1 X2, gmm(X1) iv(zk allempl_arvenum X2) noc robust
est store G1
outreg2 using 2digit3.xls, cttop(GMM:C`i') e(all) append
outreg2 using 2digitnoa3.xls, cttop(GMM:C`i') noas append
}
上面这个程序,是这样吗?
但是你看循环语句里面,那个Keep实际上已经把其他行业的数据删掉了,怎么样再下次循环的时候把其他行业的数据找回来,或者有什么办法不需要删除其他行业呢?
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群