Calculates the normalised entropy of a fitted MoEClust model.
MoE_entropy(x, group =FALSE)
Arguments
x: An object of class "MoEClust" generated by MoE_clust, or an object of class "MoECompare" generated by MoE_compare. Models with gating and/or expert covariates and/or a noise component are facilitated here too.
group: A logical (defaults to FALSE) indicating whether component-specific average entropies should be returned instead.
Returns
When group is FALSE, a single number, given by 1−H, in the range [0,1], such that larger values indicate clearer separation of the clusters. Otherwise, a vector of length G containing the per-component averages of the observation-specific entries is returned.
Details
When group is FALSE, this function calculates the normalised entropy via
H=−nlog(G)1i=1∑ng=1∑Gz^iglog(z^ig)
, where n and G are the sample size and number of components, respectively, and z^ig is the estimated posterior probability at convergence that observation i belongs to component g. Note that G=x$G for models without a noise component and G=x$G + 1 for models with a noise component.
When group is TRUE,
Hi=−log(G)1g=1∑Gz^iglog(z^ig)
is computed for each observation and averaged according to the MAP classification.
Note
This function will always return a normalised entropy of 1 for models fitted using the "CEM" algorithm (see MoE_control), or models with only one component.
Examples
data(ais)res <- MoE_clust(ais[,3:7], G=3, gating=~ BMI + sex, modelNames="EEE", network.data=ais)# Calculate the normalised entropyMoE_entropy(res)# Calculate the normalised entropy per clusterMoE_entropy(res, group=TRUE)
References
Murphy, K. and Murphy, T. B. (2020). Gaussian parsimonious clustering models with covariates and a noise component. Advances in Data Analysis and Classification, 14(2): 293-325. <tools:::Rd_expr_doi("10.1007/s11634-019-00373-8") >.