Zufallsstichprobe aus gegebener bivariater diskreter Verteilung

Angenommen, ich habe eine bivariate diskrete Verteilung, d. H. Eine Tabelle von Wahrscheinlichkeitswerten P (X = i, Y = j) für i = 1, ... n und j = 1, ... m. Wie erstelle ich aus einer solchen Verteilung eine Zufallsstichprobe (X_k, Y_k), k = 1, ... N? Vielleicht gibt es eine fertige R-Funktion wie:

sample(100,prob=biprob)

Wo ist Biprob eine zweidimensionale Matrix?

Eine intuitive Art zu probieren ist die folgende. Angenommen, wir haben einen data.frame

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

Woher x und y kommen

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

und pij sind die P (X = i, Y = j).

Dann erhalten wir unsere Stichprobe (Xs, Ys) der Größe N wie folgt:

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

Ich benutze set.seed (), um die "Bivarianz" zu simulieren. Intuitiv sollte ich etwas Ähnliches bekommen, was ich brauche. Ich bin mir jedoch nicht sicher, ob dies der richtige Weg ist. Daher die Frage :)

Eine andere Möglichkeit ist die Verwendung von Gibbs-Sampling. Randverteilungen sind einfach zu berechnen.

Ich habe versucht zu googeln, aber es ist nichts wirklich Relevantes aufgetaucht.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage