[ADMB Users] Reading in random effects start values from .pin file

Mollie Brooks mollieebrooks at gmail.com
Wed Nov 6 09:12:28 PST 2013


Hi Ben,

I made sure that I was using my edited version using 
./test -version

It seems that the changes I made on lines 74 and 2707 of df1b2lap.cpp did nothing. 

That seems like the only relevant file, so I don't know what else to try. 
Hopefully someone else can take a stab at it.

Cheers,
Mollie

------------------------
Mollie Brooks, PhD
Postdoctoral Researcher, Population Ecology Research Group http://www.popecol.org
Institute of Evolutionary Biology & Environmental Studies, University of Zürich

On 6 Nov 2013, at 4:58 PM, Ben Stevenson <bcs5 at st-andrews.ac.uk> wrote:

> Hi Mollie,
> 
> Good spotting -- this explains why things are different when a separable function is used. 
> 
> My main concern was that ADMB is not doing what is advertised in the ADMB-RE manual, as you have pointed out. As far as I am aware, it's supposed to read the .pin file regardless of -noinit, and regardless of whether or not you have a separable function. I stumbled upon the strange -noinit behaviour by trial and error while I was trying to work out how on to get it to read the .pin file.
> 
> Thanks for having a look into this; I wasn't brave enough to get into the source!
> 
> Cheers,
> 
> Ben
> 
> 
> 
> On 6 November 2013 15:11, Mollie Brooks <mollieebrooks at gmail.com> wrote:
> Hi Ben,
> 
> I played around with the files a bit and might have an idea.
> If you comment out the exit(100); on line 14 and run it as
> /test -maxfn 1
> and
> /test -noinit -maxfn 1
> 
> then you get more output and it looks like the behaviour is similar to what you see without a SEPARABLE_FUNCTION (i.e. noinit makes u start at pin file values)  
> 
> It looks like the difference is that when using the SEPARABLE_FUNCTION, the first run through the procedure section (and first output) happens before the initialization. 
>  
> Does this seem plausible, or was non-initialization affecting some model more seriously?
> 
> 
> Aside from the difference in behaviour with and without SEPARABLE_FUNCTIONs, I would expect the values for u from the pin file to be used even when not using -noinit. On page 25, section 3-8 of admbre-10.0-rev1.pdf it says
> "We can now return to the role of the initial values specified for the random effects in the .pin file. Each time step 1 above is performed, these values are used—unless you use the command line option -noinit, in which case the previous optimum is used as the starting value. 
> 
> The steps it refers to are 
> 	1. The “penalized likelihood” step: maximizing the likelihood with respect to the random effects, while holding the value of the hyper-parameters fixed. In simple.tpl, this means doing the maximization w.r.t. x only.
> 	2. Updating the value of the hyper-parameters, using the estimates of the random effects obtained in item 1.
> 
> I think these values get set on lines 74 and 2707 of df1b2lap.cpp
> I've been trying to figure out if it makes sense to replace u.initialize() with initial_params::xinit(u); but after editing the file and reinstalling, the behaviour didn't change, so I wonder if I'm misunderstanding the installation instructions. I'll keep trying.
> 
> 
> Cheers,
> Mollie
> ------------------------
> Mollie Brooks, PhD
> Postdoctoral Researcher, Population Ecology Research Group http://www.popecol.org
> Institute of Evolutionary Biology & Environmental Studies, University of Zürich
> 
> 
> 
> On 6 Nov 2013, at 1:31 PM, Ben Stevenson <bcs5 at st-andrews.ac.uk> wrote:
> 
>> Hi ADMBers,
>> 
>> A while ago I noticed that all elements of a random_effects_vector seem to start out at 0, regardless of what appears in the .pin file. I have recently discovered that using the -noinit option results in behaviour that one would expect, i.e., random effects start values are read in from the .pin file.
>> 
>> However, when you have a SEPARABLE_FUNCTION, this persists even with the -noinit option.
>> 
>> Hans suggested a nice workaround, whereby you read in a vector of offsets (which can be set to your desired start values) from the .dat file, and use v as your random effect, where
>> 
>> v = u + offset;
>> 
>> and u is the random_effects_vector which has elements with start value 0.
>> 
>> Can anyone shed any light on why start values in the .pin file for a random_effects_vector do seem to do what one would expect? The ADMB-RE manual suggests the .pin file initialisation should work.
>> 
>> I have attached a minimum working example of the behaviour I am seeing. The compiled executable won't optimise anything, but start values for the random effects are printed out. I get a bunch of 0s, even though the .pin file provides the start values {1, 2, 3, 4, 5}.
>> 
>> Cheers,
>> 
>> Ben
>> <test.dat><test.pin><test.tpl>_______________________________________________
>> Users mailing list
>> Users at admb-project.org
>> http://lists.admb-project.org/mailman/listinfo/users
> 
> 
> 
> _______________________________________________
> Users mailing list
> Users at admb-project.org
> http://lists.admb-project.org/mailman/listinfo/users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.admb-project.org/pipermail/users/attachments/20131106/50ee6c54/attachment.html>


More information about the Users mailing list