从Stata中的自定义程序发布e(b)向量

时间:2015-05-06 11:30:19

标签: 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\2\3)
ereturn post `b'
end 

mytest town_id
ereturn list

但是我在运行脚本时不断获得conformability error 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')

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

1 个答案:

答案 0 :(得分:0)

使用"行"向量而不是"列"向量。例如,如果您检查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)