10 votos

Voltear un conjunto de prácticas desleales de monedas

Digamos que tengo $5$ desleal monedas. Cada uno con una personalidad independiente, conocido, la probabilidad de que el aterrizaje en la cabeza. Le doy la vuelta cada moneda una vez. ¿Cómo puedo encontrar la probabilidad de que yo consiga $3$ o más cabezas?

Ejemplo:

$P(H_1) = .38$

$P(H_2) = .18$

$P(H_3) = .71$

$P(H_4) = .66$

$P(H_5) = .29$

8voto

John H Puntos 122

Deje $X$ el número de cabezas que observar.

Supongamos que queremos encontrar $P(X=3)$

Hay ${5 \choose 3}=10$ formas de seleccionar las monedas que se muestran como jefes. En particular

$$H_1H_2H_3$$

$$H_1H_2H_4$$

$$H_1H_2H_5$$

$$H_1H_3H_4$$

$$H_1H_3H_5$$

$$H_1H_4H_5$$

$$H_2H_3H_4$$

$$H_2H_3H_5$$

$$H_2H_4H_5$$

$$H_3H_4H_5$$

Las respectivas probabilidades de estos son

$$P(H_1H_2H_3)=0.38\cdot0.18\cdot0.71\cdot0.34\cdot0.71$$

$$P(H_1H_2H_4)=0.38\cdot0.18\cdot0.29\cdot0.66\cdot0.71$$

$$P(H_1H_2H_5)=0.38\cdot0.18\cdot0.29\cdot0.34\cdot0.29$$

$$P(H_1H_3H_4)=0.38\cdot0.82\cdot0.71\cdot0.66\cdot0.71$$

$$P(H_1H_3H_5)=0.38\cdot0.82\cdot0.71\cdot0.34\cdot0.29$$

$$P(H_1H_4H_5)=0.38\cdot0.82\cdot0.29\cdot0.66\cdot0.29$$

$$P(H_2H_3H_4)=0.62\cdot0.18\cdot0.71\cdot0.66\cdot0.71$$

$$P(H_2H_3H_5)=0.62\cdot0.18\cdot0.71\cdot0.34\cdot0.29$$

$$P(H_2H_4H_5)=0.62\cdot0.18\cdot0.29\cdot0.66\cdot0.29$$

$$P(H_3H_4H_5)=0.62\cdot0.82\cdot0.71\cdot0.66\cdot0.29$$

Sumando esto, estamos

$$P(X=3)\approx 0.286$$

Del mismo modo, para la búsqueda de $P(X=4)$, ${5 \choose 4}=5$ formas de seleccionar los cuatro éxitos y para la búsqueda de $P(X=5)$, ${5 \choose 5}=1$ formas de seleccionar los cinco éxitos.

Estos cálculos no son muy divertido así que tal vez un programa de ordenador puede ser implementado.

7voto

user326210 Puntos 26

Puedo obtener aproximadamente 0.3841, de acuerdo a esta secuencia de comandos de Python que realiza la necesaria evaluación de los casos:

def all_outcomes(num_coins) :
 volver [[(m / 2**k) % 2 for k in range(num_coins)[::-1]] para m en el rango de(2**num_coins)]

def at_least_three_heads(coll) :
 # asumir la lista de 0 (colas) y 1 (cabezas)
 devolución de la suma(coll) >= 3


def joint_probability(resultado, monedas) :
 ret = 1
 para (is_heads, p) en el zip(resultado, monedas) :
 ret *= (p, si is_heads los demás 1-p)
 impresión de resultado, ret
 return ret

def compute_probability(monedas, success_fn) :
 resultados = all_outcomes(len(monedas))
 devolución de la suma([joint_probability(resultado, monedas) para los resultados en resultados en caso de success_fn(resultado)])


imprimir compute_probability([0.38, 0.18, 0.71, 0.66, 0.29], at_least_three_heads)

Este número tiene sentido, porque la mayoría de sus monedas vienen colas mayor parte del tiempo. Para la comparación, un sorteo de cinco monedas justas se tienen tres o más cabezas en la mitad de todos los casos—hay tres o más cabezas, o tres o más colas. De modo que la probabilidad de que cinco monedas justas es de 0,5.

4voto

NL628 Puntos 136

Así, el método más fácil y más claro supongo que sería el trabajo de casos. Complementario a contar daría el mismo número de casos.

Hallar la probabilidad de cada uno de los siguientes:

Prueba (1, 2, 3) los jefes y (4, 5) de las colas, o (1, 2, 4) los jefes y (3, 5) las colas, etc.

Luego de hacer (1, 2, 3, 4) los jefes y (5) las colas, etc.

A continuación, hacer (1, 2, 3, 4, 5) las cabezas.

Luego sume las probabilidades de todo. Para hacerlo más fácil, supongo que se puede escribir un sencillo programa o código, pero este problema es bastante duro como los números que dio son bastante aleatorios.

4voto

pluma Puntos 119

El uso de un equipo puede ser la mejor apuesta para este tipo de problema. Una biblioteca que guarda la pista de combinaciones, como la de Python 3 de la biblioteca de trotter (pip3 install trotter, enchufe descarado :), puede mantener las cosas cuerdos:

import trotter as tr

ps = [0.38, 0.18, 0.71, 0.66, 0.29]

# Combinations of indices.
combos_sets = [tr.Combinations(i, range(5)) for i in [3, 4, 5]]

prob_sum = 0


def prod(xs):
    p = 1
    for x in xs:
        p *= x
    return p


print("Coins heads: probability of outcome")
for combo_set in combos_sets:
    for combo in combo_set:
        p = prod([ps[i] if i in combo else 1 - ps[i] for i in range(5)])
        print("{}: {}".format(combo, p))
        prob_sum += p

print("Total probability:", prob_sum)

Esto le da una probabilidad de 0.3841282976...

2voto

Stephan Kolassa Puntos 400

La distribución de los jefes es una Poisson distribución binomial. No hay ninguna forma cerrada para la probabilidad, pero puede el código a mano algo como lo propuesto por la otra ms responden. Como alternativa, busque a las bibliotecas estándar de esta distribución.

Casi exactamente la misma pregunta que se hizo ayer en CrossValidated: función de masa de Probabilidad con variables de probabilidad? Hay bastantes hilos en la de Poisson, binomial en la CV, por ejemplo, el Éxito de ensayos de Bernoulli con diferentes probabilidades.

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