[ADMB Users] ADMB and hierarchical (multi-level) models

H. Skaug hskaug at gmail.com
Mon Aug 16 06:17:15 PDT 2010


Because your newY is a discrete random variable, I do not think
the prediction problem fits well into ADMB. I would fit the model
in ADMB, and write a small back-end that does Monte Carlo simulation.


On Fri, Aug 13, 2010 at 11:33 PM, Saang-Yoon <shyunuw at gmail.com> wrote:
> Hi, Mark.
> Thank you very much for your response.  Your answer is helpful, but
> still I am not sure about whether ADMB really can do a multi-level
> (hierarchical) modeling.  Beside the likelihood function in the above
> example, I have another likelihood function of newY.  In this case,
> newY is really a parameter.  The newY is decomposed to four age groups
> (say, newY1, newY2, newY3, and newY4; i.e., newY =
> newY1+newY2+newY3+newY4).  Given age-catches, I have a multinomial
> likelihood function of (newY1/newY, newY2/newY, newY3/newY, newY4/
> newY).   Call the likelihood function L0.
> To clarify my inquiry, I combine this current and previous
> components.
> (1)  L0 = L(newY1/newY, newY2/newY, newY3/newY, newY4/newY | age-
> specific catches)
> (2)  L1 = L(beta0, beta1, sigma2 | observed Ys, observed Xs)
> (2)  Prior1 = Pr(newY | beta0, beta1, sigma2, newX).
> Strictly speaking this is not a likelihood function, but a predictive
> function.  I apply the predictive function as a prior for newYs.
> Finally I sum the respective logarithm of these above functions.
> f = – logL0 – logL1 – logPrior1;
> Then, estimates of beta0, beta1, and sigma2 are affected by newYs as
> well as observed Ys and observed Xs; again this is WRONG!!!.  Because
> of L0, I have to declare newYs as free parameters, do I not?  In this
> example, beta0, beta1, and sigma2 are hyper parameters, and thus they
> must NOT be affected by parameters and data at a lower level.  I am
> extremely curious about how you or other ADMB experts get around this
> problem.  Again thank you very much for your response.  Best,
> Saang-Yoon
> On Aug 13, 12:11 pm, "Mark Maunder" <mmaun... at iattc.org> wrote:
>> Saang-Yoon,
>> I think you problem is solved simply by creating a new variable in the procedure section
>> sdreport_number newY
>> and then assign ypred a value in the procedure section based on beta0, beta1, sigma2, newX.
>> The value of newY with its standard deviation will be reported in the *.std file.
>> Mark
>> Mark Maunder
>> Head of the Stock Assessment Program
>> Inter-American  Tropical Tuna Commission
>> 8604 La Jolla Shores Drive
>> La Jolla, CA, 92037-1508, USA
>> Tel:(858) 546-7027begin_of_the_skype_highlighting              (858) 546-7027      end_of_the_skype_highlighting
>> Fax: (858) 546-7133
>> mmaun... at iattc.orghttp://www.fisheriesstockassessment.com/TikiWiki/tiki-index.php?page=...
>> Visit the AD Model Builder project at
>>  http://admb-project.org/
>> See the following website for information on fisheries stock assessmenthttp://www.fisheriesstockassessment.com/
>> -----Original Message-----
>> From: users-boun... at admb-project.org [mailto:users-boun... at admb-project.org] On Behalf Of Saang-Yoon
>> Sent: Friday, August 13, 2010 9:04 AM
>> To: us... at admb-project.org
>> Subject: [ADMB Users] ADMB and hierarchical (multi-level) models
>> Dear ADMB users.
>> I wonder about how people code multi-level models in ADMB.  I
>> illustrate my question with a simple example.  Let's assume we have a
>> simple regression model,
>> Y = beta0 + beta1*X + error, where error ~ N(0, sigma2)
>> Please think about two problems of (1) estimation of parameters
>> (beta0, beta1, and sigma2), and then (2) prediction of unknown random
>> variable (Y at a future time, given new X).  Strictly speaking,
>> unknown Y at a future time (say, newY) is NOT a parameter but a random
>> variable, although many fisheries papers treat the Y as a parameter.
>> But I follow the incorrect treatment (i.e., newY as a parameter) at
>> the moment to focus on my question about ADMB.  Also this is a simple
>> "example" for showing my problem with ADMB when facing a hierarchical
>> model.
>> (1) Estimation of parameters, beta0, beta1, and sigma2
>> L(beta0, beta1, sigma2 | observed Ys, observed Xs)
>> This likelihood provides inference of these three parameters.  I call
>> it L1
>> (2) Calculation of new Y given new X.
>> L(newY | beta0, beta1, sigma2, newX)
>> I call this second likelihood function L2.  newX is a constant.
>> These two steps can be viewed as a multi-level or hierarchical
>> structure.  In ADMB, the objection function would be the sum of the
>> respective negative loglikelihood functions: i.e.,
>>  f = - logL1 - logL2;
>> where beta0, beta1, sigma2, and newY are declared as free parameters
>> My problem with this above coding is that estimates of beta0, beta1,
>> and sigma2 are affected by "newY" as well as "observed Ys" and
>> "observed Xs".  This is WRONG!!!   Estimation of beta0, and beta1, and
>> sigma2 must depend ONLY on "observed Ys", and "observed Xs".
>> I wonder about how ADMB experts do around this problem.  I would
>> extremely appreciate your guidance and help.   Thank you,
>> Saang-Yoon
>> _______________________________________________
>> Users mailing list
>> Us... at admb-project.orghttp://lists.admb-project.org/mailman/listinfo/users
>> _______________________________________________
>> Users mailing list
>> Us... at admb-project.orghttp://lists.admb-project.org/mailman/listinfo/users- Hide quoted text -
>> - Show quoted text -
> _______________________________________________
> Users mailing list
> Users at admb-project.org
> http://lists.admb-project.org/mailman/listinfo/users

More information about the Users mailing list