楼主: yanxuqi
8669 7

[求助]关于用STATA分行业进行回归并记录残值,急求助 [推广有奖]

  • 0关注
  • 0粉丝

大专生

55%

还不是VIP/贵宾

-

威望
0
论坛币
816 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
544 点
帖子
63
精华
0
在线时间
28 小时
注册时间
2005-11-18
最后登录
2020-11-24

楼主
yanxuqi 发表于 2009-4-27 21:48:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

各位大牛,大家好!

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

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

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

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

谢谢大家!不胜感激!

二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 分行业 急求助 回归系数 Stata 记录 分行业

回帖推荐

sungmoo 发表于8楼  查看完整内容

以下是引用yanxuqi在2009-4-27 21:48:00的发言:假如现有400个上市公司(20个行业),对于每个公司i(i=1,2,……),我需要用所在行业的其他公司进行回归(假设为y=a+b1X1+b2X2)测算回归系数(每次回归不含i公司,有excluding某公司再进行回归的语句吗?),再用这个回归模型求出i公司Y的估计值,最后确定每个公司iY未预期值(和可操纵的应计利润差不多的一个思路)。另外,如果这个过程中我还想记录下每次回归的回归系数,以便按行 ...

voodoo 发表于5楼  查看完整内容

发现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 &nb ...

sungmoo 发表于4楼  查看完整内容

以下是引用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', xbreplace 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的思路。

voodoo 发表于3楼  查看完整内容

如下小程序应该能满足你的要求:// 生成模拟数据clearset obs 400gen id = 600000 + _ngen industry = 1+int(20*uniform())gen x1 = uniform()gen x2 = uniform()gen y = industry + industry*x1 + 2*industry*x2 + invnormal(uniform())move y x1gen 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 ...

eblog 发表于2楼  查看完整内容

用循环语句编一个小程序即可,另外,每次回归的系数可用scalar命令保存下来,最后求平均即可具体怎么做要看你的数据

本帖被以下文库推荐

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

具体怎么做要看你的数据


藤椅
voodoo 发表于 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
巫毒上传,必属佳品!
坛友下载,三思后行!

板凳
sungmoo 发表于 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的思路。

报纸
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编辑过]

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

地板
yanxuqi 发表于 2009-5-2 00:25:00

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

7
sungmoo 发表于 2009-5-3 22:24:00
以下是引用voodoo在2009-5-1 18:04:00的发言:发现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

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

楼主不想要yp的结果吗?

8
sungmoo 发表于 2009-5-3 23:00:00
以下是引用yanxuqi在2009-4-27 21:48:00的发言:假如现有400个上市公司(20个行业),对于每个公司i(i=1,2,……),我需要用所在行业的其他公司进行回归(假设为y=a+b1X1+b2X2)测算回归系数(每次回归不含i公司,有excluding某公司再进行回归的语句吗?),再用这个回归模型求出i公司Y的估计值,最后确定每个公司iY未预期值(和可操纵的应计利润差不多的一个思路)。另外,如果这个过程中我还想记录下每次回归的回归系数,以便按行业去求回归系数的平均值,还需要增加哪个命令呢?

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

可用

recode id industry y x1 x2 (nonm=.), gen(a b1 b2 yp e)

代替

******************

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

可用

table industry,c(mean b1 mean b2)

代替

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

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