作者KirinGuess (Kirin)
看板Statistics
标题Re: [程式] stata loop 问题
时间Thu Mar 21 07:30:34 2019
※ 引述《alexyerray (如是我闻)》之铭言:
: [软体程式类别]:
: stata
: [程式问题]:
: 做bsample 跑1000次回归取平均beta和pvalue
: [软体熟悉度]:
: 新手
: [问题叙述]:
: 1. 想对100万笔资料抽1000次,每次一万笔资料出来跑回归并同时记录
: 1000次回归的beta 和 p-value,前500多次都很正常,但到後面突然independent
: variable 的beta都会变成0(原本想这样算正常,因为我的independent variable是dummy
: 也许刚好都抽到0,都之後到1000次都是0,实在很怪
: [程式码]:
: ge coef=0 //删,不用
: ge z=0 //删,不用
: ge pvalue=0 //删,不用
: ge b1=0 //删,不用
: ge p=0 //删,不用
set matsize 1000
matrix b1 =J(1000,1,.)
matrix z =J(1000,1,.)
matrix p =J(1000,1,.)
: forvalues i=1(1)1000 {
use "100万笔资料的档案位置\档案名称.dta", clear
: bsample 10000
: di `i'
: reg sbuy_turn_w lagevent2 i.month_num i.zip i.dow , cluster(broker_id_num)
matrix b1[`i',1] =_b[lagevent2]
matrix z[`i',1] =_b[lagevent2] /_se[lagevent2]
matrix p[`i',1] = 2*normal(-abs(z))
: replace b1= _b[lagevent2] //删,不用
: replace z = _b[lagevent2] /_se[lagevent2] //删,不用
: replace p = 2*normal(-abs(z)) //删,不用
: replace coef=coef + b1 //删,不用
: replace pvalue = pvalue + p //删,不用
: }
: replace coef=coef/1000 //删,不用
: replace pvalue = pvalue/1000 //删,不用
mata: mean(st_matrix("b1"))
mata: mean(st_matrix("p" ))
: 实在想不通为什麽,还请stata的高手帮忙,非常感谢
另一个方法, 用指令simulate.
cap program drop simprog000
program define simprog000, rclass
use "100万笔资料的档案位置\档案名称.dta", clear
bsample 10000
reg sbuy_turn_w lagevent2 i.month_num i.zip i.dow, cluster(broker_id_num)
return scalar b1 = _b[lagevent2]
return scalar se1 =_se[lagevent2]
end
simulate b1=r(b1) se1=r(se1), reps(1000): simprog000
generate double p =2*normal(-abs(b1/se1))
summarize
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 219.70.218.148
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1553124637.A.0EC.html
※ 编辑: KirinGuess (219.70.218.148), 03/21/2019 07:34:22
1F:推 alexyerray: 感谢K大,写得清楚明了,我马上就来试试~ 03/21 09:23
2F:推 evilove: 真的很厉害! 03/21 10:18