10 votos

La implementación de Dirichlet cdf?

Necesito calcular el Dirichlet CDF, pero sólo puedo encontrar las implementaciones de los PDF.

¿Ustedes saben de alguna biblioteca (preferiblemente en R) de la aplicación?

9voto

farzad Puntos 4180

Recuerde que, si $Y_i$ son independientes $\mathrm{Gamma}(a_i,b)$$i=1,\dots,k$, luego $$ (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}(a_1,\dots,a_k) \, .$$

La prueba se puede encontrar en la página 594 de Luc Devroye del libro.

Por lo tanto, una posibilidad es calcular una aproximación de Monte Carlo $$ F_{X_1,\dots,X_k}(t_1,\dots,t_k)=P\left\{X_1\leq t_1,\dots, X_k\leq t_k\right\} \, , $$ comenzando con gammas. En R, intente esto:

pdirichlet <- function(a, t) {
    N <- 10000
    rdirichlet <- function(a) { y <- rgamma(length(a), a, 1); y / sum(y) }
    x <- replicate(N, rdirichlet(a), simplify = FALSE)
    sum(sapply(x, function(x) prod(x <= t))) / N
}

Yo no comprobar el código. Utilizar con precaución. Si usted encuentra cualquier error, por favor avísenos.

2voto

Ann Puntos 151

Cualquier biblioteca? Mathematica tiene. Aquí está el código para un ejemplo de la trama de una de Dirichlet CDF de la documentación:

Plot3D[CDF[DirichletDistribution[{1, 3, 2}], {x, y}], {x, 0, 1}, {y, 0, 1}]

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