Separate Drawing of Gaussian Mixture Model
23 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Ji Hoon Jeong
le 27 Jan 2016
Réponse apportée : cynthia thing
le 31 Déc 2020
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)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/153612/image.png)
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 :)
5 commentaires
Réponse acceptée
Tom Lane
le 28 Jan 2016
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.
1 commentaire
Plus de réponses (2)
yusra Ch
le 5 Sep 2020
Could you plz tell me how did you plot the bleu line in your graph ? I have GM that I want to draw but I dont know how to do it . could you plz help me?
gm =
Gaussian mixture distribution with 2 components in 1 dimensions
Component 1:
Mixing proportion: 0.500000
Mean: 3.3153
Component 2:
Mixing proportion: 0.500000
Mean: -61.5348
The values of Sigma are :
val(:,:,1) =
15.3648
val(:,:,2) =
137.2863
cynthia thing
le 31 Déc 2020
Hi , could you share the code for the histogram with fitted mixture model curve like the first picture above?
Much appreciated
0 commentaires
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!