Bivariate Guassian mixed model on 1D data
古いコメントを表示
Hi, I am trying to plot a guassian curve on the histogram distribution of my 1D data. This is my code:
data = xlsread('csf.xlsx','ab');
mu1 = mean('data');
sigma1 = std('data');
X = [mvnrnd(mu1,sigma1,1000)];
numComponents=2;
paramEsts = fitgmdist(X,numComponents);
MU=[paramEsts.mu(1);paramEsts.mu(2)];
SIGMA=cat(3,[paramEsts.Sigma(1)],[paramEsts.Sigma(2)]);
PPp=[paramEsts.PComponents(1),paramEsts.PComponents(2)];
gm = gmdistribution(MU,SIGMA,PPp);
dimension = gm.NumVariables
rng(1);
min_val = min(data(:)-100); max_val = max (data(:)+1000);
% min_val = min('data'); max_val = max ('data');
histogram(data, 'Normalization', 'pdf', 'EdgeColor', 'none')
x= min_val:0.01:max_val;
xlim([min_val max_val])
hold on;
xgrid = linspace (50,3000,500)';
n1 = makedist('normal',paramEsts.mu(1),sqrt(paramEsts.Sigma(1)));
n2 = makedist('normal',paramEsts.mu(2),sqrt(paramEsts.Sigma(2)));
p = paramEsts.ComponentProportion;
y = p(1)*pdf(n1,xgrid) + p(2)*pdf(n2,xgrid);
hold on; plot(xgrid,y,'b'); hold off
And this is what I get:

However, I am trying to get something like this:

Please, how do I achieve this?
2 件のコメント
the cyclist
2018 年 8 月 24 日
Can you upload either the Excel file or the resulting data variable in a MAT file (using that little paperclip icon)?
Trisha Kibaya
2018 年 8 月 27 日
回答 (1 件)
Image Analyst
2018 年 8 月 24 日
0 投票
Try something like the attached demo that fits two Gaussians to data. Adapt as needed (like replace blue dots on plot with white bars or whatever).

7 件のコメント
Trisha Kibaya
2018 年 8 月 27 日
Image Analyst
2018 年 8 月 27 日
You might be able to get somewhat close by taking the log of your data and doing a multilinear regression with polyfit. See the attached and try to adapt the formula in it to be a sum of two Guassians.
Trisha Kibaya
2018 年 8 月 28 日
Image Analyst
2018 年 8 月 28 日
Yes. What do you have? Formulas, or vectors?
Trisha Kibaya
2018 年 8 月 28 日
Image Analyst
2018 年 8 月 28 日
Trisha Kibaya
2018 年 8 月 28 日
カテゴリ
ヘルプ センター および File Exchange で Uniform Distribution (Continuous) についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!