6 votos

Generación a partir de la distribución Dirichlet con las diferencias en una secuencia de uniformes ordenados

En primer lugar, supongamos que queremos generar desde un Dirichlet (1,1,1,1). ¿Sería correcto el siguiente método?:

  • generar tres variantes a partir de un Uniforme(0,1). Llámelas $x_1$ , $x_2$ , $x_3$ .
  • entonces, ordénelos de tal manera que $0 \leq x_{(1)} \leq x_{(2)} \leq x_{(3)} \leq 1$
  • entonces, devuelve las diferencias como nuestra variante Dirichlet: $(x_{(1)}, x_{(2)}-x_{(1)}, x_{(3)}-x_{(2)}, 1-x_{(3)})$

¿Es esto correcto? Tengo la sensación de que es correcto, pero no estoy seguro y esto no parece ser lo mismo que cualquier método descrito en Wikipedia o cualquier otra búsqueda que hice. Quizá sea lento o tenga otros problemas, pero tengo curiosidad por saber si es correcto.

Suponiendo que esto sea correcto, ¿se puede extender a Dirichlets no uniformes, como Dirichlet(a,b,c,d)?

Nota adicional : Soy no simplemente preguntando cómo generar un Dirichlet; ya hay mucha información al respecto. Sólo tengo curiosidad por saber si el método para los uniformes se puede ampliar. ¿Existe un método más general que implique dibujar a partir de una distribución, luego ordenar esos números y después utilizar los huecos?

4voto

farzad Puntos 4180

Si $Y_i$ son independientes $\mathrm{Gamma}(\alpha_i,\beta)$ , para $i=1,\dots,k$ entonces $$ (X_1,\dots,X_k) = \left(\frac{Y_1}{\sum_{j=1}^k Y_j}, \dots, \frac{Y_k}{\sum_{j=1}^k Y_j} \right) \sim \mathrm{Dirichlet}(\alpha_1,\dots,\alpha_k) \, .$$ Por lo tanto, en R sólo hay que hacer algo como

rdirichlet <- function(a) {
    y <- rgamma(length(a), a, 1)
    return(y / sum(y))
}

Y utilizarlo uniformemente

> rdirichlet(c(1, 1, 1, 1))
[1] 0.40186737 0.03924152 0.37070316 0.18818796

o no uniformemente

> rdirichlet(c(3, 2.5, 9, 7))
[1] 0.1377426 0.1043081 0.4701179 0.2878314

La prueba se encuentra en la página 594 del hermoso libro de Luc Devroye:

http://luc.devroye.org/rnbookindex.html

P.D. Gracias a @cardinal por los consejos de R hacking.

0voto

Russ Cam Puntos 58168

Dejemos que $U_{(1)},U_{(2)}, \ldots, U_{(n)}$ sean las estadísticas de orden de $U(0,1)$ distribución. Sea $W_0 = U_{(1)},W_i = U_{(i+1)}-U{(i)}$ , $1 \leq i \leq n-1$ .

Entonces $(W_0, W_1, \ldots, W_{n-1}) \sim \cal{D}(\alpha)$ una distribución dirichlet con parámetro $\alpha_{n+1,1} = (1,1,\ldots,1)$ . Es decir, $(W_0, W_1, \ldots, W_{n-1})$ se distribuye uniformemente en el simplex de n dimensiones.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X