作者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/m.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