Menu
CoddyTech

Pode ser acaso?

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

Cinco leitores de uma fonte sem serifa superaram cinco leitores de uma fonte com serifa por 6,6 segundos. Se a fonte não tivesse mudado nada, qualquer tempo poderia estar em qualquer grupo. Embaralhe para representar isso:

Dez tempos de leitura como células, cinco com serifa em azul e cinco sem serifa em laranja. Uma seta rotulada rng.permutation(pooled) leva aos mesmos dez valores em uma ordem misturada, divididos em um grupo falso com serifa com média de 48.4 e um grupo falso sem serifa com média de 49.8: uma diferença de +1.4 segundos ocorrida por acaso

rng.permutation(a) retorna uma cópia embaralhada. Repita 1000 vezes e mantenha cada diferença simulada:

serif = np.array([52, 47, 58, 50, 55])
sans = np.array([45, 49, 41, 50, 44])
pooled = np.concatenate([serif, sans])
rng = np.random.default_rng(4)
diffs = []
for i in range(1000):
    shuffled = rng.permutation(pooled)
    diffs.append(shuffled[5:].mean() - shuffled[:5].mean())

Um histograma das 1000 diferenças embaralhadas, de -7.8 a 7.8 segundos e concentradas em torno de 0, com uma linha vermelha indicando a diferença real, -6.6, perto da borda esquerda

As diferenças aleatórias se acumulam em torno de 0; a diferença real fica perto da extremidade. Este é um teste de permutação.

Antes de confiar que um modelo supera outro, verifique se a aleatorização raramente produz uma diferença tão grande.

challenge icon

Desafio

Médio

Os cães aprenderam a sentar de duas maneiras: clicker e treats armazenam as sessões de cada cão. O código inicial cria rng e shuffles.

  1. Calcule a diferença real: média de treats menos média de clicker.
  2. Junte clicker e depois treats; embaralhe shuffles vezes, divida em len(clicker), mantenha cada diferença simulada na mesma ordem; não faça outras extrações.
  3. Imprima a diferença real, a primeira diferença simulada, a menor e a maior, com 2 casas decimais.

Para outros cães:

Real difference: 3.0
First shuffle: -1.0
Smallest shuffled: -3.33
Largest shuffled: 3.67

Experimente você mesmo

import numpy as np

# Sessões de treinamento de que cada cão precisou para aprender "sit"
clicker = np.array([9, 12, 8, 11, 10, 7, 13])
treats = np.array([14, 11, 15, 12, 16, 13])
# Não altere as linhas abaixo
rng = np.random.default_rng(12)
shuffles = 1000

# 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