Menu
CoddyTech

¿Podría ser azar?

Parte de la sección Estadística para ML del Journey de Machine Learning de Coddy. Lección 43 de 64.

Cinco lectores de una fuente sans vencieron a cinco lectores de una fuente serif por 6.6 segundos. Si la fuente no cambiara nada, cualquier tiempo podría quedar en cualquiera de los dos grupos. Baraja para representar eso:

Diez tiempos de lectura como celdas, cinco serif en azul y cinco sans en naranja. Una flecha etiquetada rng.permutation(pooled) conduce a los mismos diez valores en un orden mezclado, divididos en un grupo serif ficticio con media de 48.4 y un grupo sans ficticio con media de 49.8: una diferencia de +1.4 segundos producida por azar

rng.permutation(a) devuelve una copia mezclada. Repítelo 1000 veces y conserva cada diferencia 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())

Un histograma de las 1000 diferencias mezcladas, de -7.8 a 7.8 segundos y agrupadas alrededor de 0, con una línea roja que representa la diferencia real, -6.6, cerca del borde izquierdo

Las diferencias aleatorias se acumulan alrededor de 0; la real se sitúa cerca del extremo. Esta es una prueba de permutación.

Antes de confiar en que un modelo supera a otro, comprueba que al barajar rara vez se produce una diferencia tan grande.

challenge icon

Desafío

Intermedio

Los perros aprendieron a sentarse de dos maneras: clicker y treats contienen las sesiones de cada perro. El código inicial crea rng y shuffles.

  1. Calcula la diferencia real: media de treats menos media de clicker.
  2. Agrupa clicker y después treats; baraja shuffles veces, divide en len(clicker), conserva cada diferencia simulada en el mismo orden; no hagas ninguna otra extracción.
  3. Imprime la diferencia real, la primera diferencia simulada, la menor y la mayor, con 2 decimales.

Para otros perros:

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

Pruébalo tú mismo

import numpy as np

# Sesiones de entrenamiento que necesitó cada perro para aprender "sit"
clicker = np.array([9, 12, 8, 11, 10, 7, 13])
treats = np.array([14, 11, 15, 12, 16, 13])
# No cambies las líneas de abajo
rng = np.random.default_rng(12)
shuffles = 1000

# Escribe tu código a continuación
quiz iconPonte a prueba

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

Practica por tu cuenta: Compilador de Python online