Si quisiera obtener la probabilidad de 9 éxitos en 16 ensayos con cada ensayo con una probabilidad de 0.6, podría usar una distribución binomial. ¿Qué podría usar si cada uno de los 16 ensayos tiene una probabilidad diferente de éxito?
Si quisiera obtener la probabilidad de 9 éxitos en 16 ensayos con cada ensayo con una probabilidad de 0.6, podría usar una distribución binomial. ¿Qué podría usar si cada uno de los 16 ensayos tiene una probabilidad diferente de éxito?
Respuestas:
Esta es la suma de 16 (presumiblemente independientes) ensayos binomiales. El supuesto de independencia nos permite multiplicar las probabilidades. Por lo tanto, después de dos pruebas con probabilidades y de éxito, la probabilidad de éxito en ambas pruebas es , la probabilidad de no tener éxito es , y la probabilidad de un éxito es . Esa última expresión debe su validez al hecho de que las dos formas de obtener exactamente un éxito son mutuamente excluyentes: a lo sumo, una de ellas puede suceder. Eso significa que sus probabilidades se suman .
Por medio de estas dos reglas - probabilidades independientes se multiplican y mutuamente exclusivos añaden los - se puede trabajar las respuestas para, por ejemplo, 16 ensayos con probabilidades . Para hacerlo, debe tener en cuenta todas las formas de obtener cada número dado de éxitos (como 9). Hay maneras de lograr éxitos 9. Uno de ellos, por ejemplo, ocurre cuando los ensayos 1, 2, 4, 5, 6, 11, 12, 14 y 15 son éxitos y los otros son fracasos. Los éxitos habían probabilidades y y los fracasos tenían probabilidades . Multiplicar estos 16 números da la oportunidad( 16de esta secuencia particular de resultados. Sumar este número junto con los 11,439 números restantes da la respuesta.
Por supuesto que usarías una computadora.
Con muchos más de 16 ensayos, hay una necesidad de aproximar la distribución. No proporcionado de las probabilidades y sea demasiado pequeña, una aproximación normal tiende a funcionar bien. Con este método se tenga en cuenta que la expectativa de la suma de ensayos es y (debido a que los ensayos son independientes) la varianza es . A continuación, pretendas la distribución de sumas es normal con media y la desviación estándar . Las respuestas tienden a ser bueno para las probabilidades de computación que corresponden a una proporción de éxitos que difiere de por no más de unos pocos múltiplos de . A medida que aumenta de tamaño esta aproximación se pone cada vez más precisa y trabaja para múltiplos aún mayores de lejos de .n σ μ
Una alternativa a la aproximación normal de @ whuber es usar probabilidades de "mezcla" o un modelo jerárquico. Esto se aplicaría cuando los son similares de alguna manera, y puede modelar esto mediante una distribución de probabilidad con una función de densidad de indexada por algún parámetro . obtienes una ecuación integral:p i ∼ D i s t ( θ )θ
La probabilidad binomial proviene de establecer , la aproximación normal proviene de (creo) establecer (con y como se define en la respuesta de @ whuber) y luego anota el " las colas "de este PDF se caen bruscamente alrededor del pico.g ( p | θ ) = g ( p | μ , σ ) = 1μσ
También podría usar una distribución beta, que conduciría a una forma analítica simple, y que no tiene por qué sufrir el problema de "pequeña p" que tiene la aproximación normal, ya que la beta es bastante flexible. Usando una distribución con establecida por las soluciones a las siguientes ecuaciones (estas son las estimaciones de "divergencia mínima KL"):α , β
ψ(β)-ψ(α+β)=1
Donde Es la función digamma, estrechamente relacionada con las series armónicas.
Obtenemos la distribución del compuesto "beta-binomial":
Esta distribución converge hacia una distribución normal en el caso en que @whuber señala, pero debería dar respuestas razonables para pequeña y sesgada , pero no para multimodal , ya que la distribución beta solo tiene un pico. Pero puede solucionar esto fácilmente, simplemente usando distribuciones beta para los modosDivide la integral de en piezas para que cada pieza tenga un modo único (y suficientes datos para estimar los parámetros), y ajuste una distribución beta dentro de cada pieza. luego sume los resultados, observando que haciendo el cambio de variables parap i p i M M 0 < p < 1 M p = x - L L<x<U la beta integral se transforma en:
Deje ~ con función generadora de probabilidad (pgf): B e r n o u l l i ( p i )
Supongamos que denota la suma de variables aleatorias independientes. Entonces, el pgf para la suma de tales variables es: n S n = 16
Buscamos , que es:
TODO LISTO. Esto produce la solución simbólica exacta en función de . La respuesta es bastante larga para imprimir en la pantalla, pero es completamente manejable y toma menos de de segundo para evaluar el uso de Mathematica en mi computadora.
Ejemplos
Si , entonces:
Si , entonces:
¿Más de 16 ensayos?
Con más de 16 ensayos, no hay necesidad de aproximar la distribución. El método exacto anterior funciona con la misma facilidad para ejemplos con digamos o . Por ejemplo, cuando , se tarda menos de de segundo para evaluar todo el pmf ( es decir, en cada valor ) utilizando el código a continuación.
Código de Mathematica
Dado un vector de valores , diga:
n = 16; pvals = Table[Subscript[p, i] -> i/(n+1), {i, n}];
... aquí hay un código de Mathematica para hacer todo lo necesario:
pgfS = Expand[ Product[1-(1-t)Subscript[p,i], {i, n}] /. pvals];
D[pgfS, {t, 9}]/9! /. t -> 0 // N
0.198268
Para derivar todo el pmf:
Table[D[pgfS, {t,s}]/s! /. t -> 0 // N, {s, 0, n}]
... o use el más limpio y rápido (gracias a una sugerencia de Ray Koopman a continuación):
CoefficientList[pgfS, t] // N
Para un ejemplo con , toma solo 1 segundo calcular , y luego 0.002 segundos derivar todo el uso de pmf , por lo que es extremadamente eficiente.pgfS
CoefficientList
With[{p = Range@16/17}, N@Coefficient[Times@@(1-p+p*t),t,9]]
da la probabilidad de 9 éxitos y With[{p = Range@16/17}, N@CoefficientList[Times@@(1-p+p*t),t]]
da las probabilidades de 0, ..., 16 éxitos.
Table
para los -valores es intencional para permitir formas más generales no adecuados con . Su uso de es muy agradable! He agregado un código al código anterior que acelera enormemente el enfoque directo. Aun así, es incluso más rápido que a . No hace mucha diferencia para por debajo de 50 (ambos enfoques toman solo una pequeña fracción de segundo en ambos sentidos para generar el pmf completo), pero también será una verdadera ventaja práctica cuando n es realmente grande. Range
CoefficientList
Expand
CoefficientList
ParallelTable
CoefficientList
El comentario de @wolfies, y mi intento de respuesta reveló un problema importante con mi otra respuesta, que discutiré más adelante.
Caso específico (n = 16)
Hay una manera bastante eficiente de codificar la distribución completa utilizando el "truco" de usar números de base 2 (binarios) en el cálculo. Solo requiere 4 líneas de código R para obtener la distribución completa de donde . Básicamente, hay un total de elecciones del vector que las variables binarias podrían tomar. Ahora supongamos que numeramos cada opción distinta desde hasta . Esto por sí solo no es nada especial, pero ahora supongamos que representamos el "número de elección" usando la aritmética de base 2. Ahora tome para poder escribir todas las opciones para que hayaopciones Entonces en "números ordinarios" se convierte en en "números binarios". Ahora supongamos que los escribimos como números de cuatro dígitos, entonces tenemos . Ahora observe los últimos dígitos de cada número: puede considerarse como , etc. El conteo en forma binaria proporciona una manera eficiente de organizar la suma. . Afortunadamente, hay una función R que puede hacer esta conversión binaria por nosotros, llamada y convertimos la forma binaria en bruto en una vía numérica , luego obtendremos un vector conintToBits(x)
as.numeric(intToBits(x))
elementos, cada elemento es el dígito de la versión base 2 de nuestro número (leer de derecha a izquierda, no de izquierda a derecha). Usando este truco combinado con algunas otras vectorizaciones R, podemos calcular la probabilidad de que en 4 líneas de código R:
exact_calc <- function(y,p){
n <- length(p)
z <- t(matrix(as.numeric(intToBits(1:2^n)),ncol=2^n))[,1:n] #don't need columns n+1,...,32 as these are always 0
pz <- z%*%log(p/(1-p))+sum(log(1-p))
ydist <- rowsum(exp(pz),rowSums(z))
return(ydist[y+1])
}
Al conectar la caja uniforme y la caja raíz sqrt obtiene una distribución completa para y como:
Entonces, para el problema específico de éxitos en ensayos, los cálculos exactos son sencillos. Esto también funciona para una serie de probabilidades de hasta aproximadamente ; más allá de eso, es probable que comience a encontrarse con problemas de memoria, y se necesitan diferentes trucos informáticos.
Tenga en cuenta que al aplicar mi "distribución beta" sugerida obtenemos estimaciones de parámetros de y esto da una estimación de probabilidad que es casi uniforme en , dando un valor aproximado de . Esto parece extraño dado que una densidad de una distribución beta con se aproxima mucho al histograma de los valores de . ¿Qué salió mal?
Caso general
Ahora analizaré el caso más general y por qué falló mi aproximación beta simple. Básicamente, al escribir y luego mezclar sobre con otra distribución realidad está haciendo una suposición importante: que podemos aproximar la probabilidad real con Una probabilidad binomial única: el único problema que queda es qué valor de usar. Una forma de ver esto es usar la densidad de mezcla que es discreta uniforme sobre el real . Por lo tanto, reemplazamos la distribución beta con una densidad discreta de. Luego, el uso de la aproximación de mezcla se puede expresar en palabras como elegir un valor con probabilidad , y asumir que todos los ensayos de Bernoulli tienen esta probabilidad . Claramente, para que tal aproximación funcione bien, la mayoría de los valores de deberían ser similares entre sí. Esto básicamente significa que para la distribución uniforme de valores de @wolfies, resulta en una aproximación lamentablemente mala cuando se usa la distribución de mezcla beta. Esto también explica por qué la aproximación es mucho mejor para : están menos dispersos.
La mezcla luego usa la observada para promediar todas las opciones posibles de una sola . Ahora, como "mezclar" es como un promedio ponderado, no puede ser mejor que usar el mejor . Entonces, si los están suficientemente extendidos, no puede haber un solo que pueda proporcionar una buena aproximación a todos los .
Una cosa que dije en mi otra respuesta fue que puede ser mejor usar una mezcla de distribuciones beta en un rango restringido, pero esto todavía no ayudará aquí porque todavía se está mezclando en una sola . Lo que tiene más sentido es dividir el intervalo en partes y tener un binomio dentro de cada pieza. Por ejemplo, podríamos elegir como nuestras divisiones y ajustar nueve binomios dentro de cada rango de probabilidad . Básicamente, dentro de cada división, tendríamos adaptarse a una aproximación simple, como el uso de una binomial con probabilidad igual a la media de laen ese rango Si hacemos los intervalos lo suficientemente pequeños, la aproximación se vuelve arbitrariamente buena. Pero tenga en cuenta que todo esto hace que tengamos que lidiar con una suma de ensayos binomiales independientes con diferentes probabilidades, en lugar de ensayos de Bernoulli . Sin embargo, la parte anterior de esta respuesta mostró que podemos hacer los cálculos exactos siempre que el número de binomios sea lo suficientemente pequeño, digamos 10-15 más o menos.
Para extender la respuesta basada en bernoulli a una respuesta basada en binomio, simplemente "reinterpretamos" cuáles son las variables . Simplemente que : esto se reduce al Z_i original basado en pero ahora dice de qué binomios provienen los éxitos. Por lo tanto, el caso ahora significa que todos los "éxitos" provienen del tercer binomio, y ninguno de los dos primeros.
Tenga en cuenta que esto sigue siendo "exponencial", ya que el número de cálculos es algo así como donde es el número de binomios, es el tamaño del grupo, por lo que tiene donde . Pero esto es mejor que el que estaría tratando con mediante el uso de variables aleatorias de Bernoulli. Por ejemplo, supongamos que dividimos las probabilidades en grupos con probabilidades en cada grupo. Esto da cálculos, en comparación con
Al elegir grupos, y observando que el límite era de aproximadamente que es de aproximadamente celdas, podemos utilizar efectivamente este método para aumentar el máximo de a .
Si hacemos una aproximación más cruda, al bajar , aumentaremos el tamaño "factible" para . significa que puede tener un efectivo de aproximadamente . Más allá de esto, la aproximación normal debe ser extremadamente precisa.
R
que sea extremadamente eficiente y maneje valores mucho más grandes de , consulte stats.stackexchange.com/a/41263 . Por ejemplo, resolvió este problema para , dando la distribución completa, en menos de tres segundos. (Una solución comparable de Mathematica 9 - vea la respuesta de @wolfies - también funciona bien para una más pequeña pero no pudo completar la ejecución con un valor tan grande de .)n = 10 4 n n
El pmf (en general intratable) es Código R:
p <- seq(1, 16) / 17
cat(p, "\n")
n <- length(p)
k <- 9
S <- seq(1, n)
A <- combn(S, k)
pr <- 0
for (i in 1:choose(n, k)) {
pr <- pr + exp(sum(log(p[A[,i]])) + sum(log(1 - p[setdiff(S, A[,i])])))
}
cat("Pr(S = ", k, ") = ", pr, "\n", sep = "")
Para la respuesta de usada en wolfies, tenemos:
Pr(S = 9) = 0.1982677
Cuando crece, usa una convolución .
R
código eficiente en la solución al mismo problema (con diferentes valores de ) en stats.stackexchange.com/a/41263 . El problema aquí se resuelve en 0.00012 segundos de tiempo total de cálculo (estimado resolviéndolo 1000 veces) en comparación con 0.53 segundos (estimado resolviéndolo una vez) para este código y 0.00058 segundos usando el código Mathematica de Wolfies (estimado resolviéndolo 1000 veces). R