Mixtools package is used to fit mixtures of normal/regressions. The package documentation is given here

The regmixmodel.sel fits the mixture model for varying number of components and returns the AIC/BIC/CAIC for each. It also returns the "winner" model, the model with the highest of each of these selection critera. Example output:

    > regmixmodel.sel(X,y,k=4,type="fixed")
number of iterations= 352 
number of iterations= 566 
Need new starting values due to singularity... 
number of iterations= 615 
       1        2        3        4 Winner
AIC  Inf 7247.358 7319.812 7341.830      1
BIC  Inf 7192.434 7233.992 7225.115      1
CAIC Inf 7184.434 7221.492 7208.115      1
ICL  Inf 7193.024 7234.943 7226.069      1

What has me confused is why the "winner" returned is the highest AIC, and not the lowest? After all, the best fit is determined by the model with the lowest AIC?

The reason I am asking is that no explanation is given in the documentation, so I'm curious if there's something I misunderstand about AIC model selection for mixture models.

Given the output above, wouldn't we select the 2-component mixture model since it has the lowest AIC among the 4 considered?

  • 1
    $\begingroup$ While the fact it returns Inf for the single component model was also of concern to me , it is actually unrelated to the question. The model documentation clearly states the highest AIC is returned as winner (regardless of finite or infinite AIC), it just doesn’t explain why it’s the highest that is preferred $\endgroup$
    – Xiaomi
    Commented Nov 13, 2018 at 9:36
  • $\begingroup$ I see, the documentation says the winner (i.e., the highest value given by the model selection criterion). I'm pretty sure this is an error, unless they calculate the likelihood or the criterion in some weird way. $\endgroup$
    – NatWH
    Commented Nov 13, 2018 at 9:44
  • $\begingroup$ If the model selection criterion is the classic sum of squared error, and not AIC, what is returned? $\endgroup$ Commented Nov 13, 2018 at 13:21
  • $\begingroup$ This wording is still in the documentation for package version 1.2.0 with date February 7, 2020. It might be best to contact the package maintainer. $\endgroup$ Commented Nov 4, 2021 at 8:46

1 Answer 1


There is a odd tradition in the finite mixture modeling/cluster analysis literature that defines AIC as $\log L - d$ rather than $-2 \log L + 2 d$; I found this in Leroux (1992), which has been cited 574 times according to Google Scholar. (Leroux cites Linhart and Zucchini 1986 and Akaike 1973; I don't have LZ86, so don't know if they use this non-standard definition).

The code within regmixmodel.sel() bears out that this is the definition used:

AIC <- function(emout, p) {
    emout$loglik - (p - 1)

If you were using this definition, the best model would indeed be the one with the highest AIC (and you would want to adjust any rules of thumb about interpreting magnitudes of ΔAIC that were based on the usual definition ...)

I haven't checked to see if this definition is consistent throughout all of the functions in the package ...

Leroux, Brian G. 1992. “Consistent Estimation of a Mixing Distribution.” The Annals of Statistics 20 (3). https://doi.org/10.1214/aos/1176348772.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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