看板 Statistics 關於我們 聯絡資訊
※ 引述《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://www.ptt.cc/bbs/Statistics/M.1553124637.A.0EC.html ※ 編輯: KirinGuess (219.70.218.148), 03/21/2019 07:34:22
alexyerray: 感謝K大,寫得清楚明瞭,我馬上就來試試~ 03/21 09:23
evilove: 真的很厲害! 03/21 10:18