1

Stata での最尤法の使用を理解しようとしています (現在、Gould らの本の第 3 版を使用しています)。特に、ユーザープログラムに注目していますcraggit。コマンドの詳細については、Stata の記事を参照してください。を使用する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
4

1 に答える 1

2

対数尤度関数はファイル内で計算されるcraggit_ll.adoため、それを確認するには、次のように入力する必要がありますviewsource craggit_ll.ado

対数尤度評価プログラムを別のファイルに保存する背後にあるロジックは、ファイルで定義されているすべてのプログラム (craggit.ado最初のプログラムを除く) は、そのファイルに保存されているコマンドに対してローカルであるため、それmlを見ることができないということです。別のファイルに保存することで、craggit_llコマンドがグローバルになり、ml使用できるようになります。

于 2013-08-05T14:36:47.443 に答える