Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: problem 0 likelihood ml
From
Nick Cox <[email protected]>
To
[email protected]
Subject
Re: st: problem 0 likelihood ml
Date
Fri, 16 Nov 2012 15:02:06 +0000
You are confusing two quite different ways of using -if-. See
FAQ . . . . . . . . . . . . . . . . . . . . if command versus if qualifier
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . J. Wernow
4/05 I have an if or while command in my program that
only seems to evaluate the first observation.
What's going on?
http://www.stata.com/support/faqs/programming/
if-command-versus-if-qualifier/
There may be other problems, but that's one.
Nick
On Fri, Nov 16, 2012 at 2:45 PM, Olivier Francois
<[email protected]> wrote:
> Hi,
>
> I needed to create my own likelihood function and have been running into problems. I have been trying to use program and the ml commands, but there is something I must not do correctly.
>
> Since it wasn't working I went back to something simpler to make sure I was getting the commands right... A simple probit. I tried with my data but it wasn't working and so tried with some artificial data.
>
> Here is what I code and problems:
>
> //creating the data
> clear
> set more off
> set seed 12345
> set obs 1000
> matrix C = I(4)
> drawnorm z v e x, corr(C)
> replace z = sqrt(2)*z
> scalar a0 = 2
> scalar a1 = -1
> gen D = (a0 + a1*z > v)
> gen Y = 0.5 - 0.5*x + e
>
> //Probit model
> apture program drop myprobit
> program myprobit
> version 11.2
> args lnf xgam
>
> quietly {
>
> if $ML_y1 == 0 {
> replace `lnf' = ln(normal(-`xgam'))
> }
>
> else if $ML_y1 == 1 {
> replace `lnf' = ln(normal(`xgam'))
> }
> }
> end
>
>
> //first model tried
> ml model lf myprobit (xgam: D = z), vce(robust) technique(nr bhhh dfp bfgs)
> ml check
>
> /*I get the following error:
> opt__eval_cycle(): 3301 subscript invalid
> opt__eval(): - function returned error
> _optimize_evaluate(): - function returned error
> _mopt__evaluate(): - function returned error
> mopt__check_test1(): - function returned error
> _moptimize_check(): - function returned error
> Mopt_check(): - function returned error
> <istmt>: - function returned error
> */
>
> //second model tried
> ml model lf myprobit (xgam: D = z), vce(robust) technique(nr)
> ml check
>
> //This time, no subscript invalid error... ml check passes all the tests. Does anybody know why?
> //Please feel free to refer to online material, I couldn't find anything by myself.
>
> //Here I get another problem, however, with ml search
> ml search
>
> //initial: log pseudolikelihood = 0
> //rescale: log pseudolikelihood = 0
>
> //I get a value of 0. Sometimes the intital value is fine, but it goes to 0 when ml search does rescale sq (couldn't find what it is either). For example, with another data draw I get:
> //initial: log pseudolikelihood = -10.211373
> //rescale: log pseudolikelihood = -10.211373
> //rescale eq: log pseudolikelihood = 0
> // I get it also using my own data. I don't understand why.
> //The direct stata probit command works fine.
>
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/faqs/resources/statalist-faq/
* http://www.ats.ucla.edu/stat/stata/