Separate Drawing of Gaussian Mixture Model

Illustration
Ji Hoon Jeong - 2022-04-02T10:43:27+00:00
Question: Separate Drawing of Gaussian Mixture Model

I have a 1D data which need to be separated by two .   So I used fitgmdist(data,2); and got mu sigma component proportion for each of the gaussian distribution.   And here is the graph. (Gray : Data, Blue : psd of GMModel from fitgmdist) Until here, everything was okay.   So, question.   How can I separate those two gaussian distribution graph?   I tried Using makedist('Normal') to create each gaussian distribution. Multiply by each component proportion Add two distribution up But somehow I wasn't able to get the same graph overlapping picture above.     Probably I have the wrong concept of "Normalization" or "Gaussian Mixture Model".   Any advise or site to lookup would be grateful.   ------------------------------------------------------------ @Image Analyst: data uploaded. thanks for the advice I'll remember that next time :)

Expert Answer

Profile picture of John Williams John Williams answered . 2025-11-20

You did something like this:

 

x = [randn(4000,1)/2; 5+2*randn(6000,1)];
f = fitgmdist(x,2);
histogram(x,'Normalization','pdf')
xgrid = linspace(-4,12,1001)';
hold on; plot(xgrid,pdf(f,xgrid),'r-'); hold off

You can duplicate the pdf values by doing something like this:

n1 = makedist('normal',f.mu(1),sqrt(f.Sigma(1)));
n2 = makedist('normal',f.mu(2),sqrt(f.Sigma(2)));
p = f.ComponentProportion;

y = p(1)*pdf(n1,xgrid) + p(2)*pdf(n2,xgrid);
hold on; plot(xgrid,y,'c--'); hold off

One thing to watch out for. In probability and statistics, it's common to write the standard deviation of a univariate normal distribution as the Greek letter sigma. But it's common to write the covariance matrix of a multivariate distribution as capital Sigma. So that's why I used sqrt(Sigma) to create the univariate distributions.


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!