11-16-2015 10:23 AM
I have data with two modes or peaks. The first mode I model using a truncated normal distribution, whereas the second one I model using a normal distribution. The model converges fine. However, when I try to replace normal distribution by Weibull or Gamma, the model doesn't seem to get a correct result. Instead of modelling by weibull d'n the second mode, it models by it the first mode, while the second mode is modelled by a truncated normal distribution. Is there a way to somehow force the model to use truncated normal for the first mode and weibull for the second mode, as I only want to replace normal dist'n by Weibull. The code I'm using is:
proc fmm data=observations plot=density(bins=56);
model x = / dist=truncnormal(1.2,.);
output out=output_file mean (component) var (component) mixweights(component) posterior(component) prob(component) predicted(component) pred(component) loglike(component);
11-16-2015 01:08 PM
You don't mention the sample size. For small data and components whose peaks nearly overlap, you might not have many options. The method just doesn't have enough power to distinguish two components that are close to each other unless the data size is large enough. The two things to try are
(1) use the PARMS option in the MODEL statement to provide guesses for the parameters.
(2) using the PARTIAL= option in the PROC FMM statement.to tell PROCFMM that an observation belongs to particular component
For a discussion of these topics, with examples, see "The power of finite mixture models."