Załóżmy, że mam dwuwymiarowy dyskretny rozkład, tj. Tabelę wartości prawdopodobieństwa P (X = i, Y = j), dla i = 1, ... n i j = 1 ,. ..m. Jak wygenerować losową próbkę (X_k, Y_k), k = 1, ... N z takiej dystrybucji? Może istnieje gotowa funkcja R, taka jak:Losowa próbka z danego dwuwymiarowego dyskretnego rozkładu
sample(100,prob=biprob)
gdzie biprob jest dwuwymiarową matrycą?
Jeden intuicyjny sposób próbkowania jest następujący. Załóżmy, że mamy data.frame
dt=data.frame(X=x,Y=y,P=pij)
gdzie x i y pochodzą z
expand.grid(x=1:n,y=1:m)
są pij i P (X = I, Y = J).
Wtedy dostajemy naszą próbkę (Xs, Ys) o rozmiarze N, w następujący sposób:
set.seed(1000)
Xs <- sample(dt$X,size=N,prob=dt$P)
set.seed(1000)
Ys <- sample(dt$Y,size=N,prob=dt$P)
używam set.seed(), aby symulować "bivariateness". Intuicyjnie powinienem dostać coś podobnego do tego, czego potrzebuję. Nie jestem pewien, czy to prawda. Stąd pytanie :)
Innym sposobem jest użycie próbkowania Gibbs, dystrybucje marginalne są łatwe do obliczenia.
Próbowałem googling, ale nic naprawdę istotne nie podszedł.
przeczytaniu tego ponownie starannie, jest to ta sama rozwiązanie jak to, co sugeruję. Próbkowanie rzędów jest prawdopodobnie czystsze niż łączenie rmultinom i które. Kluczem jest uświadomienie sobie, że wiersze i kolumny są po prostu notacją. – Tristan
Tak, zapis jest kluczem. Dwuwymiarowa dyskretna dystrybucja jest taka sama jak jednokierunkowa dyskretna dystrybucja z notacją zmienioną. Wybieram odpowiedź Aniki jako prawidłową, ale tylko dlatego, że kod jest prostszy :) Tristan daje lepsze wyjaśnienie teoretyczne. – mpiktas
+1 za ładny przykład – andi