Programming the statistical procedures from SAS

Mixture models using proc fmm: is there a way to force some models to converge.

Reply
Occasional Contributor
Posts: 6

Mixture models using proc fmm: is there a way to force some models to converge.

Hi,

 

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,.);
model +/dist=weibull;


output out=output_file mean (component) var (component) mixweights(component) posterior(component) prob(component) predicted(component) pred(component) loglike(component);
run;

 

Thanks.

SAS Super FREQ
Posts: 3,301

Re: Mixture models using proc fmm: is there a way to force some models to converge.

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."

Ask a Question
Discussion stats
  • 1 reply
  • 156 views
  • 0 likes
  • 2 in conversation