Gaussian Parsimonious Clustering Models with Covariates and a Noise Component
Overview
Clustering via parsimonious Gaussian Mixtures of Experts using the MoEClust models introduced by Murphy and Murphy (2020) doi:10.1007/s11634-019-00373-8. This package fits finite Gaussian mixture models with a formula interface for supplying gating and/or expert network covariates using a range of parsimonious covariance parameterisations from the GPCM family via the EM/CEM algorithm. Visualisation of the results of such models using generalised pairs plots and the inclusion of an additional noise component is also facilitated. A greedy forward stepwise search algorithm is provided for identifying the optimal model in terms of the number of components, the GPCM covariance parameterisation, and the subsets of gating/expert network covariates.
New Features & Improvements
- Various improvements to
MoE_gpairs(also see additional Bug Fixes below): - _Significant_ fixes when there are expert covariates and
diag.pars$show.dens=TRUE&/or
response.type="density" by properly using log average density instead of average log density.
- Marginal densities when
diag.pars$show.dens=TRUEare now always evaluated over evenly-spaced
grids, the size of which can now be modified via diag.pars$diag.grid (equal to 100, by default):
previously, the grids were formed using the observed values, which led to strange behaviour.
- Added
density.pars$dens.points=FALSEfor overlaying points whenresponse.type="density". - Various improvements in relation to
subsetargs.: data.ind&cov.indcan now be character strings / variable names (previously numeric indices only).- Added
submatfor showing only"upper"/"lower"triangular &"diagonal"plot panels. - When
submat="all", the slowness ofresponse.type="density"plots is now offset
Show all changes in 1.6.0Hide the rest of the changes in 1.6.0
by using densities pre-calculated from upper-triangular panels for lower-triangular panels.
MoE_Uncertaintygains two new arguments:col: default of"cluster"colours according to cluster-membership, but
old behaviour of highlighting uncertain observations can be recovered via col="uncertain".
rug1d(TRUE, by default) for use with univariate models, which puts
the actual observed values along the x axis when type="barplot".
MoE_controlgains newinit.zoption"soft.random": the"random"option has been
renamed to "random.hard", but init.z="random" will work as before due to partial matching.
tau0can now always be supplied as a vector (previously allowed only with gating covariates &noise.gate=TRUE).- Speed improvements by replacing
matrixStats::rowLogSumExpswith newlogsumexp&softmax
functions from mclust (w/ mclust (>= 6.1) now ensured in Imports:) where appropriate throughout.
stats::lm.wfit-related speed-ups from previous update now extend toMoE_gpairswithscatter.type="lm".- Further related minor speed-ups for models with
G == 0andG == 1.
Bug Fixes & Miscellaneous Edits
- Additional minor fixes to
MoE_gpairs: - Subsetting is now allowed to result in only one single panel.
- Additional edits in relation to
diag.pars$show.dens: show.dens=TRUEnow works properly whensubset$data.indis used.- The
expert.covararg. is no longer invoked whenshow.dens=TRUE. - Fixed (i.e. increased) height of diagonal panels when
show.dens=TRUE&/orshow.hist=TRUE. - Additional edits in relation to barcode panels:
- Partially fixed dimensions of vertical panels when
conditional="barcode"
(caution still advised when using RStudio's "Plots" pane if non-square).
- Barcode panels now have colour throughout (previously only MAP-related panels),
with related minor fixes when barcode.pars$use.points=TRUE.
- Minor label-related adjustments:
- Outer labels of mosaic panels are now correct when
diagonal=FALSE. - Cosmetic adjustments to default orientation of labels matching categorical variable levels.
density.pars$show.labels="mixed"now works properly.- Many documentation improvements & clarifications.
- Minor fixes in relation to
MoECriterionobjects andMoE_plotCrit: - Bug fix in relation to non-finite values for direct plots of
MoECriterionobjects, e.g.plot(x$BIC). crit="loglik"formerly erroneously produced the same plot ascrit="aic".- New
critoptions"df"&"iters"added. - Fixed bugs when a 'soft'
z.listis supplied whenalgo != "EM". MoE_estep&MoE_cstepnow work when there is only one observation, with a related
fix to predict.MoEClust(..., use.y=TRUE) when predicting only one observation.
- Fixed extremely rare bug in
MoE_clust& associatedpredict,fitted, &residualsmethods
when algo="CEM" and a model has only one observation/prediction assigned to its noise component.
- Fixed minor bug when
as.Mclustis used withexpert.covar=TRUEfor multivariate models
with expert network covariates and subsequently used to produce density-related plots.
- Additional minor documentation improvements.
From inst/NEWS.md in the release
Install
Health
- OK13 OK2026-09-08
- ERROR12 OK, 1 ERROR2026-09-07
- OK13 OK2026-08-05
- NOTE12 OK, 1 NOTE2026-08-01
- OK14 OK2026-04-10
Show 2 earlier changesHide 2 earlier changes
- ERROR13 OK, 1 ERROR2026-04-09
- OK14 OK2026-03-10
Documentation
- Help pages
- 34includes a package overview page
- Examples that run
- 76%26 run in a plain check · 6 only when donttest examples are enabled (R CMD check --as-cran) · 2 hold no code
- Exported functions with examples
- 100%
- Documented parameters
- 84%
- Return-value docs
- 100%
- Help pages citing references
- 53%
- MoEClust HTML
Downloads
Repository
- PRs merged (all time)
- not measured
- Median days to close, 50 most recently updated closed issues
- 10
- Median days to close, 50 most recently updated closed PRs
- not measured
Stars over time
Releases over time
Issues over time
Checks run against github.com/keefe-murphy/moeclust on 2026-10-11.
No development-tooling practices detected in the upstream repository.
Dependencies
Installing MoEClust adds 10 packages (8 with compiled code, 24 MB of source tarballs). Heaviest: BH 14 MB, mclust 2.7 MB, colorspace 2.0 MB.
Code & Tests
Datasets
People & History
Pick two releases to compare their code metrics.
- RR 4.6.0 released · 2026-04-24
- RR 4.5.0 released · 2025-04-11
- 1.6.0Latest
- RR 4.4.0 released · 2024-04-24
- 1.5.2
- RR 4.3.0 released · 2023-04-21
- 1.5.1
- RR 4.2.0 released · 2022-04-22
- 1.5.0
- 1.4.22021-12-20 · diff ↗
- 1.4.12021-10-12 · diff ↗
- 1.4.0
- RR 4.1.0 released · 2021-05-18
- 1.3.32021-01-06 · diff ↗
- 1.3.22020-11-18 · diff ↗
- 1.3.12020-05-12 · diff ↗
Show 12 earlier eventsHide 12 earlier events
- RR 4.0.0 released · 2020-04-24
- 1.3.02020-03-31 · diff ↗
- 1.2.42019-12-11 · diff ↗
- 1.2.3
- 1.2.22019-05-15 · diff ↗
- RR 3.6.0 released · 2019-04-26
- 1.2.1
- 1.2.02018-08-24 · diff ↗ ·
removed 2 exports
MoE_aitken, MoE_qclassadded 5 exports
MoE_Uncertainty, MoE_news, aitken, force_posiDiag, quant_clust - RR 3.5.0 released · 2018-04-23
- 1.1.0
- 1.0.02017-11-28
- RR 3.4.0 released · 2017-04-21
Package metadata
- First published
- 2017-11-28
- Total releases
- 18 / 9 yrs
- License
- GPL (>= 3) OSI
- Minimum R
- ≥ 4.0.0
- Bundled data
- 4.8 KB / 2 files
- Download size
- 1.4 MB
Cite
Cite this package
Run in R for the authors' preferred citation:
citation("MoEClust")The package provides a citation file that builds its entry when R runs it. Run citation() to see it.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-18, which the citation names so these numbers can be found later. More on citing and the projects behind them.