Hi, I would like to generate samples from a Dirichlet distribution defined on the nxm probability simplex, i.e. each sample is a nxm matrix whose rows and columns sum to given probability densities (marginals). The only thing I can generate so far using Pyro Dirichlet distribution is a bi-stochastic matrix, for example using: ideal_design = Dirichlet(torch.tensor(0.25 * torch.ones(1, 2, 2))).to_event(1)
Any input on that is appreciated.
can you be more specific? if you want a matrix that doesn’t consistent of independent dirichlet draws for each row (or column) you presumably need a different distribution from dirichlet
Thank you Martin. I would like to sample from the generalised Dirichlet over the probabilty simplex of matrices. Starting from a base distribution on R^{n \times m}, I would like to sample matrices where the sum of rows and columns yield the marginal distributions and the sum of all entries yields 1.
if “generalized dirichlet” refers to a specific distribution known in the literature can you please provide a reference?
afaik no such distribution is implemented in pytorch/pyro/numpyro/tfp so you would probably need to implement such a distribution yourself or find an alternative solution that uses implemented distributions
Thank you, Martin, so is the limitation right now related to the definition of Constraint = Simplex ? If I change this bit, can I generalise the code to my case? Otherwise, what kind of distribution already implemented in Pyro do you suggest for my use case?
i don’t have any suggestions because i don’t understand your use case.
pyro distributions are listed here.
but yes presumably you need something like a DoublyStochasticMatrix
constraint and an appropriate distribution defined on that space