Monday, January 26, 2009

Finite mixture modeling with ADMB

The one area that ADMB can potentially be of great importance is in those computation-intensive areas such as finite mixture modeling. I remember I used to run Mplus on a dual-core computer for days to estimate the sequential growth mixture model. Once I get some time, I will try to port my Mplus model into ADMB (if it is possible at all) and see how it compares with Mplus regarding computation time.

I hope open-sourcing ADMB does not mean stopping its development, as in the aML case. aML has some basic capabilities for finite mixture modeling, but it seems that the development is not going to continue.

Also, I wish the ADMB team can make available a more comprehensive set of examples, especially those with results that can be compared to other statistical packages such as R, Stata, SAS, even aML. This will certainly help gain more users outside fishery.

5 comments:

Unknown said...

It should not be difficult to implement
a your finite mixture model in ADMB.
Perhaps if you could describe your application we can give it a try.

Shige said...

We have about 2,000 children in the sample. The height of each child was measured bimonthly for the first 24 months; then they were measured again starting from age 8, then age 11, 15, and 19.

I estimate two nonlinear growth curve model sequentially for age 0-2 and age 8-19; for each growth model, I treat the unobserved heterogeneity as discrete (latent class) instead of continuous and estimate the latent class membership based on their growth trajectory; then I estimate the relationship between one's latent class membership at age 0-2 and at age 8-19.

I guess the most difficult part is how to tell ADMB that we want categorical latent variable instead of continuous ones (random effect)?

Anonymous said...

With discrete latent variables you you cannot use the random effects feature of ADMB, but you can formulate the two-component mixture likelihood directly as C++ code. With the given sample size there should be no problems in getting maximum likelihood estimates of parameters. Given the mle's class membership can easily be obtained in a second step.

Hans

Shige said...

I see. This definitely sounds like a good plan. It will be great if someone can work out some examples. It is the easiest way for beginners to get started.

Unknown said...

OK lets start off easy. first assume that there is only one observation for
individual i in the first period.
the log-likelihood contribution for this
individual should look something like.

log{p_1*f_1(l_1,theta_1)
+ p_2*f_2(l_1,theta_2) }

where p_1 and p_2 are the proportions for the mixture, L_i is the size and
f_1, f_2 are the probability densities for observing the size l_i give the value of the parameter vectors theta_1 and theta_2.

So you need to tell us what the form of f_1 and f_2 is etc.

Counter