Why do I get different distribution parameters each run?

1 view (last 30 days)
Dear All, I have a column vector of 1000 rows, I tried to fit this data into 2_normal mixture distribution using the below code, my question is: Why do I have different parameters every time I run the code, for example the 1st run the mean were (13 and 17), the 2nd run the means became (15 and 16.5)? is there something wrong with my code?
pd = fitgmdist(data, 2);

Accepted Answer

Adam Danz
Adam Danz on 29 Apr 2019
The default initial value starting method in fitgmdist() uses a k-means alogorithm that is not deterministic; it uses probability to jump around to different cluster centers (see step #4 in previous link). That leads to converging on slightly different centroids every time the process is run.
To ensure repeatability, record the random number generator seed prior to running the function.
rngState = rng('shuffle');
fitgmdist(...)
% to repeat the same results
rng(rngState)
fitgmdist(...))

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!