Stata用户定义了程序,概率和最大化选项

时间:2016-03-03 20:42:46

标签: stata

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

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

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

1 个答案:

答案 0 :(得分:1)

您的probit_test程序告诉Stata表现得好像是10.1版本。在10.1中,Broyden-Fletcher-Goldfarb-Shanno算法尚未可用,因此它出错。将版本更改为更新的版本(在v11中引入了bfgs),它应该运行正常。