locked
What's the difference between Dirichlet.Symmetric and Dirichlet.Uniform RRS feed

  • Question

  • According to (http://en.wikipedia.org/wiki/Dirichlet_distribution) symmetric dirichlet means that each data point has the same probability. Page (http://research.microsoft.com/en-us/um/cambridge/projects/infernet/codedoc/html/M_MicrosoftResearch_Infer_Distributions_Dirichlet_Uniform.htm)  says Dirichlet.Uniform "Instantiates a uniform Dirichlet distribution". What does "a uniform Dirichlet distribution" mean? How is it different from a symmetric Dirichlet distribution?

    Thanks.


    • Edited by VS2015 Sunday, May 31, 2015 7:10 PM
    Sunday, May 31, 2015 7:10 PM

All replies

  • I think you've misread the Wikipedia page.  It actually explains the difference quite clearly. 
    Monday, June 1, 2015 11:54 AM
    Owner
  • In symmetric all elements are the same. The uniform is a special case of the symmetric where all elements are equal to 1.0
    Monday, June 1, 2015 1:17 PM
  • In symmetric all elements are the same. The uniform is a special case of the symmetric where all elements are equal to 1.0

    Hi, thanks for your reply.

    Is there any difference between set the parameters to be 1.0 or not providing they are the same?

    Isn't it that as long as all the parameters are the same, all data points have the same probability to be generated?

    thanks!

    Monday, June 1, 2015 4:58 PM
  • Try creating symmetric Dirichlet distributions with various parameter values and sampling from them.  You will see the difference.
    Monday, June 1, 2015 5:45 PM
    Owner
  • No, not at all. The variance will differ. Think of the Dirichlet as a multivariate Beta.

    var dirichlet = Dirichlet.Symmetric(4, 1E+10);
    for (int i = 0; i < 10; ++i)
    {
        Console.WriteLine(dirichlet.Sample());
    }
    
    -->
    
    0.25 0.25 0.25 0.25
    0.25 0.25 0.25 0.25
    0.25 0.25 0.25 0.25
    0.25 0.25 0.25 0.25
    0.25 0.25 0.25 0.25
    0.25 0.25 0.25 0.25
    0.25 0.25 0.25 0.25
    0.25 0.25 0.25 0.25
    0.25 0.25 0.25 0.25
    0.25 0.25 0.25 0.25

    var dirichlet = Dirichlet.Uniform(4);
    for (int i = 0; i < 10; ++i)
    {
        Console.WriteLine(dirichlet.Sample());
    }
    
    -->
    
    0.5159 0.3083 0.04316 0.1327
    0.3961 0.1234 0.2047 0.2758
    0.3509 0.2807 0.3121 0.05629
    0.1047 0.1624 0.6214 0.1116
    0.01861 0.7009 0.1081 0.1724
    0.3101 0.2754 0.1637 0.2509
    0.06724 0.5452 0.1017 0.2859
    0.3195 0.08231 0.07704 0.5211
    0.06295 0.1095 0.6293 0.1983
    0.1478 0.06832 0.7218 0.06212

    -Y-

    Monday, June 1, 2015 6:03 PM