我在用户定义的程序中调用最大化选项时遇到问题。例如,以下工作完美:
sysuse nlsw88, clear
probit collgrad age grade, tech(bfgs)
但是,当我定义一个调用Probit的函数时,我收到错误信息"选项tech()不允许"。这是
的代码 program probit_test, eclass
version 10.1
if replay() {
syntax [anything] [, Level(real 95) ]
eret di, level(`level')
}
else {
qui {
syntax [varlist] [if] [in], [Level(real 95) *]
tempvar touse e1
tempname beta var
mark `touse' `if' `in'
markout `touse'
gettoken depv vl:varlist
probit `depv' `vl' if `touse', tech(bfgs)
g `e1'=e(sample)
loc N=r(N)
matrix `beta'=e(b)
matrix `var'=e(V)
ereturn post `beta' `var', dep(`depv') e(`e1') obs(`N')
cap drop _d*
}
eret di, level(`level')
}
end
****
sysuse nlsw88, clear
probit_test collgrad age grade
编辑:我只想补充一点,这不是我正在运行的实际程序,而是一个显示问题的简单版本。
答案 0 :(得分:1)
您的probit_test
程序告诉Stata表现得好像是10.1版本。在10.1中,Broyden-Fletcher-Goldfarb-Shanno算法尚未可用,因此它出错。将版本更改为更新的版本(在v11中引入了bfgs),它应该运行正常。