全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
7127 14
2010-02-05
悬赏 100 个论坛币 已解决
现有100家公司。ID号从1-120,就是中间有些ID号是没有的。 在编程循环里面,有些ID号在经过i+1步骤后发现找不到ID号了,STATA自己停止运算。有什么办法跳过这些空ID号,让程序继续运行嘛? 哪位大牛来指导下吧?

部分程序段:
sort firm_id month
egen t=max(firm_id)
gen beta=.
local t1=1
while `t1'<=t{
reg Rt index_ret if firm_id==`t1'
replace beta=_b[index_ret] if firm_id==`t1'
local t1=`t1'+1 //* 遇见空ID号会停止,怎么处理?*//
}

最佳答案

ctx5518 查看完整内容

while `t1'0 { reg Rt index_ret if firm_id==`t1' replace beta=_b if firm_id==`t1' local t1=`t1'+1 } else { local t1=`t1'+1 } }
二维码

扫码加我 拉你入群

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

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

全部回复
2010-2-5 12:22:49
while `t1'<=t{
           count if firm_id==`t1'
           local obs=r(N)
           if `obs'>0 {
        reg Rt index_ret if firm_id==`t1'
        replace beta=_b[index_ret] if firm_id==`t1'
        local t1=`t1'+1
         }
        else {
        local t1=`t1'+1
        }
}
二维码

扫码加我 拉你入群

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

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

2010-2-5 15:23:11
*对id的观测值非缺失的观测值组操作
levelsof id
foreach i of num `r(levels)'{
  reg …… if id==`i'
  replace ……… if id==`i'
}
二维码

扫码加我 拉你入群

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

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

2010-2-5 17:07:22
试试这个:
tsset firm_id year
egen id123 = group(frim_id)

然后,用 id123 执行循环操作:
tsset id123 year
local N=r(imax)
forvalues i = 1/`N'{
    qui reg Rt index_ret if  id123==`i'
    qui replace beta=_b[index_ret] if id123==`i'
}
二维码

扫码加我 拉你入群

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

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

2010-2-5 18:22:27
wqdy 发表于 2010-2-5 12:22 现有100家公司。ID号从1-120,就是中间有些ID号是没有的。 在编程循环里面,有些ID号在经过i+1步骤后发现找不到ID号了,STATA自己停止运算。有什么办法跳过这些空ID号,让程序继续运行嘛? 哪位大牛来指导下吧?
*只对id的观测值在1-120中的观测值组操作

forv i=1/120{
  count if id==`i'
  if r(N)>0{
    reg …… if id==`i'
    replace …… if id==`i'
  }
}
二维码

扫码加我 拉你入群

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

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

2010-2-5 20:52:23
天啊。一个帖子带来如此多的大牛,小女子太感谢了。怎么发钱?
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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