在 Stata 中使用存储的回归估计创建矩阵

Creating a matrix using stored regression estimates in Stata

我正在 Stata 中执行事件研究,规范如下:

reghdfe numPixelsLost tee_1##db_1 tee_2##db_1  tee_3##db_1  tee_4##db_1 tee_5##db_1 tee_6##db_1  tee_7##db_1  tee_8##db_1 tee_9##db_1 tee_10##db_1  if biome==6, absorb(year case_id) vce(cluster case_id) 

当我检查完整结果时,我可以看到 Stata 为我感兴趣的所有变量(交互项)估计了系数和标准误差。

然后我尝试使用循环来获取这些信息并将其存储为矩阵:

forvalues j = 1/10 {
matrix co1`j' = [_b[1.tee_`j'#1.db_1], _b[1.tee_`j'#1.db_1] - 1.96*_se[1.tee_`j'#1.db_1], _b[1.tee_`j'#1.db_1] + 1.96*_se[1.tee_`j'#1.db_1]]
}

然后我尝试将所有这些矩阵拼接成一个矩阵(我可以用它来制作图表),如下所示:

matrix all1 =  [co11 \ co12 \ co13 \ co14 \ col5 \ col6 \ col7 \ col8 \ col9 \ col10]

但 Stata 不会生成矩阵,因为它声称某些向量“未找到”。这很奇怪,因为估计了 all 个系数。我想帮助理解为什么循环似乎无法识别估计系数以及如何生成矩阵。

看起来您的问题已解决,但我将添加一个解决方案,该解决方案将利用 reghdfe 的存储结果和一些线性代数。另请注意,您使用 1.96 来构建置信区间,这取决于观测值和回归量的数量,可能不是基础 t 分布的良好近似值。

sysuse auto, clear
reghdfe price weight length, absorb(rep78)

* SET T stat
global sig= 0.95 
scalar _df = e(df_r) // df scalar
scalar _t = abs(invt(_df,(1 - ${sig})/2)) // t stat scalar

* SET BETA AND SE MATRICES
local names : colfullnames e(b)
matrix B = (e(b))'
mata st_matrix("SD_matrix",sqrt(diagonal(st_matrix("e(V)"))))

* IDENTITY MATRIX FOR CONFORMABILITY
matrix I = I(`= rowsof(B)')

* MAKE Confidence interval MATRICES
matrix CI_low = B - _t*I*SD_matrix
matrix CI_high = B + _t*I*SD_matrix

* Final Results
matrix all1 = [B' \ CI_low' \ CI_high']
matrix rownames all1


                 weight      length       _cons
       Beta   5.4783091  -109.50651   10154.617
 CI_.95_Low    3.162337  -187.98821   1617.9601
CI_.95_High   7.7942812   -31.02482   18691.274

如果您更改回归量的数量,这将允许您重新创建矩阵。