我试图了解Stata中最大可能性的使用(我目前正在使用Gould等人的第三版book)。特别是,我专注于用户程序craggit
。命令的详细信息可以在Stata article中找到。使用view source craggit.ado
时,我可以看到ado文件中的所有代码。在ado文件[详情如下]中,我使用ml
方法查看lf
,但文件中没有任何地方可以看到最大似然命令(probit
和truncreg
如文章中所述)。请告诉我是否遗漏了一些东西。
program craggit
version 9.2
if replay() {
if ("`e(cmd)'" != "craggit") error 301
Replay `0'
}
else {
//Checking data structure
syntax varlist [fweight pweight] [if] [in], SECond(varlist) [ ///
Level(cilevel) CLuster(varname) HETero(varlist) * ///
]
gettoken lhs1 rhs1 : varlist
gettoken lhs2 rhs2 : second
marksample touse
quietly sum `lhs1' if `touse'
local minval1 = r(min)
quietly sum `lhs2' if `touse'
local minval2 = r(min)
if `minval1'<0 | `minval2'<0 {
di "{error:A dependant variable is not truncated at 0: {help craggit} is
> not appropriate}"
}
else Estimate `0'
}
end
program Estimate, eclass sortpreserve
di ""
di "{text:Estimating Cragg's tobit alternative}"
di "{text:Assumes conditional independence}"
syntax varlist [fweight pweight] [if] [in], SECond(varlist) [ ///
Level(cilevel) CLuster(varname) HETero(varlist) * ///
]
mlopts mlopts, `options'
gettoken lhs1 rhs1 : varlist
gettoken lhs2 rhs2 : second
if "`cluster'" != "" {
local clopt cluster(`cluster')
}
//mark the estimation subsample
marksample touse
//perform estimation using ml
ml model lf craggit_ll ///
(Tier1: `lhs1' = `rhs1') ///
(Tier2: `lhs2' = `rhs2') ///
(sigma: `hetero') ///
[`weight'`exp'] if `touse', `clopt' `mlopts' ///
maximize
ereturn local cmd craggit
Replay, `level'
end
program Replay
syntax [, Level(cilevel) *]
ml display, level(`level')
end
答案 0 :(得分:2)
对数似然函数在文件craggit_ll.ado
中计算,因此您需要输入viewsource craggit_ll.ado
。
将日志似然评估程序存储在单独文件中的逻辑是,craggit.ado
文件中定义的所有程序(第一个除外)都是存储在该文件中的命令的本地程序,因此{ {1}}无法看到它。通过将其存储在单独的文件中,ml
命令将变为全局命令,craggit_ll
将能够使用它。