Menu
CoddyTech

Muestras más grandes, menos ruido

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

Las muestras más grandes dan mejores estimaciones, pero ¿cuánto mejores? Aquí tienes 1000 medias de 25 cestas de la compra y 1000 de 100 cestas:

Dos curvas de campana de medias muestrales de artículos por cesta, ambas centradas cerca de 30. Las medias de 25 cestas en gris se extienden aproximadamente de 20 a 40; las medias de 100 cestas en azul forman una campana con la mitad de anchura

sample_means mide cada dispersión. El error estándar, std / np.sqrt(n), la predice sin simulación:

for n in [25, 100]:
    spread = sample_means(baskets, n, 1000).std()
    print(n, np.round(spread, 2), np.round(baskets.std() / np.sqrt(n), 2))

Esto imprime:

25 3.43 3.45
100 1.72 1.72

Cuatro veces más datos, la mitad de ruido: así funciona la raíz cuadrada. Un modelo probado con 400 ejemplos tiene una puntuación dos veces más precisa que con 100.

challenge icon

Desafío

Intermedio

bags contiene los pesos, en gramos, de las 5000 bolsas de harina de un molino. El control de calidad pesa una muestra cada hora; el programa lee el error estándar que acepta.

  1. Encuentra el menor n cuyo error estándar, bags.std() / np.sqrt(n), sea como máximo ese valor: empieza en 1 y suma 1 mientras sea demasiado grande.
  2. Compruébalo: calcula la desviación estándar de 300 medias muestrales obtenidas de sample_means.
  3. Imprime los resultados como se muestra abajo, con 2 decimales.

Para otro molino y 2.5:

Bags to weigh: 24
Standard error: 2.46 g
Simulated spread: 2.37 g

Pruébalo tú mismo

import numpy as np

target = float(input())

# No cambies las líneas siguientes: el peso en gramos de cada bolsa de harina
rng = np.random.default_rng(22)
bags = np.round(rng.normal(500, 8, size=5000), 1)


# Tu función de Sample Means Vary: las medias de count muestras
def sample_means(data, size, count):
    means = []
    for i in range(count):
        sample = rng.choice(data, size=size, replace=False)
        means.append(sample.mean())
    return np.array(means)


# 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