Necesito calcular el Dirichlet CDF , pero solo puedo encontrar implementaciones del PDF .
¿Saben ustedes de alguna biblioteca (preferiblemente en R
) implementando?
Recuerda eso si son independientes , para , entonces
La prueba se puede encontrar en la página 594 del libro de Luc Devroye .
Por lo tanto, una posibilidad es calcular una aproximación de Monte Carlo de
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
}
No revisé el código. Úselo con cuidado. Si encuentra algún error, por favor díganos.
gtools
, MCMCpack
y dirmult
por ejemplo).
a <- c(6, 20,2)
Cómo obtener el cd de Drichelt? ¿Es t 2 por 2 matriz?
Cualquier biblioteca? Mathematica lo tiene. Aquí está el código para un diagrama de ejemplo de un CDF Dirichlet de la documentación:
Plot3D[CDF[DirichletDistribution[{1, 3, 2}], {x, y}], {x, 0, 1}, {y, 0, 1}]
rdirichlet
. Si solo es de 3 variantes o posiblemente de 4 variantes (el último componente, por supuesto, es redundante), puede valer la pena probar la cuadratura numérica.