Good morning. A few months back I queried regarding executing MLE from 
the script window with a piecewise density.
It was suggested that

<<
it should be quite easy if you use functions:

<pseudo-hansl>
function series f(series u, scalar a, scalar b)
     [whatever]
end function

function series g(series u, scalar a, scalar b)
     [whatever]
end function

function series loglik(series y, list X, matrix coef,
                         scalar a, scalar b)

      series u = y - lincomb(X, coef)
      series logl = (u>0) ? g(u, a, b) : f(u, a, b)
      return logl
end function


mle ll = logl(y, X, coef, a, b)
      coeff coef a b
end mle
</pseudo-hansl>

Hope this helps!

-------------------------------------------------------
    Riccardo (Jack) Lucchetti
    Dipartimento di Scienze Economiche e Sociali (DiSES)
>>

  
*Based on the above, I tried a simpler case, estimating parameters (no 
regression), (and with a sample of 3 so as to do it also by hand and check 
results), as follows**
(I use the density of the difference of two independent exponentials with 
different parameters)
*
nulldata 3

#series Z = {-1, 1, 2}

scalar s1 =1
scalar s2 = 1
function series negbr(series Z, scalar s1, scalar s2)
     -ln(s1+s2)+ (1/s2)*Z
end function

function series posbr(series Z, scalar s1, scalar s2)
     -ln(s1+s2)-(1/s1)*Z
end function

function series loglik(series Z, scalar s1, scalar s2)
     series liky = (Z>0)? posbr(series Z, scalar s1, scalar s2): negbr(series 
Z, scalar s1, scalar s2)
     return liky
end function


mle logl = loglik(Z, s1, s2)
params s1 s2
end mle --verbose

*and what I get as a reply is*

gretl version 1.9.92
Current session: 2015-02-04 06:48

> series liky = (Z>0)? posbr(series Z,
Expected ',' but found 'Z'
> series liky = (Z>0)? posbr(series Z,
Expected ':' but found 'Z'
Syntax error
*** error in function loglik, line 1
> series liky = (Z>0)? posbr(series Z, scalar s1, scalar s2): negbr(series Z, 
> scalar s1, scalar s2)

Error executing script: halting
> end mle --verbose


*I guess this is pretty simple, and the problem is just my inexperience, but I 
cannot understand the expectations of the software here.*  *So I am calling for 
help again.**  Thank you.
*

Alecos Papadopoulos
Athens University of Economics and Business, Greece
Department of Economics
cell:+30-6945-378680
fax: +30-210-8259763
skype:alecos.papadopoulos

Good morning. A few months back I queried regarding executing MLE from the script window with a piecewise density.
It was suggested that
<<
it should be quite easy if you use functions:

<pseudo-hansl>
function series f(series u, scalar a, scalar b)
    [whatever]
end function

function series g(series u, scalar a, scalar b)
    [whatever]
end function

function series loglik(series y, list X, matrix coef,
                        scalar a, scalar b)

     series u = y - lincomb(X, coef)
     series logl = (u>0) ? g(u, a, b) : f(u, a, b)
     return logl
end function


mle ll = logl(y, X, coef, a, b)
     coeff coef a b
end mle
</pseudo-hansl>

Hope this helps!

-------------------------------------------------------
   Riccardo (Jack) Lucchetti
   Dipartimento di Scienze Economiche e Sociali (DiSES)
>>

 
Based on the above, I tried a simpler case, estimating parameters (no regression), (and with a sample of 3 so as to do it also by hand and check results), as follows
(I use the density of the difference of two independent exponentials with different parameters)

nulldata 3

#series Z = {-1, 1, 2}

scalar s1 =1
scalar s2 = 1
function series negbr(series Z, scalar s1, scalar s2)
    -ln(s1+s2)+ (1/s2)*Z
end function

function series posbr(series Z, scalar s1, scalar s2)
    -ln(s1+s2)-(1/s1)*Z
end function

function series loglik(series Z, scalar s1, scalar s2)
    series liky = (Z>0)? posbr(series Z, scalar s1, scalar s2): negbr(series Z, scalar s1, scalar s2)
    return liky 
end function


mle logl = loglik(Z, s1, s2)
params s1 s2
end mle --verbose

and what I get as a reply is

gretl version 1.9.92
Current session: 2015-02-04 06:48

> series liky = (Z>0)? posbr(series Z,
Expected ',' but found 'Z'
> series liky = (Z>0)? posbr(series Z,
Expected ':' but found 'Z'
Syntax error
*** error in function loglik, line 1
> series liky = (Z>0)? posbr(series Z, scalar s1, scalar s2): negbr(series Z, scalar s1, scalar s2)

Error executing script: halting
> end mle --verbose


I guess this is pretty simple, and the problem is just my inexperience, but I cannot understand the expectations of the software here. So I am calling for help again. Thank you.

Alecos Papadopoulos
Athens University of Economics and Business, Greece
Department of Economics
cell:+30-6945-378680
fax: +30-210-8259763
skype:alecos.papadopoulos

Reply via email to