Menu
CoddyTech

A Lei dos Grandes Números

Parte da seção Estatística para ML do Journey de Machine Learning da Coddy. Lição 14 de 64.

Jogue uma moeda 10 vezes, e sair cara em 8 delas não é nenhuma surpresa. Continue jogando, e a proporção de caras vai se aproximando lentamente de 0,5:

Um gráfico de linhas da proporção de caras em 300 lançamentos: ela oscila entre 0,3 e 1 nos primeiros lançamentos, depois acompanha de perto uma linha vermelha tracejada na probabilidade de 0,5

Cada ponto precisa da proporção até aquele momento. np.cumsum fornece o total acumulado; divida-o pelo número de lançamentos até aquele momento:

heads = np.array([True, False, True, True])
print(np.cumsum(heads))
print(np.round(np.cumsum(heads) / np.arange(1, 5), 2))

Isso imprime:

[1 1 2 3]
[1.   0.5  0.67 0.75]

ax.axhline(y) desenha a linha de referência na horizontal, atravessando o gráfico:

ax.plot(np.arange(1, 301), share)
ax.axhline(0.5, color="red", linestyle="--")

Essa é a lei dos grandes números: mais tentativas, mais perto da probabilidade. Um modelo com bom desempenho em 20 amostras pode estar com sorte; em 2000, dificilmente.

challenge icon

Desafio

Médio

Uma marca de cereais esconde um brinquedo em 20% das caixas. O programa lê quantas caixas são abertas; o código inicial preenche toys (True para indicar um brinquedo) e rotula o gráfico.

  1. Calcule a proporção acumulada de brinquedos.
  2. Imprima esse valor após 10 caixas e após todas, com 3 casas decimais.
  3. Faça o gráfico em relação aos números das caixas, começando em 1, adicione uma linha pontilhada preta (":") em 0.2 e exiba-o.

Para outras 80 caixas:

After 10 boxes: 0.1
After 80 boxes: 0.212

e desenha este gráfico. Em seguida, Coddy descreve o seu.

Um gráfico intitulado Brinquedos em caixas de cereais: a proporção acumulada ao longo de 80 caixas fica em 0 por 8 caixas, oscila e depois se estabiliza perto de uma linha pontilhada preta em 0.2

Experimente você mesmo

import numpy as np
import matplotlib.pyplot as plt

boxes = int(input())

# Não altere as linhas abaixo
rng = np.random.default_rng(25)
toys = rng.random(boxes) < 0.2

fig, ax = plt.subplots()
ax.set_title("Toys in Cereal Boxes")
ax.set_xlabel("Boxes opened")
ax.set_ylabel("Share with a toy")

# Escreva seu código abaixo
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Estatística para ML

Pratique por conta própria: Compilador de Python online