[ADMB Users] conditional statement using parameter to be estimated
Tiffany Vidal
tiffany.vidal at gmail.com
Fri May 23 22:06:06 PDT 2014
Thank you for all of this advice! I will take a look at the work you
referenced and try to implement some of these suggestions. I really
appreciate it.
On Fri, May 23, 2014 at 8:31 PM, John Sibert <sibert at hawaii.edu> wrote:
> Hi Tiffany,
>
> Yes it is possible to do what you seem to be trying to do with ADMB, but
> perhaps not in the way you have envisaged.
>
> You have two problems in the code as it is written:
>
> 1. The compiler (and Aaron) have identified an incompatibility in the "<"
> operator which appears to be comparing an integer object with a
> differentiable object. One solution is to write the code for the required
> operator. A simpler (for your point of view) solution would be cast the
> left side of comparison to an object for which the required operator is
> available, that is, write something like
> if( (double)(yrKey(n))<cp){
> Even simpler yet, redefine the yrKey variable to be a floating point
> opject (eg vector).
>
> 2. Logical comparisons on model parameters, as Ben pointed out, usually
> lead to errors computing the likelihood gradients. Using a logistic
> "switch" is one solution, but the parameter you are interested in my be
> difficult to estimate. My colleagues and I faced this problem when
> attempting to detect a difference in behavior of a tag a attached to a fish
> and a freely drifting tag. Anders Nielsen developed a change point
> estimation algorithm described in our paper
> "Inter-annual variation in large-scale movement of Atlantic bluefin tuna
> (Thunnus thynnus) determined from pop-up satellite archival tags. Can. J.
> Fish. Aquat. Sci. 63: 2154-2166". (I will send you the pdfs off list; the
> supplementary material is particularly relevant.) I'm guessing that this
> approach might be very similar to what you are trying to do, although it is
> difficult to be sure without knowing more about your problem. As a last
> resort, you can finesse the non-differentiability issue by using MCMC to
> search for the mode of the posterior distributions.
>
> Cheers,
> John
>
> John Sibert
> Emeritus Researcher, SOEST
> University of Hawaii at Manoa
> Honolulu HI (GMT-10)
> 808-294-3842 (mobile)
>
> Visit the ADMB project http://admb-project.org/
>
>
> On 05/23/2014 11:29 AM, Tiffany Vidal wrote:
>
>> Hello,
>>
>> I'm just starting to use ADMB, and am interested in running a something
>> like a changepoint model. I am running into problems trying to use a
>> parameter, to be estimated, in a conditional statement. When estimating the
>> negative log likelihood I have code that looks like this:
>>
>> if(useNB==1){
>> for(int n=1;n<=nobs;n++){
>>
>> *if(yrKey(n)<cp)*{
>> mu_hat(n)=f0+*rS1*(siteKey(n))+(f1+rSs(siteKey(n)))*Cyear(n)+rY(yrKey(n));
>>
>> }
>> else {
>> mu_hat(n)=f0+*rS2*(siteKey(n))+(f1+rSs(siteKey(n)))*Cyear(n)+rY(yrKey(n));
>>
>> }
>> NB_mu(n)=mfexp(mu_hat(n));
>>
>> nll += -log_negbinomial_density((
>> catch(n)),(NB_mu(n)),(1+((NB_mu(n))/s)));
>> }
>> }
>>
>>
>> where cp is my changepoint parameter (intended to estimate a single year
>> in the series), bounded between 0 and max(year index), with an initial
>> value of 30 (max year index = 50). The point of this is to allow the random
>> site parameter to be estimated separately for the period before the
>> changepoint and after it.
>>
>> The error that I receive is as follows:
>> error: no match for 'operator<' in '((df1b2_parameters*)this)->
>> df1b2_parameters::<anonymous>.df1b2_pre_parameters::<
>> anonymous>.model_parameters::<anonymous>.model_data::yrKey.ivector::operator()(n)
>> < ((df1b2_parameters*)this)->df1b2_parameters::cp'
>>
>> Is this possible to do in this program? Thank you in advance for any
>> thoughts on how to execute this.
>>
>> Kindly,
>> Tiffany
>>
>>
>> _______________________________________________
>> 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/20140524/7bb799bc/attachment-0001.html>
More information about the Users
mailing list