楼主: sicau-zl
13057 11

[编程问题求助] stata 循环语句请教 [推广有奖]

  • 1关注
  • 15粉丝

已卖:567份资源

教授

25%

还不是VIP/贵宾

-

威望
0
论坛币
4066 个
通用积分
9.0848
学术水平
23 点
热心指数
50 点
信用等级
18 点
经验
40884 点
帖子
1118
精华
0
在线时间
1131 小时
注册时间
2009-4-17
最后登录
2025-5-11

楼主
sicau-zl 在职认证  发表于 2017-8-1 22:36:34 |AI写论文
30论坛币
各位大神,现有500的Y,分别命名为Y1、Y2、……Y500。 6个自变量,分别为A、B、C、D、E、F,现在需要分别对500个Y做回归分析,并显示出各个解释变量的回归系数,如何写程序啊?我用的forvalues 语句,不知哪里出错了,老是跑不出来结果,请教大神帮忙,非常感谢。

最佳答案

506232839 查看完整内容

gen betaa=. //生成一个变量存储回归系数,这个存储自变量A的回归系数,下面类推 gen betab=. gen betac=. gen betad=. gen betae=. local i=1 foreach y of varlist Y1-Y500 { reg `y' A B C D E replace betaa=_b[A] in `i' replace betab=_b in `i' replace betac=_b[C] in `i' replace betad=_b[D] in `i' replace betae=_b[E] in `i' local i=`i'+1 }
关键词:Stata tata 循环语句 forvalues forvalue
任何事情都要有自己的观点,查他个祖宗三代,提倡学术批判,不安于现状!

沙发
506232839 发表于 2017-8-1 22:36:35
gen betaa=.       //生成一个变量存储回归系数,这个存储自变量A的回归系数,下面类推
gen betab=.
gen betac=.
gen betad=.
gen betae=.
local i=1
foreach y of varlist Y1-Y500 {
reg `y' A B C D E
replace betaa=_b[A] in `i'
replace betab=_b[B] in `i'
replace betac=_b[C] in `i'
replace betad=_b[D] in `i'
replace betae=_b[E] in `i'
local i=`i'+1
}

藤椅
deem 学生认证  发表于 2017-8-1 23:09:15
要用foreach

  1. set matsize 700                                // 设置矩阵大小
  2. foreach y of varlist Y1-Y500 {
  3. qui: reg `y' A B C D E
  4. matrix beta=nullmat(beta) \ e(b)       //将回归结果保存到矩阵beta中
  5. }

  6. clear                                               //删去现有的数据,如有需要先保存原数据。
  7. svmat beta, clear                             //将矩阵beta转化为内存中的数据
复制代码


板凳
506232839 发表于 2017-8-2 00:01:05
  1. gen betaa=.       //生成一个变量存储回归系数,这个存储自变量A的回归系数,下面类推
  2. gen betab=.
  3. gen betac=.
  4. gen betad=.
  5. gen betae=.
  6. local i=1
  7. foreach y of varlist Y1-Y500 {
  8. reg `y' A B C D E
  9. replace betaa=_b[A] in `i'
  10. replace betab=_b[B] in `i'
  11. replace betac=_b[C] in `i'
  12. replace betad=_b[D] in `i'
  13. replace betae=_b[E] in `i'
  14. local i=`i'+1
  15. }
复制代码

报纸
sicau-zl 在职认证  发表于 2017-8-2 15:15:21
506232839 发表于 2017-8-2 00:01
您好。很感谢您的精彩回复,但是我还是遇到几个问题,我采用你的程序进行回归时,总是出现几个错误。我的代码是:
gen betamkt=.   
gen betasmb=.  
Gen betahml=.
local i=1
foreach y of varlist y1-y500 {
reg `y' mkt smb hml
replace betamkt=_b[mkt] in `i'
replace betasmb=_b[smb] in `i'
replace betahml=_b[hml] in `i'
local i=`i'+1
}
这种情况下,就会出现
beta ambiguous abbreviation

如果采用以下程序
gen betamkt=.   
local i=1
foreach y of varlist y1-y500 {
reg `y' mkt
replace betamkt=_b[mkt] in `i'
local i=`i'+1
}
就是出现  
Obs. nos. out of range
r(198);

能否帮忙指导下呢

地板
506232839 发表于 2017-8-2 15:28:19
应该可以啊,你qq多少?

7
sicau-zl 在职认证  发表于 2017-8-2 18:51:30
506232839 发表于 2017-8-2 15:28
应该可以啊,你qq多少?
565986231

8
zhaoxian经管 发表于 2019-3-17 11:49:43
506232839 发表于 2017-8-1 22:36
gen betaa=.       //生成一个变量存储回归系数,这个存储自变量A的回归系数,下面类推
gen betab=.
g ...
我根据您的程序改版的
foreach r of varlist r1-r145{
arch `r' L(1).`r', arch(1) garch(1) dist(t) nolog
predict e_`r',res
predict h_`r',variance
}
总是提示我
flat log likelihood encountered, cannot find uphill direction
这是什么情况

9
linxiyu_sufe 发表于 2020-2-20 10:58:22
506232839 发表于 2017-8-1 22:36
gen betaa=.       //生成一个变量存储回归系数,这个存储自变量A的回归系数,下面类推
gen betab=.
g ...
这样是能够生成的,只是不知道有没有办法讲生成的系数和R平方全部导出成一个序列呢

10
黃河泉 在职认证  发表于 2020-2-20 11:16:52
请据以更改 (请 ssc install asreg):
  1. clear
  2. set obs 50
  3. set seed 98034

  4. gen y1 = runiform()
  5. gen y2 = runiform()
  6. gen y3 = runiform()
  7. gen A = runiform()
  8. gen B = runiform()
  9. gen C = runiform()

  10. gen t = _n
  11. reshape long y, i(t) j(id)
  12. sort id t
  13. bys id: asreg y A B C, fit
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

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

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

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