楼主: kukudoudou
55767 30

[回归分析求助] 如何在bys :reg后继续预测yhat? [推广有奖]

  • 1关注
  • 0粉丝

已卖:1份资源

硕士生

26%

还不是VIP/贵宾

-

威望
0
论坛币
121 个
通用积分
1.0600
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
1186 点
帖子
77
精华
0
在线时间
183 小时
注册时间
2007-6-26
最后登录
2022-8-2

楼主
kukudoudou 发表于 2012-4-6 12:44:42 |AI写论文
10论坛币
第一步是分年份和分行业做回归
bys industry year:reg y x1 x2 x3 x4
然后我希望可以得到预测值,但是如果这个命令后用
predict yhat, xb
预测的值只是最后一个回归方程的预测值,如何分年份和分行业做回归?

最佳答案

voodoo 查看完整内容

试试: statsby _b, by(industry year) saving(123.dta, replace): reg y x1 x2 x3 x4 merge m:1 industry year using 123.dta gen yhat = x1*_b_x1 + x2*_b_x2 + x3*_b_x3 + x4*_b_x4 + _b_cons
关键词:hat REG Industry predict USTR 如何

沙发
voodoo 发表于 2012-4-6 12:44:43
试试:
statsby _b, by(industry year) saving(123.dta, replace): reg y x1 x2 x3 x4
merge m:1 industry year using 123.dta
gen yhat = x1*_b_x1 + x2*_b_x2 + x3*_b_x3 + x4*_b_x4 + _b_cons
已有 4 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
池塘lll + 1 + 1 + 1 好早的帖子,终于找到正确进行批量回归以及.
shisune + 5 + 3 + 3 + 3 精彩帖子
friends326 + 1 + 1 + 1 精彩帖子
Sunknownay + 100 + 10 + 1 + 1 + 1 热心帮助其他会员

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

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

藤椅
sungmoo 发表于 2012-4-6 18:00:55

板凳
sungmoo 发表于 2012-4-6 18:24:50
reg y (industry#year)##c.x*
predict yhat
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Sunknownay + 100 + 10 + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 100  论坛币 + 10  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

报纸
kukudoudou 发表于 2012-4-18 14:47:04
voodoo 发表于 2012-4-6 12:44
试试:
statsby _b, by(industry year) saving(123.dta, replace): reg y x1 x2 x3 x4
merge m:1 industr ...
谢谢你,是个好方法

地板
kukudoudou 发表于 2012-4-18 14:47:49
sungmoo 发表于 2012-4-6 18:24
reg y (industry#year)##c.x*
predict yhat
楼上的答复确实能解决我的问题
不是很明白您的回复,不知道是否可以解释一下,我是菜鸟,不好意思。。。

7
无尘第二 发表于 2012-6-10 20:21:12
voodoo 发表于 2012-4-6 12:44
试试:
statsby _b, by(industry year) saving(123.dta, replace): reg y x1 x2 x3 x4
merge m:1 industr ...
试了一下,感觉有点问题,最后一句命令应该是:
gen yhat = x1*_b[x1]-_b[x2]*x2- x3*_b[x3] - x4*_b[x4]
而且,"="后面的y应该去掉,否则就不是预测值yhat,而变成残差res了。

另外,貌似用下面的命令和voodoo的命令结果是一样的
bys industry year:reg y x1 x2 x3 x4
predict yhat

请voodoo指教。


8
voodoo 发表于 2012-6-10 22:38:42
无尘第二 发表于 2012-6-10 20:21
试了一下,感觉有点问题,最后一句命令应该是:
gen yhat = x1*_b[x1]-_b[x2]*x2- x3*_b[x3] - x4*_b[ ...
原代码有误,不能用 x1*_b[x1]……,而应该用x1*_b_x1,……。已修改。试试。
巫毒上传,必属佳品!
坛友下载,三思后行!

9
无尘第二 发表于 2012-6-11 22:50:10
voodoo 发表于 2012-6-10 22:38
原代码有误,不能用 x1*_b[x1]……,而应该用x1*_b_x1,……。已修改。试试。
return_residual.xls (2.05 MB) 奇怪,还是不对。不清楚问题出在哪里?跟下面连玉君老师的代码相差挺大。
egen t = group(year)
qui sum t
local Nt = r(max)
egen s = group(ind)
qui sum s
local Ns = r(max)
gen res = .
forvalues t = 1/`Nt'{
    forvalues s = 1/`Ns'{
       cap qui reg return returnl1 size if (t==`t' & s==`s')
           cap qui predict e if e(sample),res
           cap qui replace res = e if e(sample)
       cap drop e
    }
}
我还上传了一个论坛里有的例子,voodoo有兴趣可以试看看。

10
voodoo 发表于 2012-6-12 22:48:56
无尘第二 发表于 2012-6-11 22:50
奇怪,还是不对。不清楚问题出在哪里?跟下面连玉君老师的代码相差挺大。
egen t = group(year)
qui  ...
我做了一下,结果一样的!
// 方法一
egen t = group(year)
qui sum t
local Nt = r(max)
egen s = group(ind)
qui sum s
local Ns = r(max)
gen res = .
forvalues t = 1/`Nt' {
     forvalues s = 1/`Ns' {
        cap qui reg return returntl1 size if (t==`t' & s==`s')
        cap qui predict e if e(sample), res
        cap qui replace res = e if e(sample)
        cap drop e
   }
}
save example, clear

// 方法二
statsby _b, by(ind year) saving(123.dta, replace): reg return returntl1 size
merge m:1 ind year using 123.dta
gen res2 = return - returntl1*_b_returntl1 - size*_b_size - _b_cons

// sungmoo的方法
set matsize 1000
qui reg return (s#t)##(c.returntl1 c.size)
predict res3, res

// 确认结果
sc res3 res2 res

Graph.png
另:你把变量returntl1写成returnl1啦;数据中stkcd和year无法唯一识别观测值,奇怪。
duplicates tag stkcd year, gen(_tag)
br if _tag

Graph.png (8.59 KB)

Graph.png

已有 2 人评分学术水平 热心指数 信用等级 收起 理由
潇潇木枼 + 1 + 1 + 1 精彩帖子
无尘第二 + 1 + 1 + 1 对论坛有贡献

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

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

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-9 06:51