6 votos

Distribución del número de recuentos distintos de cero de un conjunto con distribución multinomial

La distribución multinomial de recuento para un conjunto de $M$ categorías es

$P((n_1, \dots,n_M)|N)=\left(\frac{N!}{n_1!\dots n_m!}\prod_{i=1}^Mp_i^{n_i}\right)\delta\left( \sum_{i=1}^M n_i-N\right)\;,$
donde categoría $i=1, \dots, m$ aparece $n_i$ veces, y el Dirac $\delta$ -parece hacer cumplir la restricción de suma que $\sum_{i=1}^M n_i=N$ .

Cuál es la distribución, $P(m)$ del número de recuentos distintos de cero , $m=\sum_{i=1}^M\mathrm{sgn}[n_i]$ donde $\mathrm{sgn}(x)=1$ para $x>0$ y $0$ para $x=0$ .

No pude encontrar nada en una búsqueda rápida en Internet, pero todavía tengo la esperanza de que puede haber una solución de forma cerrada, incluso para el caso en que el $p_i$ son todas distintas.

Un enfoque consiste en centrarse en la distribución, $P_0(m_0)$ de recuento cero, $m_0$ de la que pienso $P(m)=1-P_0(M-m)$ .

Un subconjunto específico de $m_0$ categorías se denota $\alpha=\{\alpha_1, \dots, \alpha_{m_0}\}$ donde $\alpha_i\in\{1, \dots, M\}$ . Existen $\binom{M}{m_0}$ distinto $\alpha$ subconjuntos. Para un $\alpha$ la probabilidad de obtener uno de los $\alpha$ categorías en una sola muestra de recuento es $p_\alpha=\sum_{i=1}^{m_0}p_{\alpha_i}$ . Por lo tanto, la probabilidad de obtener algo distinto del $\alpha$ categorías a través de $N$ muestras es $(1-p_\alpha)^N$ . Esta representación ignora las permutaciones del $\alpha$ subconjunto. Existen $m_0!$ tales permutaciones.

Si alguien conoce una solución, por favor, compártala. En lugar de una solución, me vendría bien ayuda en la combinatoria en la suma de $(1-p_\alpha)^N$ sobre subconjuntos $\alpha$ y sus ordenaciones.

4voto

Tushu Puntos 266

No creo que exista una solución general de forma cerrada. Se puede encontrar la solución exacta mediante programación dinámica. Usted puede aproximar la distribución mediante el cálculo de la media y la varianza y el uso de una aproximación normal. Y, por último, para el caso en que $p_1 = p_2 = \ldots p_M = 1/M$ se puede encontrar una solución de forma cerrada utilizando números de Stirling del segundo tipo.

Solución exacta mediante programación dinámica

Defina $S_k = \sum_{i=1}^k n_i$ , $I_k = \sum_{i=1}^k \mathbb{I}(n_i > 0)$ . Mediante programación dinámica calcularemos iterativamente la probabilidad de que el $k$ las primeras variables suman $n$ y que $m$ de la primera $k$ son distintos de cero,

$$ d(k, n, m) = P(S_k = n, I_k = m) $$

Inicializar la tabla de programación dinámica con,

$$ d(0, n, m) = \begin{cases} 1 & n=0, m=0 \\ 0 & \text{otherwise} \end{cases} $$

A continuación, recurse sobre $k=1,\ldots,M$ ,

$$ d(k, n, m) = \operatorname{binomial}(0; N-n, \tilde{p}_k)d(k-1, n, m) + \sum_{r=1}^{n}\operatorname{binomial}(r; N-n+r,\tilde{p}_k)d(k-1, n-r, m-1), \quad m \leq k $$

donde $\tilde{p}_{k} = p_{k} / \sum_{i=k+1}^M p_i$ . El primer término tiene en cuenta el caso en el que la variable k'th es cero y, por tanto, no contribuye con nuevas variables distintas de cero, y el segundo término (la suma) tiene en cuenta todos los casos en los que la variable k'th es distinta de cero. A continuación se muestra una implementación ingenua en R. Los bucles se pueden reorganizar para que el bucle final termine en $r$ en lugar de $m$ para evitar computar las mismas densidades binomiales múltiples veces, aún así no creo que esto se pueda hacer mejor que $\mathcal{O}(M^2N^2)$ .

p <- c(0.1,0.1,0.2,0.2,0.4)
N <- 6
M <- 5

p_tilde <- p / rev(cumsum(rev(p)))
d <- array(0, dim = c(M+1,N+1,M+1))
d[1,1,1] = 1
for (k in 1:M) {
  for (n in 0:N) {
    for (m in 0:k) {
      d[k+1, n+1, m+1] <- dbinom(0, N-n, prob = p_tilde[k]) * d[k, n+1, m+1]
      if (m > 0 && n > 0) {
        r <- 1:n
        d[k+1, n+1, m+1] <- d[k+1, n+1, m+1] + 
          sum(dbinom(r, r+N-n, prob = p_tilde[k]) * d[k, n-r+1, m])
      }
    }
  }
}

Verificar la solución mediante simulación

> table(colSums(rmultinom(1e6, size = N, prob = p) > 0 )) / 1e6

       1        2        3        4        5 
0.004245 0.114157 0.449484 0.374784 0.057330 
> d[M+1,N+1,]
[1] 0.000000 0.004226 0.114734 0.449280 0.374160 0.057600

Solución de aproximación

Para utilizar una aproximación normal debemos calcular la media y la varianza. En primer lugar, la media se puede calcular como,

$$ \mathbb{E}[m]= \mathbb{E}\left[\sum_{i=1}^M\mathbb{I}(n_i>0)\right] = \sum_{i=1}^M\mathbb{E}[\mathbb{I}(n_i>0)] = \sum_{i=1}^M 1-(1-p_i)^N. $$

A continuación, la varianza, \begin{equation} \begin{split} \mathbb{V}[m] &= \mathbb{V}\left[\sum_{i=1}^M\mathbb{I}(n_i>0)\right] \\ &= \sum_{i=1}^M\mathbb{E}[\mathbb{I}(n_i>0)] \\ &= \sum_{i=1}^M\mathbb{V}[\mathbb{I}(n_i>0)] + 2 \sum_{1\leq i < j \leq M} \operatorname{Cov}(\mathbb{I}(n_i>0), \mathbb{I}(n_j>0)) \\ &= \sum_{i=1}^M (1-(1-p_i)^N)(1-p_i)^N + 2 \sum_{1\leq i < j \leq M} \operatorname{Cov}(1-\mathbb{I}(n_i>0), 1-\mathbb{I}(n_j>0)) \\ &= \sum_{i=1}^M (1-(1-p_i)^N)(1-p_i)^N + 2 \sum_{1\leq i < j \leq M} \left[(1-p_i-p_j)^N - (1-p_i)^N(1-p_j)^N\right] \end{split} \end{equation}

Se trata de un $\mathcal{O}(N^2)$ algoritmo. Si $M$ es muy grande, puede omitir los términos de covarianza, que en general debería esperar que sean pequeños, y puede calcular la aproximación en $\mathcal{O}(N)$ .

computed_variance <- sum((1-p)^N*(1-(1-p)^N))
for (i in 1:(M-1)) {
  for (j in (i+1):M) {
    computed_variance <- computed_variance + 2*((1-p[i]-p[j])^N-(1-p[i])^N*(1-p[j])^N)
  }
}

> computed_variance
[1] 0.602115
> var(colSums(rmultinom(1e6, size = N, prob = p) > 0 ))
[1] 0.602461

Estuche para uniformes

Por último, en el caso uniforme $p_i=p\,\forall i$ debemos contar de cuántas maneras podemos distribuir $N$ objetos numerados en $M$ número utilizando exactamente $m$ de los contenedores. Esto se puede hacer en un procedimiento de dos pasos, primero elija $m$ de la $M$ bins, esto se puede hacer en $M \choose m$ formas. A continuación, distribuya el $N$ en cada uno de los $m$ con al menos un objeto en cada recipiente, esto se puede hacer en $m!S(N,m)$ donde $S(N,m)$ es el número de Stirling del segundo tipo. Obtenemos la siguiente fórmula

$$ p(m) = {M \choose m} m! S(N,m) / M^N $$

Ejemplo, $N=4$ , $M=5$ , $m=3$ ( $S(4,3) = 6$ ):

> table(colSums(rmultinom(1e6, size = 4, prob = rep(1/5, 5)) > 0)) / 1e6

       1        2        3        4 
0.008013 0.224771 0.575393 0.191823 
> choose(5, 3) * factorial(3) * 6 / 5^4
[1] 0.576

0voto

Jaime Richards Puntos 61

No creo que esta cuestión tenga una solución cerrada en general. Sin embargo, hay un caso especial en el que $p_i=p=\frac{1}{M}, \forall p$ por ejemplo, un dado justo de 6 caras. En tal caso, podemos utilizar el estrellas y barras . Suponiendo que $m <= min(M, N)$ .

Digamos que tenemos M bolas para meter en N cubos. No se debe dejar ninguna bola. Tenemos totalmente $\binom{N + M -1}{N}$ asignaciones. Este es el denominador. Teniendo exactamente $m$ Los cubos no vacíos pueden considerarse un proceso de dos pasos. En primer lugar, se selecciona $m$ cubos, $\binom{M}{m}$ posibles selecciones. Y, a continuación, organizar el $N$ bola(s) en los cubos seleccionados, $\binom{N-1}{m-1}$ . Por ejemplo, si $M=5, N=3$ se darán los siguientes casos:

  1. Sólo hay un cubo que no está vacío. Puedes seleccionar cualquiera de los tres cubos y meter todas las bolas. #posibilidades = 3
  2. Sólo dos cubos no están vacíos. Seleccionar dos cubos tiene 3 posibilidades. Poner 5 bolas en 2 cubos donde no hay ningún cubo vacío tiene 4 posibilidades. #posibilidades = 12
  3. Los tres cubos no están vacíos. Coloca 5 bolas en tres cubos. De nuevo, no hay cubos vacíos. #posibilidades = 6.

Las probabilidades son entonces, por ejemplo, $p(m=3) = 6 / \binom{5+3-1}{5} = 0.2857$ . R para esto. Tenga en cuenta que ahora estoy usando $k$ en su lugar $M$ .

multinomial_non0_count_v1 <- function(k, n) {
  stop = min(k, n)
  total = choose(n + k -1, n)
  for (m in 1:stop) {
    prob = choose(k, m) * choose(n-1, m-1) / total
    print(paste(m, prob))
  }
}

La función anterior no es numéricamente estable para grandes k,n,m porque los coeficientes binomiales se vuelven demasiado grandes para calcularlos. Sin embargo, podemos calcular la probabilidad mediante la expansión de los coeficientes binomiales y la cancelación a través de la división. $p = \frac{[k,...,m+1][k-1,...,m][n,...,n-m+1]}{[n+k-1,...,n][k-m,...,1]}$ . Abusando de la notación de $[x,...,y]$ aquí significa $x(x-1)(x-2)...y$ el producto de enteros continuos entre $x$ y $y$ , donde, $x >= y$ .

prob <- function(m, k, n) {
  stopifnot(m <= min(k,n))
  if (m == k) {
    res = exp(sum(log(seq(n, n-m+1))) - sum(log(seq(n+k-1, n))))
  } else {
    minuend = sum(log(seq(k, m+1))) + sum(log(seq(k-1, m))) + sum(log(seq(n, n-m + 1)))
    subtrahend = sum(log(seq(n+k-1, n))) + sum(log(seq(k-m, 1))) 
    res = exp(minuend - subtrahend)
  }
  res
}

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