2015-05-06 2 views
3

Я написал программу, которая вычисляет взвешенную регрессию, и теперь я хочу, чтобы результаты оценки сохранялись как вектор e (b), чтобы команда загрузки могла легко получить доступ к результаты, но я все время получаю сообщение об ошибке. Моя программа выглядит следующим образом:Опубликовать e (b) вектор из пользовательской программы в Stata

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 являются необязательными. Может ли кто-нибудь сказать мне, что мне здесь не хватает? Благодаря!

ответ

0

Используйте вектор "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) 
Смежные вопросы