Supongamos que tengo una distribución discreta bivariada, es decir, una tabla de valores de probabilidad P (X = i, Y = j), para i = 1, ... n y j = 1 ,. ..metro. ¿Cómo puedo generar una muestra aleatoria (X_k, Y_k), k = 1, ... N de dicha distribución? Tal vez haya una función R lista como:Muestra aleatoria de una distribución discreta bivariada dada
sample(100,prob=biprob)
donde biprob is 2 dimensional matrix?
Una forma intuitiva de muestra es la siguiente. Supongamos que tenemos un data.frame
dt=data.frame(X=x,Y=y,P=pij)
donde X e Y provienen de
expand.grid(x=1:n,y=1:m)
y pij son el P (X = I, Y = j).
A continuación, obtener la muestra (Xs, Ys) de tamaño N, de la siguiente manera:
set.seed(1000)
Xs <- sample(dt$X,size=N,prob=dt$P)
set.seed(1000)
Ys <- sample(dt$Y,size=N,prob=dt$P)
utilizo set.seed() para simular el "bivariateness". Intuitivamente, debería obtener algo similar a lo que necesito. Sin embargo, no estoy seguro de que esto sea correcto. De ahí la pregunta :)
Otra forma es utilizar el muestreo de Gibbs, las distribuciones marginales son fáciles de calcular.
Intenté googlear, pero no surgió nada realmente relevante.
La lectura de este nuevo cuidado, esta es la misma solución como lo que sugiero. Las filas de muestreo son probablemente más limpias que la combinación de rmultinom y cuál. La clave es darse cuenta de que las filas y las columnas son solo notación. – Tristan
Sí, la notación es la clave. La distribución discreta bivariada es igual a la distribución discreta univariada con notación modificada. Escojo la respuesta de Anika como la correcta, pero solo porque el código es más simple :) Tristan da una mejor explicación teórica. – mpiktas
+1 para buen ejemplo – andi