微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用 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 不会生成矩阵,因为它声称某些向量“未找到”。这很奇怪,因为所有的系数都是估计的。我想帮助理解为什么循环似乎无法识别估计系数以及如何生成矩阵。

解决方法

看起来您的问题已解决,但我将添加一个解决方案,以利用 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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。