全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
2723 7
2017-08-01
悬赏 5 个论坛币 已解决
各位大神 我用了循环语句回归 得出系数 想提取p值,b1 和t_bo是可以提取出来的,经过循环之后会存储在stata的表格里,但是每次运行到replace p_bo 就会提示命令无效,同样的命令为什么到了p_bo就不行?
我是用t= b/se 就算出t,再用t调用函数求p的


reg rate3 bondr10y tspread cspread sml hml rmrf if code == `n'
  *estat vif
  replace b1=_b[bondr10y] in `n'
  replace t_bo = _b[bondr10y]/_se[bondr10y] in `n' //求出t值
  replace p_bo = 2*ttail(e(df_r), abs(`t_bo')) in `n'  //计算得出pvalue

******************************详细回归程序如下********************************************

*开头
cap log close
set more off
cd "E:\job\model"
use panalmix2.dta, clear
xtset fundid week
egen code = group(fundid)

//作图发现有好多异常值
graph hbox rate in 1/3080, over(fundid)
graph save "E:\job\model\ratebox40.gph", asis replace //保存图
graph use "E:\job\model\ratebox40.gph" //打开图


//删除离群点
gen rate3 = rate
*br
_pctile rate3, percentile (10 90)
drop if rate3 < r(r1)
drop if rate3 > r(r2)

*进行回归

gen b1=. //用b来记录5Y国债收益率系数
gen b2=. //记录期限利差系数
gen b3=. //记录信用利差系数
gen t_bo=.
gen t_ts=.
gen t_cs=.
gen p_bo=.
gen p_ts=.
gen p_cs=.
replace b1=_b[bondr10y]
replace t_bo = _b[bondr10y]/_se[bondr10y]
local 2*ttail(e(df_r), abs(`t_bo'))
di

forvalues n = 1/114{
  dis _s(8) `n'
  reg rate3 bondr10y tspread cspread sml hml rmrf if code == `n'
  *estat vif
  replace b1=_b[bondr10y] in `n'
  replace t_bo = _b[bondr10y]/_se[bondr10y] in `n' //求出t值
  replace p_bo = 2*ttail(e(df_r), abs(`t_bo')) in `n'  //计算得出pvalue

  replace b2=_b[tspread] in `n'
  replace t_ts= _b[tspread]/_se[tspread] in `n' //求出t值
  replace p_ts= 2*ttail(e(df_r),abs('t_ts')) in `n'  //计算得出pvalue

  replace b3=_b[cspread] in `n'
   local t_ts = _b[tspread]/_se[tspread]
   replace t_cs= _b[cspread]/_se[cspread] in `n' //求出t值
  replace p_cs=2*ttail(e(df_r),abs(`t_cs')) in `n'  //计算得出pvalue

  }
sum b1 b2 b3, d
*tabstat b1 p_bo b2 p_ts b3 p_cs,stats(mean sd p25 med p75 min max) c(s) f(%6.2f)
tabstat b1 p_bo b2 p_ts b3 p_cs,c(s) f(%6.2f)

最佳答案

黃河泉 查看完整内容

这个较简单请安装 ssc install rangestat 并见其说明 (help rangestat)。
二维码

扫码加我 拉你入群

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

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

全部回复
2017-8-1 09:31:01
kyxxx 发表于 2017-8-2 20:13
不太明白诶 可不可以详细点呀~
这个较简单
复制代码
请安装 ssc install rangestat 并见其说明 (help rangestat)。
二维码

扫码加我 拉你入群

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

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

2017-8-1 16:18:54
請先安装 ssc install rangestat 与 ssc install rangerun,然后修改
复制代码
二维码

扫码加我 拉你入群

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

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

2017-8-2 20:13:37
黃河泉 发表于 2017-8-1 16:18
請先安装 ssc install rangestat 与 ssc install rangerun,然后修改
不太明白诶 可不可以详细点呀~
二维码

扫码加我 拉你入群

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

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

2017-8-3 10:11:50
黃河泉 发表于 2017-8-1 16:18
請先安装 ssc install rangestat 与 ssc install rangerun,然后修改
可不可以再帮我看一下code为什么不会循环呢?
只能提取到code=1的数值

forvalues code = 1/3{  //code不同表示不同的基金
  local j = 1
    while day[`j']<791{     
      replace rate1 = rate in `j'    // 提取一支基金再一段时间内的数据
      replace bondr10y1 = bondr10y in `j'
      replace tspread1 = tspread in `j'
      replace cspread1 = cspread in `j'
      replace sml1 = sml in `j'
      replace hml1 = hml in `j'
      replace rmrf1 = rmrf in `j'
      dis _s(10) `j'
      local j = `j'+1
      }
    }
二维码

扫码加我 拉你入群

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

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

2017-8-3 11:45:27
kyxxx 发表于 2017-8-3 10:11
可不可以再帮我看一下code为什么不会循环呢?
只能提取到code=1的数值
老实说,在可能的范围内,我几乎不用 foreach/forvalues 。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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