La prueba t
Parte de la sección Estadística para ML del Journey de Machine Learning de Coddy. Lección 45 de 64.
Antes de las computadoras, la estadística tenía un atajo: la prueba t. Una fórmula convierte las medias, las dispersiones y los tamaños de los grupos en un valor p de una sola vez:
from scipy import stats
result = stats.ttest_ind(sans, serif)
print(np.round(result.pvalue, 3))
print(np.round(result.statistic, 2))Para el estudio de fuentes, esto imprime 0.031 y -2.61. Las 1000 permutaciones dieron 0.039: cercano, como de costumbre.
El valor t es la diferencia en errores estándar; su signo solo indica qué grupo apareció primero. La fórmula supone que los datos tienen forma de campana, así que, con grupos pequeños y sesgados, confía en las permutaciones.
También comprueba si un modelo realmente supera a otro.
Desafío
IntermedioUn fabricante de pintura cronometró el secado de tres acabados. El código inicial coloca los minutos de cada acabado en times, enumera tres pairs, define permutation_p(a, b) y lee level.
- Imprime el valor p de la prueba t para mate frente a satinado junto al de las permutaciones.
- Prueba cada par, con el primer acabado primero, e imprime el que tenga el valor p más pequeño.
- Cuenta los pares por debajo de
level.
Redondea los valores p a 3 decimales. Otro fabricante, nivel 0.05:
matte vs satin: t-test 0.012, simulation 0.023
Clearest difference: satin vs gloss (p = 0.0)
Pairs that differ: 3 of 3Pruébalo tú mismo
import numpy as np
import pandas as pd
from scipy import stats
# La prueba de permutación de las dos lecciones anteriores: devuelve su valor p para a frente a b
def permutation_p(a, b, shuffles=1000, seed=0):
rng = np.random.default_rng(seed)
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())
real = b.mean() - a.mean()
return (np.abs(np.array(diffs)) >= np.abs(real)).mean()
paint = pd.read_csv("paint.csv")
times = {
"matte": paint[paint["finish"] == "matte"]["minutes"],
"satin": paint[paint["finish"] == "satin"]["minutes"],
"gloss": paint[paint["finish"] == "gloss"]["minutes"],
}
pairs = [("matte", "satin"), ("matte", "gloss"), ("satin", "gloss")]
level = float(input())
# Escribe tu código a continuación
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Estadística para ML
1Centro y dispersión
Media y medianaPercentiles y cuartilesVarianza y desviación estándar¿Muestra o población?El valor más frecuenteRepaso: tiempos de entrega4Muestras y poblaciones
Población y muestraLas medias muestrales varíanLa distribución muestralMuestras más grandes, menos ruidoRepaso: Encuestar a un pueblo7Líneas de tendencia
ResiduosAjuste por mínimos cuadradosTrazar el ajustePredecir con una línea¿Qué tan bueno es el ajuste?Repaso: horas de práctica10Codificación de categorías
Categorías como númerosCodificación one-hotAgrupación de números en intervalosRepaso: anuncios de autos2Distribuciones
Histogramas de densidadFormas de los datosCurva normalRegla del 68-95-99,7Puntuaciones zRepaso: duración de la batería5Valores atípicos
Diagramas de cajaLa regla del RICLa regla del valor ZTratamiento de valores atípicosRepaso: fallos de los sensores8Comparación de grupos
Diagramas de caja por grupoDiferencia de medias¿Podría ser azar?Valores pLa prueba tRepaso: prueba A/B3Probabilidad mediante simulación
La probabilidad como frecuenciaLa ley de los grandes númerosSuma de dadosValor esperadoProbabilidad condicionalRepaso: probabilidades del puesto de dados6Relaciones
Lectura de diagramas de dispersiónCorrelaciónMatriz de correlaciónMapas de calor de correlaciónCorrelación no es causalidadRepaso: helado y sol9Escalado de características
Por qué escalar las característicasEscalado mín-máxEstandarizaciónStandardScalerRepaso: compañeros de escaladaPractica por tu cuenta: Compilador de Python online