Stata 用户定义程序、Probit 和最大化选项

Stata user defined Program, Probit and Maximization Options

我在调用用户定义程序中的最大化选项时遇到问题。例如,以下完美运行:

sysuse nlsw88, clear
probit collgrad age grade, tech(bfgs)

但是,当我定义调用 Probit 的函数时,我收到 "option tech() not allowed" 的错误消息。这是

的代码
 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

编辑:我只是想补充一点,这不是我的实际程序 运行,而是一个显示问题的简单版本。

您的 probit_test 程序告诉 Stata 的行为就好像它是 10.1 版一样。在 10.1 中,Broyden–Fletcher–Goldfarb–Shanno 算法尚不可用,因此会出错。将版本更改为更新的版本(bfgs 是在 v11 中引入的),它应该 运行 没问题。