Probabilidad condicional en Python


Autor: Eugenia Bahit

Sucesos dependientes

Se refiere a la probabilidad de que dos sucesos ocurran simultáneamente siendo que el segundo suceso depende de la ocurrencia del primero.

La probabilidad de que ocurra B si ocurre A, se denota por P(B|A) y se lee como “la probabilidad de B dado A”, tal que:

P(B|A)=\frac{P(A\cap B)}{P(A)}

Donde P(A\cap B) es la probabilidad de la intersección de los sucesos de A y B — definida como: P(A\cap B)\equiv P(A)P(B|A) —, tal que la intersección es un nuevo suceso compuesto por sucesos simples. En el siguiente ejemplo, equivaldría a \left\{ 1,3\right\} (porque 1 y 3 están tanto en A como en B).

Ejemplo: ¿qué probabilidad existe de que al lanzar un dado resulte un número impar menor que 4?

El lanzamiento del dado es un suceso en sí mismo. Se desea averiguar la probabilidad de B=\left\{ 1,2,3\right\} (número menor que 4) dado que A=\{1,3,5\} (número impar) ocurriese en el espacio muestral E=\{1,2,3,4,5,6\}.

espacio_muestral = [1, 2, 3, 4, 5, 6]
a = [i for i in espacio_muestral if i % 2 is not 0]
b = [i for i in espacio_muestral if i < 4]

Para calcular la probabilidad de una intersección, primero se obtiene la intersección:

A\cap B=\left\{ 1,3\right\}

intersec = [i for i in a if i in b]

Y luego, se calcula la probabilidad del nuevo suceso compuesto \left\{ 1,3\right\}:

P(A\cap B)=P(1)+P(3)=\frac{1}{6}+\frac{1}{6}=\frac{2}{6}=\frac{1}{3}

o, lo que es igual:

P(A\cap B)=\frac{h}{n}=\frac{2}{6}=\frac{1}{3}

Es necesario además, obtener la probabilidad de A , teniendo en cuenta que es también un suceso compuesto:

P(A)=\frac{h}{n}=\frac{3}{6}=\frac{1}{2}

Finalmente, se obtiene que:

\begin{array}{l} P(B|A)=\frac{P(A\cap B)}{P(A)}\\ P(B|A)=\frac{1/3}{1/2}\\ P(B|A)=\frac{2}{3}=0.\bar{6} \end{array}

e = espacio_muestral = [1, 2, 3, 4, 5, 6]

a = [i for i in e if i % 2 is not 0]  # números impares
b = [i for i in e if i < 4]           # números menores que 4
intersec = [i for i in a if i in b]   # intersección de A y B

n = len(e)                 # total de la muestra
ha = len(a)                # total de sucesos simples en A
hintersec = len(intersec)  # total de sucesos simples en la intersección

# probabilidad de la intersección
probabilidad_intersec = float(hintersec) / n

# probabilidad de 'a'
probabilidad_a = float(ha) / n

# probabilidad condicional
probabilidad_b_dado_a = probabilidad_intersec / probabilidad_a


Teoría de conjuntos en Python

Al obtener la intersección de dos sucesos compuestos se ha empleado un método manual al decir: devolver 'i' por cada 'i' en la lista 'a' si está en la lista 'b'.

No obstante, dado que cada suceso compuesto es un conjunto y que Python provee un tipo de datos llamado set (conjunto), es posible obtener la intersección manipulando los sucesos compuestos como conjuntos de Python. Con set se puede convertir cualquier iterable a conjunto y realizar operaciones de conjuntos como unión e intersección cuando sea necesario.

intersec = list(set(a).intersection(b))

Aquí el conjunto obtenido se convierte en lista a fin a fin de guardar coherencia con el resto del código y que el elemento resultante soporte las operaciones y tratamiento habituales de una lista. Ante la duda de si corresponde usar listas o conjuntos, se debe aplicar el principio de simplicidad e implementar la solución más simple.


Sucesos independientes

A diferencia del caso anterior, aquí la probabilidad de que ocurra B no está afecta por la ocurrencia de A . Por ejemplo, la probabilidad de lanzar un dado y obtener un número par (suceso B) no está afectada por el hecho de que en un lanzamiento previo se obtuviese un número impar (suceso A). La probabilidad de B es independiente de A y está dada por el producto de la probabilidad de ambos sucesos:

P(A\cap B)=P(A)P(B)

Aquí la intersección es la probabilidad de que confluyan ambos sucesos.

Calculada la probabilidad de ambos sucesos independientes, se multiplican obteniendo:

a. Espacio muestral (para ambos sucesos):

E=\{1,2,3,4,5,6\}

b. Probabilidad de A:

\begin{array}{l} A=\{1,3,5\}\\ P(A)=\frac{h}{n}=\frac{3}{6}=\frac{1}{2} \end{array}

c. Probabilidad de B:

\begin{array}{l} B=\{2,4,6\}\\ P(B)=\frac{h}{n}=\frac{3}{6}=\frac{1}{2} \end{array}

d. Probabilidad de la intersección:

\begin{array}{l} P(A\cap B)=P(A)P(B)\\ P(A\cap B)=\frac{1}{2}\cdot\frac{1}{2}\\ P(A\cap B)=\frac{1}{4} \end{array}

e = espacio_muestral = [1, 2, 3, 4, 5, 6]
n = len(e)  # total de la muestra

# probabilidad de A
a = [i for i in e if i % 2 is not 0]
pa = len(a) / float(n)

# probabilidad de B
b = [i for i in e if i % 2 is 0]
pb = len(b) / float(n)

# probabilidad de la intersección de sucesos
pi = pa * pb


Funciones

# Probabilidad condicional: sucesos dependientes
def pscd(e, a, b):
    i = list(set(a).intersection(b))
    pi = pscme(e, i) 
    pa = pscme(e, a)
    return pi / pa


# Probabilidad condicional: sucesos independientes
def psci(e, a, b):
    pa = pscme(e, a)
    pb = pscme(e, b)
    return pa * pb


Bibliografía complementaria

[0] Probabilidad y Estadística, Murray Spiegel. McGraw-Hill, México 1988. ISBN: 968-451-102-7

© EUGENIA BAHIT 2015, 2016, 2017 - CC-BY 4.0
La copia y distribución de este documento se encuentra permitida bajo los términos de la licencia Bajo licencia Creative Commons Atribución 4.0