No artigo de hoje vou falar um pouco sobre como não é necessário conhecer a distribuição de uma variável aleatória para dizer algo sobre um fenômeno probabilístico. Vamos lá?
Certo dia tive uma ideia meio doida enquanto comia a famosa batata do Messi, a batata Lay’s. Na época eu estava inscrito na disciplina de probabilidade 1 e só sabia falar disso o tempo inteiro, minha família e amigos provavelmente não aguentavam mais. Pois bem, o que me chamou a atenção ao abrir aquele pacote de batatinhas foi perceber a volta dos tazos(sim!). Se você foi criança entre os anos 90 e anos 2000, com certeza sabe a febre que foram os tazos e como se fazia de tudo para completar uma coleção. Para o - não tão glorioso - retorno dos tazos, a Elma Chips escolheu como tema as bolas usadas em finais de Champions League, a maior competição de futebol da Europa.
Tá, mas o que tem de interessante nisso?
Digamos que você seja muito fã de futebol e quer juntar os tazos. A economia do país não está nenhuma maravilha, então será que vale a pena gastar seu dinheiro suado só para completar essa coleção? Quantos sacos de batatinhas alguém precisa comprar para ter todos os tazos distintos em mãos?
Não é possível obter uma resposta exata para a pergunta, já que os tazos são sortidos. Contudo, podemos pensar na questão de forma probabilística.
Nós queremos o número de sacos de batatas comprados até se obter todos os tazos distintos, sabendo que são 20 tazos diferentes(20 finais de Champions League). E é assim que construiremos a variável aleatória de interesse. Porém, aparentemente essa variável aleatória não é definida por nenhuma das principais distribuições conhecidas.
Ao final dessa reflexão, temos as seguintes informações:
- A variável aleatória: X = “número de tentativas necessárias até conseguir completar a coleção”.
- Existem 20 tazos distintos.
- É difícil encontrar uma expressão analítica para a distribuição de X(imagina fazer operações com ela).
Se não dá para obter diretamente f(x), então ferrou, né?
Não! Calma, ainda há esperança. Literamente há esperança, podemos obter \(E[X]\) por simulação e a partir disso saber mais sobre X. Usaremos o Python para aleatorizar o experimento, repeti-lo 100 mil vezes e por fim calcular o número médio de tentativas para completar a coleção de tazos.
Usei dois jeitos para fazer a simulação, da forma mais preguiçosa possível e depois com o pacote Numpy.
Jeito preguiçoso
import random as rd
import statistics as st
def colecionarTazos(experimentos, colecionaveis):
obtidos = []
tentativas = 0
while(len(obtidos) < colecionaveis):
novo_tazo = rd.randint(1, colecionaveis)
if novo_tazo not in obtidos:
obtidos.append(novo_tazo)
tentativas += 1
experimentos.append(tentativas)
experimentos = []
colecionaveis = 20
rep_experimento = 100000
for i in range(1, rep_experimento):
colecionarTazos(experimentos, colecionaveis)
print(st.mean(experimentos))
Resultado no console
72.06983069830699
[Finished in 13.8s]
Usando o numpy
import random as rd
import numpy as np
experimentos = np.array([])
rep_experimento = 100000
for i in range(1, rep_experimento):
obtidos = np.array([])
tentativas = 0
while(len(obtidos) < 20):
novo_tazo = rd.randint(1, 20)
if novo_tazo not in obtidos:
obtidos = np.append(obtidos, novo_tazo)
tentativas += 1
experimentos = np.append(experimentos, tentativas)
print(np.mean(experimentos))
Resultado no console
72.03112031120311
[Finished in 54.2s]
Observações
Estranhamente o numpy foi absurdamente mais lento, não sei se foi um problema da minha máquina ou da forma em que o código foi escrito. Se alguém souber o motivo e quiser entrar em contato, eu ficaria muito feliz!
EDIT
Fiz uma pergunta no stackoverflow e me mostraram como não dá para pensar em um numpy array como uma lista, é preciso adaptar o código de outra forma.
Aqui estão as respostas completas.
Esquecendo um pouco o tempo de execução, perceba que nos dois casos a média parece estar convergindo para 72. Logo, é razoável supor que \(E[X] = 72\). Isso quer dizer que você precisa em média comprar 72 sacos de batatinhas para completar a coleção de tazos. Uau! isso por si só já é bem interessante, mas o que mais podemos dizer de X?
Desigualdade de Markov
Existem algumas desigualdades importantes na Teoria das Probabilidades que podem ser usadas para encontrar limites superiores e inferiores para a probabilidade de um evento ocorrer. Uma delas é a desigualdade de Markov, que é dada por:
\[P(X \geq k) \leq \frac{E[X]}{k}\]Ou seja, no pior dos casos possíveis, qual a probabilidade da quantidade de sacos comprados ultrapassar certo valor? Digamos que cada um custe R$6, e você quer gastar no máximo R$ 600, ou seja, 100 sacos. Usando a desigualdade de markov:
\[P(X \geq 100) \leq \frac{72}{100} = 0.72\]Na pior das hipóteses, você vai ter que pagar mais que 600 reais para completar sua coleção com probabilidade 0.72. Porém, essa “pior hipótese” não é muito próxima do que realmente pode acontecer, nesses casos também é bom olhar para o desvio padrão ou até mesmo outras desigualdades. Para não estender muito o post, fica para outra oportunidade.
Espero que tenham gostado da publicação, até a próxima!