How to sample Multinomial Distribution

Suppose I have the X data with dimension(VxN), and probability rho(vkj) with k is latent variable How could I sample Matrix (Av1j,...,AvKj)follows Multinomial (Xvj,rho(vkj))

 Réponse acceptée

It is difficult to read your question. Please use underscore to separate your variable names from subscripts. Here's a solution with nested loops. Perhaps you can find a way to vectorise it if the size of X is prohibitively large.
V = 50; N = 10; K = 5;
X = 100*ones(V,N); % assuming 100 trials (sample size)
rho = rand(V,N,K);
rho = rho./repmat(sum(rho,3),1,1,K);
for v = 1:V
for j = 1:N
A(v,:,j) = mnrnd(X(v,j),squeeze(rho(v,j,:))); % your A_vkj
end
end

2 commentaires

Mike Nguyen
Mike Nguyen le 17 Déc 2017
Thanks for your reply Could you tell me why we use squeeze(rho(v,j,:)) here?
Because mnrnd expects the second argument to be a 1xK or Kx1 vector whereas rho(v,j,:) is 1x1xK. squeeze converts the 1x1xK vector to Kx1 by removing the singleton dimension.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by