Amostra aleatória de determinada distribuição discreta bivariada

Suponha que eu tenha uma distribuição discreta bivariada, ou seja, uma tabela de valores de probabilidade P (X = i, Y = j), para i = 1, ... nej = 1, ... m. Como faço para gerar uma amostra aleatória (X_k, Y_k), k = 1, ... N a partir dessa distribuição? Talvez exista uma função R pronta como:

sample(100,prob=biprob)

onde biprob é matriz bidimensional?

Uma maneira intuitiva de provar é a seguinte. Suponha que tenhamos um data.frame

dt=data.frame(X=x,Y=y,P=pij)

De onde vêm x e y

expand.grid(x=1:n,y=1:m)

e pij são os P (X = i, Y = j).

Em seguida, obtemos nossa amostra (Xs, Ys) do tamanho N, da seguinte maneira:

set.seed(1000) 
Xs <- sample(dt$X,size=N,prob=dt$P)
set.seed(1000)
Ys <- sample(dt$Y,size=N,prob=dt$P)

Eu uso set.seed () para simular a "bivariateness". Intuitivamente, devo obter algo semelhante ao que preciso. Não tenho certeza de que esta seja a maneira correta. Daí a pergunta :)

Outra maneira é usar a amostragem de Gibbs; distribuições marginais são fáceis de calcular.

Tentei pesquisar no Google, mas nada realmente relevante surgiu.

questionAnswers(2)

yourAnswerToTheQuestion