Valores-p
Parte da seção Estatística para ML do Journey de Machine Learning da Coddy. Lição 44 de 64.
O valor-p transforma os embaralhamentos em um único número: a proporção de diferenças falsas pelo menos tão grandes quanto a real, em qualquer direção.
No código, para o estudo de fontes:
real = sans.mean() - serif.mean()
rng = np.random.default_rng(4)
diffs = shuffled_diffs(serif, sans, 1000, rng) # o loop da aula anterior
p_value = (np.abs(diffs) >= np.abs(real)).mean()
print(p_value)Isso imprime 0.039. np.abs considera uma diferença de -7 tão grande quanto uma de 7: a questão é saber se as fontes diferem de alguma forma.
Abaixo do nível de significância, geralmente 0.05, o acaso é uma explicação pouco provável para o ganho de uma fonte ou de um modelo. Isso não é uma prova: ainda assim, isso aconteceu em 4 embaralhamentos de 100.
Desafio
MédioUma fazenda rega os morangos de manhã ou à noite. O código inicial divide strawberries.csv em morning e evening, lista columns, lê level e define shuffled_diffs.
- Para cada coluna, calcule a diferença real (média da noite menos média da manhã), as diferenças embaralhadas (manhã primeiro) e o valor-p.
- Imprima uma linha por coluna como abaixo (diferença com 2 casas decimais, p com 3):
differsquando p for menor quelevel. - Conte quantas apresentam diferença.
Outra fazenda, nível 0.05:
berries: difference -5.4, p = 0.009, differs
weight_g: difference 0.2, p = 1.0, could be chance
sweetness_brix: difference 0.46, p = 0.022, differs
leaf_spots: difference 0.6, p = 0.397, could be chance
Columns that differ: 2 of 4Experimente você mesmo
import numpy as np
import pandas as pd
# Retorna as diferenças embaralhadas de um teste de permutação (o loop da lição 43): média simulada de b menos média simulada de a
def shuffled_diffs(a, b, shuffles, rng):
pooled = np.concatenate([a, b])
diffs = []
for i in range(shuffles):
shuffled = rng.permutation(pooled)
diffs.append(shuffled[len(a):].mean() - shuffled[:len(a)].mean())
return np.array(diffs)
beds = pd.read_csv("strawberries.csv")
morning = beds[beds["watering"] == "morning"]
evening = beds[beds["watering"] == "evening"]
columns = ["berries", "weight_g", "sweetness_brix", "leaf_spots"]
level = float(input())
# Não altere as linhas abaixo
rng = np.random.default_rng(21)
shuffles = 1000
# Escreva seu código abaixo
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
1Centro e dispersão
Média e medianaPercentis e quartisVariância e desvio padrãoAmostra ou população?O valor mais frequenteRevisão: tempos de entrega4Amostras e Populações
População e AmostraAs médias amostrais variamA distribuição amostralAmostras maiores, menos ruídoRevisão: pesquisa de opinião em uma cidade7Linhas de tendência
ResíduosAjuste por mínimos quadradosTraçando o ajusteFazendo previsões com uma linhaQuão bom é o ajuste?Revisão: horas de prática10Codificação de Categorias
Categorias como NúmerosCodificação One-HotAgrupamento de Números em FaixasRecapitulação: Anúncios de Carros2Distribuições
Histogramas de densidadeFormatos dos dadosA curva normalA regra 68-95-99,7Escores ZRecapitulando: duração da bateria5Valores atípicos
Diagramas de caixaA regra do IQRA regra do Z-scoreComo lidar com valores atípicosRevisão: falhas nos sensores8Comparando grupos
Gráficos de caixa por grupoDiferença entre médiasPode ser acaso?Valores-pO teste tRevisão: teste A/B11Explorando um conjunto de dados
Um primeiro olharTodos os atributos de uma vezAtributos em relação ao rótuloOs dois melhores atributosRevisão: dados de diabetes3Probabilidade por Simulação
Probabilidade como frequênciaA Lei dos Grandes NúmerosSomas de dadosValor esperadoProbabilidade condicionalRevisão: chances na barraca de dados6Relações
Lendo gráficos de dispersãoCorrelaçãoMatriz de correlaçãoMapas de calor de correlaçãoCorrelação não é causalidadeRevisão: sorvete e sol9Escalonamento de Recursos
Por que escalar os recursosEscalonamento Min-MaxPadronizaçãoStandardScalerRevisão: Parceiros de escaladaPratique por conta própria: Compilador de Python online