Post 来自 Stata 自定义程序的 e(b) 向量

Post e(b) vector from a custom program in Stata

我编写了一个计算加权回归的程序,现在我希望将我的估计结果存储为 e(b) 向量,以便 bootstrap 命令可以轻松访问结果,但我不断得到一个错误。我的程序看起来像:

capture program drop mytest
program mytest, eclass
version 13
syntax varlist [if]
marksample touse
// mata subroutine creates matrix `b', such as mata: bla("`varlist'", "`touse'")
tempname b
matrix `b' = (1)
ereturn post `b'
end 

mytest town_id
ereturn list

但我一直在 运行 脚本上收到 conformability error r(503);。当我 post 一个普通矩阵,如 ereturn matrix x = b,一切正常,但我想将我的系数存储 'properly' 在一个 e(b) 向量中。

我查看了 Stata 的文档,但无法找出它不起作用的原因。他们的建议是编码

tempname b V
// produce coefficient vector `b' and variance–covariance matrix `V'
ereturn post `b' `V', obs(`nobs') depname(`depn') esample(`touse')

ereturn post 的选项都是可选的。谁能告诉我我在这里缺少什么?谢谢!

使用 "row" 向量而不是 "column" 向量。例如,如果您检查 regress 的存储结果,您会发现这是预期的结果。

capture program drop mytest
program mytest, eclass
version 13
syntax varlist [if]
marksample touse
// mata subroutine creates matrix `b', such as mata: bla("`varlist'", "`touse'")
tempname b
matrix `b' = (1,2,3)
ereturn post `b'
end 

*----- tests -----

clear
sysuse auto

// mytest test
mytest mpg weight
ereturn list
matrix list e(b)

// regress example
regress price weight mpg
ereturn list
matrix list e(b)