Problem:
I have a simulated data set which is comprised of multiple sub-populations (or samples), each sub-population is drawn from, and described by, its own Gaussian distribution (although by chance, sub-populations can have identical distribution properties). Below, we can see this data set shown as a function of measurement index (or time):
Because this dataset is simulated, I know where the sub-population "boundaries are", and I have marked them on the plot (red lines indicate the sub-population mean, while blue is a $\mu\pm1\sigma$ boundary).
If one looks at the PDF of the entire data set, then we see something that resembles a Gaussian Mixture Distribution -- this may not be a Gaussian Mixture Distribution in the conventional sense, as the "weights" are defined by the number of points in a given sub-population, rather than the probability of an observation belonging to a component distribution of the mixture.
Objective:
What I want to achieve, is the ability to split this dataset back into its component sub-populations. I think some kind of GMM based clustering may be the way to do this. I've tried using the R
library Mclust
, but had only limited success.
If I import the data as univariate, then I get some strange classification results (for G = 2
and G = 16
):
As you can see, nothing looks very Gaussian.
If I keep the indexing (or temporal information), and import as $x-y$ data, then I get some more reasonable classification, but not in the way I would expect for this kind of data:
Here we can see that the clusters are being found as ellipsoids -- a consequence of the model choice and constraints. In my case I would expect/want a "rectangular" profile
I don't expect to be able to perfectly reconstruct the sub-populations, especially if they have very similar distribution properties, but I would like to find a method of decomposing the data set in an unbiased way -- i.e. remove the bias of my choice of decomposition if I were to do it manually.
If anyone can suggest a way I can achieve this, either with another R
library, or another technique -- maybe my GMM approach is a dead end.
My fundamental objective is to split the data set into its constituent component sub-populations in an unbiased way.