寂意署禾 发表于 2023-2-7 09:43 
挖坟,最近也遇到了一样的问题,应该是foreach的上限是1600。
可以试试把foreach改成forval,不清楚上限是 ...
请问把foreach改成forval后显示语法错误是怎么回事啊, mat b = J(500,1,0)
mat se = J(500,1,0)
mat p = J(500,1,0)
forvalues i = 1/500{
use "F:\基准回归5.dta",clear
xtset stkcd year
bsample 1, strata(stkcd)
keep year
save matchyear.dta, replace
mkmat year, matrix(sampleyear)
use "F:\基准回归5.dta",clear
xtset stkcd year
gen DID = 0
foreach j of numlist 1/1603 {
replace DID = 1 if (stkcd == `j' & year >= sampleyear[`j',1])
}
qui reghdfe innovation1 DID size tfp SA111 export type1 fixasset lnAgeSA_w wage zjzzl,absorb( stkcd year ) vce(robust)
mat b[`i',1] = _b[DID]
mat se[`i',1] = _se[DID]
scalar df_r = e(N) - e(df_m) -1
mat p[`i',1] = 2*ttail(df_r,abs(_b[DID]/_se[DID]))
}