【发布时间】:2015-10-04 17:21:12
【问题描述】:
我想运行几个回归并将它们的结果存储在一个 DTA 文件中,以便以后用于分析。我的限制是:
- 我无法安装模块(我正在为其他人编写代码,而不是 确定他们安装了哪些模块)
- 一些回归量是因子变量。
- 每个回归仅因因变量而异,因此我想将其存储在最终数据集中,以跟踪系数/方差对应的回归。
我在这里严重失去理智。鉴于Stata是统计软件,我觉得这可能很简单,但svmat真的不合作。目前我正在做的是:
sysuse census, clear
generate constant = 1
capture matrix drop regsresults // erase previously existing matrix
foreach depvar in marriage divorce {
reg `depvar' popurban i.region constant, robust noconstant // regressions
matrix result_matrix = e(b)\vecdiag(e(V)) // grab coeffs and their variances in a 2xK matrix
matrix rownames result_matrix = `depvar'_b `depvar'_v // add rownames to the two extra rows
matrix regsresults = nullmat(regsresults)\result_matrix // add those results matrix to the existing ones
}
matrix list regsresults
clear
svmat regsresults, names(col)
这会为每个回归创建:一行存储系数,一行使用vecdiag(e(V)) 存储它们的方差。这两行的行名称是因变量名称,后跟 _b 表示系数,_v 表示方差。
我使用手动常量,因为在使用 svmat 时 _cons 不是变量的有效名称。
当然,我的“解决方案”不起作用,因为因子级别会生成奇怪的矩阵列名称,然后在调用 svmat 时这些名称是无效的变量名称。 (错误是一个简洁的invalid syntax。)考虑到我的限制,我很乐意用任何解决方案来克服这个问题。它不必使用svmat,系数和方差可以在同一行,如果它更容易等等。
【问题讨论】:
-
你试过
help postfile吗?值得一读(包括手动输入——非常重要)。 -
您还可以更改矩阵列名。
help svmat有信息(命令为matname)。
标签: regression stata categorical-data