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

Stata中自定义程序的Post e(b)向量,stata,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'"

我编写了一个计算加权回归的程序,现在我希望我的估计结果存储为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\2\3)
ereturn post `b'
end 

mytest town_id
ereturn list
但是我不断得到一个
一致性错误r(503)在运行脚本时。当我发布一个普通的矩阵时,比如
ereturn matrix x=b
,一切正常,但我希望将我的系数“正确”存储在
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')
转向柱的选项都是可选的。有人能告诉我我在这里遗漏了什么吗?谢谢

使用“行”向量而不是“列”向量。例如,如果您检查
回归
的存储结果,您将看到这是预期的结果

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)