全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
8510 7
2009-04-27

各位大牛,大家好!

我最近在用STATA处理数据,学得尚浅。有个问题不懂,希望大家能指导我一下:

我面临这样一个问题,大家我该怎么编写命令呢?

假如现有400个上市公司(20个行业),对于每个公司i(i=1,2,……),我需要用所在行业的其他公司进行回归(假设为y=a+b1X1+b2X2)测算回归系数(每次回归不含i公司,有excluding某公司再进行回归的语句吗?),再用这个回归模型求出i公司Y的估计值,最后确定每个公司iY未预期值(和可操纵的应计利润差不多的一个思路)。

另外,如果这个过程中我还想记录下每次回归的回归系数,以便按行业去求回归系数的平均值,还需要增加哪个命令呢?

谢谢大家!不胜感激!

二维码

扫码加我 拉你入群

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

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

全部回复
2009-4-27 22:09:00
用循环语句编一个小程序即可,
另外,每次回归的系数可用scalar命令保存下来,最后求平均即可

具体怎么做要看你的数据


二维码

扫码加我 拉你入群

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

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

2009-4-30 10:51:00



如下小程序应该能满足你的要求:

// 生成模拟数据
clear
set obs 400
gen id = 600000 + _n
gen industry = 1+int(20*uniform())
gen x1 = uniform()
gen x2 = uniform()
gen y = industry + industry*x1 + 2*industry*x2 + invnormal(uniform())
move y x1
gen con = .
gen b1 = .
gen b2 = .
gen N = .
gen r2adj = .

// 回归
quietly forval i = 1/400 {
 regress y x1 x2 if industry == industry[`i'] & _n != `i'
 matrix eb = e(b)
 replace con = eb[1,3] in `i' // 回归常数项
 replace b1 = eb[1,1] in `i' // 回归系数1
 replace b2 = eb[1,2] in `i' // 回归系数2
 replace N = `e(N)' in `i' // 样本数
 replace r2adj = `e(r2_a)' in `i' // 调整后r2
}

// 生成未预期值
gen resid = y - con - b1*x1 - b2*x2

// 生成行业系数平均值
sort industry
by industry: egen m_b1 = mean(b1)
by industry: egen m_b2 = mean(b2)

// 保存
save result, replace

也请论坛高手就该问题继续支招,让我也学习学习!

[此贴子已经被作者于2009-4-30 10:56:03编辑过]


eblog  金币 +5  金钱 +100  魅力 +20  经验 +50  奖励 2009-4-30 14:55:02
二维码

扫码加我 拉你入群

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

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

2009-4-30 14:18:00
以下是引用voodoo在2009-4-30 10:51:00的发言:

 
g a=.
g b1=.
g b2=.
g yp=.
g e=.

forv i=1/400{
reg y x1 x2 if industry==industry[`i']&_n!=`i'
mat eb=e(b)
predict p in `i', xb
replace yp=p in `i'
replace e=y-yp in `i`
replace a=eb[1,3] in `i'
replace b1=eb[1,1] in `i'
replace b2=eb[1,2] in `i'
drop p
}

bys industry: egen m_b1=mean(b1)
bys industry: egen m_b2=mean(b2)

*完全按voodoo的思路。

二维码

扫码加我 拉你入群

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

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

2009-5-1 18:04:00


发现voodoo程序中的
    matrix eb = e(b)
    replace con = eb[1,3] in `i' // 回归常数项
    replace b1 = eb[1,1] in `i' // 回归系数1
    replace b2 = eb[1,2] in `i' // 回归系数2

可以
    replace con = _b[_con] in `i' // 回归常数项
    replace b1 = _b[x1] in `i' // 回归系数1
    replace b2 = _b[x2] in `i' // 回归系数2

替换之,似乎简单一点点。

发现sungmoo程序中的
      predict p in `i', xb
     
replace yp = p in `i'
      replace e = y - yp in `i`
      ....
      drop p


可以
      predict resid, residuals
      replace e = resid in `i`
      ...
      drop resid

替换之,似乎也简单一点。




[此贴子已经被作者于2009-5-1 18:23:09编辑过]

二维码

扫码加我 拉你入群

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

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

2009-5-2 00:25:00

运行成功!!!太感谢了!解决了我好久几来的难题!太感谢了,好开心。谢谢各位

二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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