Hi I have two questions related to a previous question I asked here:

Simplex Random Walk

In this link it describes how to perform a random walk on the simplex.


It says that "This procedure effectively samples $x_{new}$ from a gamma random variable with mean of $x_{old}$ and standard deviation of $h*x_{old}$."

My first question is why would the mean be $x_{old}$?

As per the answer to my previous question the proposal distribution is a log-normal with parameters $(\ln(x_{old}),h)$. Wiki says the mean of a log-normal distribution is $e^{\mu + \frac{\sigma^2}{2}}$, which would evaluate to $e^{\ln(x_{old}) + \frac{h^2}{2}} = x_{old}e^{\frac{h^2}{2}}$. Am I missing something?

My second question is: What other ways are there to perform a random walk on a simplex? Is there a "standard" method? I've tried searching but am curious if I've missed something.

Thanks for any help.

  • $\begingroup$ You may draw from a Dirichlet distribution centered at the previous point. en.wikipedia.org/wiki/Dirichlet_distribution $\endgroup$
    – Zen
    Jun 17 '14 at 15:29
  • $\begingroup$ Thanks Zen, so given my current categorical distribution is $(p_1, p_2, \dots, p_k)$ I could set the concentration parameter to $(\alpha_1, \alpha_2, \dots, \alpha_k)$ where $\alpha_i = h*p_1$ and $h$ is my stepsize, and sample the new point from a Dirichlet with that concentration parameter. $\endgroup$
    – Richy
    Jun 18 '14 at 10:37
  • $\begingroup$ After trying this, it doesn't work as well as I imagined. I want the Dirichlet to be centered on my current categorical i.e. $p_i = \alpha_i / \sum_{j=1}^k \alpha_j$ so $\alpha_i = p_i*\sum_{j=1}^k \alpha_j$. But if $p_i = 0$ then $\alpha_i = 0$, yet there is the restriction that $\alpha_i > 0$. So I tried $\alpha_i + h$ where $h > 0$ is a stepsize (or inverse stepsize since bigger $h$ makes a more peaked distribution). The problem is that large $h$ (small steps) never seems to explore the boundary and small $h$ gives steps that are too large. Is there a way around this? $\endgroup$
    – Richy
    Jun 19 '14 at 8:46

You are currently at $(x_1,\dots,x_k)$, with $x_i>0$ and $\sum_{i=1}^k x_i=1$. If one ore more of the $x_i$'s is exactly zero, add a small "jitter" $\epsilon>0$ to them and renormalize $(x_1,\dots,x_k)$. Now you pick some $a_0>0$ and draw $(Y_1,\dots,Y_k)\sim\mathrm{Dir}(a_0x_1,\dots,a_0x_k)$. It follows that $\mathrm{E}[Y_i]=a_0x_i/\sum_{j=1}^k a_0x_j=x_i$. For small steps choose large $a_0$'s, and vice-versa.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.