Случайная выборка из заданного двумерного дискретного распределения

Предположим, у меня есть двумерное дискретное распределение, то есть таблица значений вероятности P (X = i, Y = j) для i = 1, ... n и j = 1, ... m. Как мне сгенерировать случайную выборку (X_k, Y_k), k = 1, ... N из такого распределения? Может быть, есть готовая функция типа R:

sample(100,prob=biprob)

где бипроб 2-х мерная матрица?

Один из интуитивно понятных способов выбора заключается в следующем. Предположим, у нас есть data.frame

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

Откуда х и у

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

и pij - это P (X = i, Y = j).

Затем мы получаем наш образец (Xs, Ys) размером N следующим образом:

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

Я использую set.seed () для имитации «двумерности». Интуитивно я должен получить что-то похожее на то, что мне нужно. Я не уверен, что это правильный путь. Отсюда и вопрос :)

Другой способ - использовать выборку Гиббса, предельные распределения легко вычислить.

Я попробовал поискать в Google, но ничего по-настоящему не подошло.

Ответы на вопрос(2)

Ваш ответ на вопрос