3
$\begingroup$

This post is intended in a similar direction to an earlier one Can I use Compile to speed up InverseCDF? . I now wish to generate uniform points in an $n$-simplex (specifically $n=8$), making use of the indicated "golden-ratio" generalization procedure of Martin Roberts for a low-discrepancy sequence of points in the hypercube $[0,1]^{n+1}$.

I take it that now instead of the command

P = InverseCDF[NormalDistribution[0, 1], T] 

in the earlier post (where T is the (n+1)-vector of real numbers in the hypercube), I could replace NormalDistribution by GammaDistribution (and then normalize $P$ to sum to 1).

Then, what pair of parameters (one of them should be 1) should be employed in the argument of GammaDistribution?

Or is there a more appropriate/obvious approach to utilizing the Roberts methodology? (Might DirichletDistribution be employed?)

I see that there is a good deal of related discussion on this site Uniformly distributed n-dimensional probability vectors over a simplex

$\endgroup$

1 Answer 1

4
$\begingroup$

One approach to incorporating the Roberts methodology for generating sequences of low-discrepancy points in hypercubes in our effort to obtain points uniformly distributed over simplicies, is to adapt the code

samples[n_] := Differences[Join[{0}, Sort[RandomReal[Range[0, 1], n - 1]],{1}]] 

put forth by Sophie Alpert in her answer in https://stackoverflow.com/questions/3010837/sample-uniformly-at-random-from-an-n-dimensional-unit-simplex

We would replace

RandomReal[Range[0, 1], n - 1] 

by another (n-1)-length vector G, the $i$-th realization of which would be given by

p = x /. Solve[x^n == x + 1, x][[1]];Do[G[[j]] = Mod[1/2 + i/p^j,1], {j, 1, n-1}]; 

So, the Roberts procedure would be employed in our case at hand to generate 8-vectors, rather than 9-vectors, as we originally anticipated.

$\endgroup$

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.