[ADMB Users] Problems with RE model, using FUNCTIONs for integration

dave fournier davef at otter-rsch.com
Wed Dec 5 12:23:18 PST 2012


On 12-12-05 09:59 AM, Jeff Laake wrote:

It could be done with a bit of work. The main idea would be to make 
adromb a SEPARABLE_FUNCTION
then you need to pass all the necessary variables though it to trapz and 
further through to h.
you could make trapz and h just dvariable type objects with the 
corresponding df1b2variable types.
so for example h would be somethng like

dvariable h(const double x,const prevariable& sigma)
{
    dvariable tmp;
    tmp=exp(-.5*square(x/sigma))/(sqrt(2*PI)*sigma);    // Normal 
(0,sigma) pdf
    return tmp;
}
df1b2variable h(const double x,const df1b2variable& sigma)
{
    df1b2variable tmp;
    tmp=exp(-.5*square(x/sigma))/(sqrt(2*PI)*sigma);    // Normal 
(0,sigma) pdf
    return tmp;
}

and trapzd becomes somethng like

dvariable trapzd(double a,double b,int n,const dvariable& s,const 
prevariable& sigma)
{
   double x,num_interval,hn;^M
   dvariable sum;^M

   static int interval;^M
   int j;^M
   if (n == 1) {^M
     interval=1;^M
     return (s=0.5*(b-a)*(h(a,sigma)+h(b,sigma)));^M
   } else {^M
     num_interval=interval;^M


with a corresponding df1b2variable trapz as well.

etc.


> So I spent some time with this and I was able to get it to work with 
> adromb although there are some minor differences probably related to 
> Laplace approximation. It is not due to the integration because I 
> swapped out the adromb code for cumd_norm and got the same answer. 
> From what I understand this will not work with separable functions 
> which is a bit of an issue because it doesn't scale up nicely like the 
> separable function. If I'm wrong about that please let me know. It 
> would be a big improvement if the integration could be used from a 
> separable function.
>
> I've attached the tpl and dat files (they are identical) from existing 
> example for random effect example (hnre_f2.tpl) and the adromb version 
> of the same likelihood (inthnre_f2.tpl).  Both are based on eq 7 in 
> https://github.com/downloads/jlaake/ADMB-Examples/distance_random_effect.pdf.
>
> Thanks for your effort here Dave. It does work as you stated and it 
> worked great for say n<=200. If I were to take the integral into the 
> loop for the case of covariates then the temp files get huge and 
> become problematic.  The separable function approach is preferable and 
> doesn't suffer from the temp file problem. So far the time being I'm 
> left with functions like cumd_norm or internally coding an approximation.
>
> regards--jeff
>
>
> On Fri, Nov 30, 2012 at 1:34 PM, dave fournier <davef at otter-rsch.com 
> <mailto:davef at otter-rsch.com>> wrote:
>
>     If the model is just crashing you should be able to run it with
>     a debugger and see at what line it happens.  Much faster than
>     thinking.
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.admb-project.org/pipermail/users/attachments/20121205/15b759ea/attachment.html>


More information about the Users mailing list