ProfDaviRocha
O objetivo é mostrar como calcular a probabilidade binomial usando python. Não pretendo aqui me aprofundar na teoria nem ser tão rigoroso. A ideia é mostrar de forma prática como usar o python nos cálculos.
EXPERIÊNCIAS BINOMIAIS
Muitas vezes contamos o número de vezes que ocorre o evento de interesse (ou sucesso), em uma série de tentativas ou de experimentos.
Por exemplo:
Um jogador conta quantas caras saem quando lança 10 moedas.
Um pesquisador conta quantos, dos 500 chefes de família que entrevistou, eram mulheres.
Um médico conta quantos, dos 100 pacientes que tratou com uma nova droga, ficaram curados.
Um biomédico conta quantos, dos 32 hemogramas que fez no dia, indicaram doença contagiosa.
Uma enfermeira conta quantos, dos nascidos vivos durante determinado ano em uma maternidade, tinham doença ou defeito sério.
Os experimentos binomiais são experimentos aleatórios como os citados acima, ou seja,consistem em um número fixo de tentativas repetidas, no entanto, essas tentativas precisam ser independentes, no sentido de que o resultado de uma tentativa não tem efeito sobre o resultado de outra tentativa. Além disso, em cada uma dessas tentativas há um resultado que é de interesse para nós (chamamos esse resultado de “sucesso”), e em cada uma das tentativas a probabilidade de que ocorra um “sucesso” é o mesmo em cada uma das tentativas.
Resumidamente,os requisitos para um experimento aleatório ser um experimento binomial são:
um número fixo (n) de tentativas
cada tentativa deve ser independente das outras
cada tentativa tem apenas dois resultados possíveis, chamados de “sucesso” (o resultado de interesse) e “fracasso”
há uma probabilidade constante (p) de sucesso para cada tentativa, cujo complemento é a probabilidade (1 - p) de fracasso, muitas vezes denotada como q = (1 - p).
Para se calcular a probabilidade de x “sucessos” usamos a seguinte fórmula::
\[ P(X=x)= \frac{n!}{x!(n-x)!} \times p^x \times q^{(n-x)} \]
Exemplo usando a fórmula:
Se eu jogar uma moeda 5 vezes, qual é a probabilidade de resultar em cara 3 vezes?
Solução: Observe que X é uma variável binomial pois cada realização do evento resulta em duas possibilidades: sair cara ou coroa; cada lançamento da moeda é independente do lançamento anterior; e sair cara tem a mesma probabilidade 0.5 para todos lançamentos.
Agora basta identificar os parâmetros na fórmula: No caso temos
n= 5 - número de tentativas
p= 0.5 - probabilidade de resultar cara
x= 3 - contagem dos sucessos
Substituindo na fórmula:
\[ P(X=3)= \frac{5!}{3!(5-3)!} \times 0.5^3 \times 0.5^{(5-3)} \]
Usando uma calculadora ou calculando manualmente chegamos que a probabildade de resultar cara 3 vezes é 0.3125 ou 31.25%.
Precisamos importar o pacote “binom”
from scipy.stats import binom
Usaremos a função “binom.pmf”
A função completa com os parametros é: binom.pmf(k, *args, **kwds)
os três argumentos são respectivamente:
-numero de sucessos desejado, é o “x” na fórmula;
-numero de realizações do experimento, ou seja, o “n” da fórmula
-probabilidade de sucesso em uma tentativa, o “p” na fórmula.
Usando o mesmo exemplo das moedas acima calculariamos assim no Python:
binom.pmf(3,5,0.5) #parametro1: x-sucesso=3 vezes, parametro2: n-realizacoes do experimento=3 vezes,
#parametro3: p-prob de um sucesso=0.5
0.3125
Outro exemplo:
Suponha que foi constatado que a probabilidade de ter sangue tipo A é 0,4. Escolha 4 pessoas aleatoriamente e seja X o número com o tipo sanguíneo A.
Faça a distribuição com todas as probabilidades de x=0,1,2,3 ou 4
Faça um gráfico da distribuição do exercício 1
Calcule a probabilidade de exatamente duas pessoas terem sangue do tipo A.
Calcule a probabilidade de no máximo 3 pessoas terem sangue do tipo A.
Solução de 1:
n = 4
p = 0.4 #probabilidade de um experimento resultar em sucesso
x = range(0,n+1) # valores de x =0,1,2,3 ou 4
p_x = binom.pmf(x,n,p) #distribuição dos resultados
p_x
array([0.1296, 0.3456, 0.3456, 0.1536, 0.0256])
Solução de 2:
#Import matplotlib
import matplotlib.pyplot as plt
plt.xlabel('x')
plt.ylabel('p_x')
for a,b in zip(x, p_x):
plt.text(a-0.25, b-0.02, str(round(b,4)), color='white')
plt.title('Distribuição Binomial - Sangue Tipo A')
plt.bar(x,p_x,color = (0.3,0.1,0.4,0.6))
Solução de 3: Basta observar que p_x é um array e que cada índice desse array resulta em uma probabilidade associada da seguinte forma:
p_x[0] - corresponde a P(X=0)
p_x[1] - corresponde a P(X=1)
p_x[2]- corresponde a P(X=2)
E assim por diante.
Logo a Solução será:
p_x[2]
0.3456000000000001
Solução 5:
Basta somar as probabilidades de 0 até 3, que são os arrays de p_x com índices 0,1,2,3:
p_x[0]+ p_x[1]+ p_x[2]+ p_x[3]
0.9744000000000003
Poderia ser usado ainda a função cumulativa “binom.cdf”
binom.cdf(3,4,0.4) # onde o primeiro parametro é o limite que se está acumulando, o segundo é o número de tentativas e o terceiro é a probabilidade de um sucesso
Espero que tenha aprendido um pouco mais sobre a distribuição binomial e como calcular usando o Python.
Keep calm and analysing data!