I have a set of distributions corresponding to predictions for how each of hundreds of players will perform. I am looking to identify the distinct distributions of players. In other words, I'm looking to identify the distinct distributions in a group of distributions.

I know Mclust() can perform clustering on a vector, e.g.:


mydata <- c(1,1,2,2,3,3,5,7,8,9,10)

summary(Mclust(mydata), parameters=TRUE)

However, my data are a series of vectors (i.e., distributions)---one vector for each player, e.g.:

playerA <- rnorm(10, mean=1, sd=.1)
playerB <- rnorm(100, mean=1, sd=1)
playerC <- rnorm(10, mean=2, sd=1)
playerD <- rnorm(5, mean=2, sd=2)
playerE <- rnorm(2, mean=3, sd=1)
playerF <- rnorm(20, mean=5, sd=1)
playerG <- rnorm(100, mean=7, sd=.5)
playerH <- rnorm(10, mean=8, sd=2)
playerI <- rnorm(5, mean=9, sd=1)
playerJ <- rnorm(10, mean=10, sd=.5)

How can I perform clustering to identify the distinct clusters of players based on their distributions, focusing on differences in their means, rather than their variances. I don't want to just cluster the mean values, though, because I want to take into account the variances to know whether their means are in the same or in a different cluster (e.g., high variability in two players' distributions may indicate that two players with different means are in the same cluster). Ideally, I'd like two players with the same mean and different variability distributions to be in the same cluster. Is there a way to do this using the mclust or another package in R? I've considered doing pairwise t-tests, but this seems that it would be heavily dependent on the sample size in each distribution (which I'd rather it not be too dependent on sample size, if possible). I've also considered comparisons based on effect size (Cohen's d). I'm not sure what other options there are (e.g., Tukey's HSD, hierarchical clustering, etc.)

  • $\begingroup$ Since you're interested in the means rather than variances, why not just cluster the means? $\endgroup$ Commented Jun 2, 2016 at 15:51
  • $\begingroup$ The way it is phrased as a (perhaps rhetorical) question also contributes to the impression this would fit better as a comment. $\endgroup$
    – Silverfish
    Commented Jun 2, 2016 at 17:26
  • $\begingroup$ I modified the question to indicate why I don't want to just cluster the mean values, but rather the distributions as a whole (focusing on their means). $\endgroup$
    – itpetersen
    Commented Jun 7, 2016 at 20:26
  • $\begingroup$ @dadrivr From your edit, it looks like you may have uncertainty in estimation confused with inherent model uncertainty. That is, when you try to predict player performance on the basis of past performance, you have uncertain estimates of overall ability (the means) but even once you know a player's ability perfectly, his future performance may not be perfectly predictable. In short, you do in fact only care about clustering the means, but you want to account for the fact that you have imperfect estimates of the means, and some estimates may be more precise than others. [continued] $\endgroup$ Commented Jun 7, 2016 at 20:50
  • $\begingroup$ One way to handle this would be to do clustering on means that have been estimated in a Bayesian fashion. $\endgroup$ Commented Jun 7, 2016 at 20:50

3 Answers 3


A simple way to approach this will be to cluster samples based on their means and then check the distribution of the variances across the members of each cluster. It will be dependent on whether you want to cluster using only the averages or use the entire distribution. These are two different questions. For the second part, you could use something like the bhattacharya coefficient or the Kullback-Leiber distance as the (dis)similarity measure. Bear in mind that the two approaches will give you different clusters.I think you can also specify different assumptions for the underlying variances in the mclust package.

  • $\begingroup$ Thank you very much for this info. I was not aware of those measures of dissimilarity, or how to specify different assumptions for the underlying variances in mclust. If you could provide an example in R using my example data, that would be very helpful. $\endgroup$
    – itpetersen
    Commented Jun 11, 2016 at 12:48

Another approach would be to get each clusters distance from every other cluster using something like Jensen-Shannon divergence and then cluster the distributions based on those distances.


Have you tried to cluster distributions using the approach described here (Irpino A., Verde R. (2006) A New Wasserstein Based Distance for the Hierarchical Clustering of Histogram Symbolic Data. In: Batagelj V., Bock HH., Ferligoj A., Žiberna A. (eds) Data Science and Classification. Studies in Classification, Data Analysis, and Knowledge Organization. Springer, Berlin, Heidelberg)? It is a clustering method implemented in the R package HistDAWass. It performs a clustering using the Squared Wasserstein distance. In the package, you find also K-means like methods.

  • 1
    $\begingroup$ Could you please include a full citation? Links tend to go dead. $\endgroup$
    – mkt
    Commented Apr 5, 2018 at 14:29

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.