1
$\begingroup$

Is there any existing package (preferably in Python or Matlab) to estimate the parameters of a two-component Weibull mixture model? And failing that, I am hoping to get some pointers towards rolling out a fairly simple implementation of my own (perhaps something EM-like, a la mixture of Gaussians?).

Note: I considered using mixtures of Gaussians as an easier alternative, but my data are definitely not Gaussian, and being extremal values are quite well-modeled by Weibull.

$\endgroup$
1
$\begingroup$

One link for helping to roll your own implementation that came up quickly on a web search is provided by Razali and Al-Wakeel who use maximum likelihood and provide a formula for the log-likelihoods of Weibull mixtures. Each choice of combinations of Weibull components and numbers of parameters is analyzed separately. At first glance, however, their approach for choosing among those competing models seems like it might be prone to over-fitting as it appears to be based on $R^2$ values in the data set at hand rather than a more generalizable approach like bootstrapping.

The reference manual for the R package mixR outlines a general latent-variable approach to mixture models with an expectation-maximization algorithm, together with bootstrapping to help select a final model. R code is open source if you wish to examine implementation details. It has built-in facilities for mixtures of Weibull, Normal, Gamma, and Lognormal families.

$\endgroup$
1
  • $\begingroup$ thanks, I will probably just end up using the R-code. (i will accept this answer in a day's time, if nothing more specific comes up) $\endgroup$ – AruniRC Jul 15 '19 at 22:56
2
$\begingroup$

I realise I'm 13 months too late in this response, but for anyone else viewing this question, there's now a Python package to do this: https://reliability.readthedocs.io/en/latest/Mixture%20models.html

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.