MATLAB: How to sample Multinomial Distribution

latentMATLABmultinomial

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))

Best Answer

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