楼主: kyxxx
2782 7

[编程问题求助] 求问大神循环多次 多元线性回归 如何提取pvalue~! [推广有奖]

  • 0关注
  • 0粉丝

已卖:8份资源

高中生

80%

还不是VIP/贵宾

-

威望
0
论坛币
59 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
674 点
帖子
15
精华
0
在线时间
41 小时
注册时间
2012-7-5
最后登录
2022-1-8

楼主
kyxxx 发表于 2017-8-1 09:31:00 |AI写论文
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)。
关键词:pvalue 多元线性回归 value 线性回归 alue stata 回归 提取pvalue

沙发
黃河泉 在职认证  发表于 2017-8-1 09:31:01
kyxxx 发表于 2017-8-2 20:13
不太明白诶 可不可以详细点呀~
这个较简单
  1. rangestat (reg) invest mvalue kstock, interval(year . .) by(company)
  2. gen df = reg_nobs - 3
  3. foreach v in mvalue kstock {
  4.   gen double `v'_t = b_`v'/se_`v'
  5.   gen double `v'_p = 2*ttail(df, abs(`v'_t))
  6. }
复制代码
请安装 ssc install rangestat 并见其说明 (help rangestat)。

藤椅
黃河泉 在职认证  发表于 2017-8-1 16:18:54
請先安装 ssc install rangestat 与 ssc install rangerun,然后修改
  1. clear all
  2. webuse grunfeld, clear

  3. * define the program and include all desired commands
  4. program myreg
  5.    if _N < 5 exit   
  6.    regress invest mvalue
  7.    gen b_mvalue = _b[mvalue]
  8.    gen b_cons = _b[_cons]   
  9.    gen t_mvalue = _b[mvalue]/_se[mvalue]
  10.    gen t_cons = _b[_cons]/_se[_cons]
  11.    gen p_mvalue =  2*ttail(e(df_r), abs(t_mvalue))
  12.    gen p_cons = 2*ttail(e(df_r), abs(t_cons))   
  13. end

  14. rangerun myreg, interval(year . .) by(company) use(invest mvalue)
复制代码

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

报纸
kyxxx 发表于 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 。

7
kyxxx 发表于 2017-8-3 13:12:21
黃河泉 发表于 2017-8-3 11:45
老实说,在可能的范围内,我几乎不用 foreach/forvalues 。
那还是用while吗

8
kyxxx 发表于 2017-8-3 13:12:22
黃河泉 发表于 2017-8-3 11:45
老实说,在可能的范围内,我几乎不用 foreach/forvalues 。
那还是用while吗

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

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