我编写了一个计算加权回归的程序,现在我希望将我的估计结果存储为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的选项都是可选的。谁能告诉我这里缺少什么?谢谢!
答案 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)