El teorema del límite central: por qué los datos desordenados del mundo real siguen funcionando
La gran mentira sobre los datos ‘normales’
Si alguna vez tomaste una clase introductoria de estadística, probablemente escuchaste que el mundo está lleno de distribuciones ‘Normales’ — esas curvas de campana simétricas. Luego empezaste a trabajar con datos reales. Ingresos familiares, tasas de clics, tiempos de espera en servidores. El mundo real es desordenado.
La mayoría de los datos del mundo real están ‘sesgados’. Colas largas, picos extraños, nada que ver con una campana. Los principiantes entran en pánico ante esto. Piensan: “¡Si mis datos no son Normales, no puedo usar pruebas t ni intervalos de confianza!”
Aquí está el secreto: el Teorema del Límite Central (TLC) no trata sobre tus datos crudos. Se trata de las muestras que extraes de ellos. Piénsalo como un ‘filtro mágico’ que convierte el caos en orden. Incluso cuando tus datos crudos parecen un desastre, los promedios formarán una curva de campana.
Ahora veamos algunos datos ‘feos’. Generaremos una distribución fuertemente sesgada hacia la derecha: la mayoría de los valores son pequeños, pero algunos son muy grandes.
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# Set a seed so you get the same results as me
np.random.seed(42)
# Generate 10,000 points of 'ugly', skewed data (Exponential distribution)
# Imagine this is the time (in minutes) users spend on a website
raw_data = np.random.exponential(scale=2, size=10000)
plt.figure(figsize=(10, 6))
sns.histplot(raw_data, kde=True, color='red')
plt.title("The Raw Data: Not Normal at All!")
plt.xlabel("Minutes on Site")
plt.ylabel("Number of Users")
plt.show()
print(f"Mean of raw data: {np.mean(raw_data):.2f}")
Lo que esto realmente significa: Mira ese gráfico rojo. No es una campana; es un tobogán. La mayoría de las personas se van en menos de 2 minutos, pero algunas se quedan por 10 o 15. Intenta ajustar una curva de campana estándar a esto y fracasarás.
El experimento de la ‘cadena de baldes’
Para entender por qué el TLC importa, debemos apartarnos de los datos crudos y pensar en el muestreo.
Imagina un recipiente gigante lleno de gomitas mezcladas. Algunas son picantes, algunas son dulces y otras simplemente son raras. Toma una gomita y obtendrás caos. No tienes idea de cómo será la siguiente. Pero, ¿qué pasaría si tomas un puñado de 30 gomitas y calculas la dulzura promedio de ese puñado?
Luego lo haces de nuevo. Y otra vez. Lo haces 1,000 veces. Cada vez, anotas el promedio de tu puñado.
Esta es la parte más difícil de comprender para la mayoría de las personas: la diferencia entre la población (todas las gomitas) y la distribución muestral (la lista de promedios que anotaste).
Ejecutemos este experimento del ‘puñado’ en Python. Tomaremos 1,000 muestras diferentes de nuestros feos datos rojos. Cada muestra tendrá 30 usuarios.
# We will store our 'handful averages' here
sample_means = []
# The 'Bucket Brigade': Repeat the sampling 1,000 times
for _ in range(1000):
# Take a random handful of 30 users
sample = np.random.choice(raw_data, size=30)
# Calculate the average of that handful
sample_means.append(np.mean(sample))
print(f"We now have {len(sample_means)} averages.")
print(f"First 5 averages: {[round(x, 2) for x in sample_means[:5]]}")
Observa cómo emerge la campana de Gauss
Tomamos datos que parecían un tobogán y los promediamos. Entonces, ¿qué sucede cuando graficamos esos 1,000 promedios?
plt.figure(figsize=(10, 6))
sns.histplot(sample_means, kde=True, color='blue')
plt.title("The Sampling Distribution: The Magic Bell Curve")
plt.xlabel("Average Minutes per Handful")
plt.ylabel("Frequency")
plt.show()
El tobogán ha desaparecido. En su lugar se encuentra una curva simétrica en forma de campana. Este es el Teorema del Límite Central en acción. Mientras tus muestras sean lo suficientemente grandes, la distribución de las medias será Normal—sin importar el aspecto que tuvieran los datos originales.
Esto es lo que significa para nosotros. Podemos usar matemáticas Normales—puntajes Z, pruebas T—para hacer predicciones sobre nuestros datos desordenados del sitio web, porque los promedios se comportan de manera predecible incluso cuando los individuos no.
El inconveniente: ¿Cuándo falla la magia?
¿Qué tan grande debe ser tu puñado?
La estadística tiene una “Regla de 30” muy común. Una vez que el tamaño de tu muestra (n) alcanza al menos 30, la magia suele funcionar. Si bajas mucho por debajo de eso, la forma desordenada de los datos originales aún se transparenta.
Tus puntos de datos también deben ser independientes. Si el tiempo de un usuario en el sitio afecta al de otro, el TCL se desmorona. Piensa en un hilo viral donde todos se amontonan a la vez.
Esto es lo que sucede cuando ajustamos el tamaño de la muestra. Compararemos una muestra minúscula (n=2) con una mediana (n=10) y una grande (n=100).
def plot_clt(n_size):
means = [np.mean(np.random.choice(raw_data, size=n_size)) for _ in range(1000)]
sns.histplot(means, kde=True, label=f"n={n_size}")
plt.figure(figsize=(12, 6))
plot_clt(2)
plot_clt(10)
plot_clt(100)
plt.title("How Sample Size Affects the Bell Curve")
plt.legend()
plt.show()
Observa los resultados:
- En n=2, la curva sigue siendo muy asimétrica (irregular e inclinada hacia la izquierda). La magia aún no ha sucedido.
- En n=10, empieza a parecer un montículo. Aunque está un poco desbalanceada.
- En n=100, obtienes una curva de campana afilada, delgada y perfecta. Las muestras más grandes hacen que la distribución sea más ‘Normal’ y ‘Delgada.’
¿Y qué? Usar el TCL para tomar decisiones
¿Por qué es esto importante para tu trabajo? Gracias al TLC, podemos calcular Intervalos de Confianza.
Al realizar una prueba A/B, no solo quieres el promedio. Quieres saber qué tan seguro estás. Dado que los promedios siguen una curva de campana, podemos decir: “Estoy 95% seguro de que el verdadero tiempo promedio en el sitio se encuentra entre X y Y.”
Calculemos un intervalo de confianza del 95% para nuestros datos crudos originales, utilizando las propiedades de la curva de campana que acabamos de descubrir.
import scipy.stats as stats
# Take one final sample of 50 users
final_sample = np.random.choice(raw_data, size=50)
mean_val = np.mean(final_sample)
# Standard Error = Standard Deviation / sqrt(sample_size)
std_error = np.std(final_sample) / np.sqrt(50)
# Calculate the 95% interval
ci_lower, ci_upper = stats.norm.interval(0.95, loc=mean_val, scale=std_error)
print(f"Sample Mean: {mean_val:.2f}")
print(f"95% Confidence Interval: {ci_lower:.2f} to {ci_upper:.2f}")
Así que, aunque nuestros datos crudos eran un desastre, ahora podemos afirmar dónde se encuentra el promedio ‘verdadero’. Por eso los resultados de tus pruebas A/B se sostienen incluso cuando tus usuarios se comportan de manera extraña.
Resumen de lo que aprendimos:
- Los datos del mundo real rara vez son Normales; generalmente están sesgados y son desordenados.
- El Teorema del Límite Central es un ‘filtro mágico’ para los promedios, no para los datos crudos.
- Necesitas una muestra lo suficientemente grande (generalmente n > 30) para que la curva de campana aparezca.
- Esto nos permite aplicar herramientas estadísticas estándar a casi cualquier conjunto de datos.
En la próxima parte de esta serie, veremos cómo este teorema sustenta las Pruebas de Hipótesis: el proceso de demostrar que tu nueva característica realmente funciona.
Comprueba tu comprensión
Las preguntas a continuación avanzan desde el simple recuerdo hasta el diseño abierto, siguiendo aproximadamente la Taxonomía de Bloom.
Recordar ¿Cuál es la diferencia entre la “población” y la “distribución muestral” en la analogía de los frijoles de gelatina del artículo?
Comprender Con tus propias palabras, explica por qué el TCL se aplica a los promedios de las muestras en lugar de a los datos brutos en sí: ¿qué quiere decir el artículo con “filtro mágico”?
Aplicar Usando la “Regla del 30” del artículo, ¿esperarías que la distribución muestral de las medias ya pareciera una curva de campana limpia para muestras de tamaño n=15 extraídas de los datos exponenciales sesgados, o esperarías ver todavía algo de sesgo filtrándose?
Analizar El artículo señala que el TCL requiere independencia — “si el tiempo de un usuario en el sitio afecta el tiempo de otro usuario (como un hilo viral), el TCL falla”. Explica paso a paso por qué las observaciones correlacionadas violan el mecanismo central del TCL (el promediado de desviaciones aleatorias independientes) y qué significa esto para la confiabilidad de un intervalo de confianza calculado a partir de datos correlacionados.
Evaluar
El ejemplo final de intervalo de confianza del artículo utiliza una sola muestra de 50 usuarios y la fórmula de aproximación normal (std_error = std / sqrt(n)) en lugar de hacer un remuestreo real como lo hace el artículo sobre el bootstrap. Critica el depender de la fórmula basada en el TCL en este caso: ¿qué supuesto hace este enfoque sobre la muestra que un enfoque bootstrap no necesitaría asumir?
Crear
Diseña un experimento para probar empíricamente la afirmación de la “Regla del 30” del TCL: utilizando el patrón de la función plot_clt del artículo, describe cómo medirías en qué momento exacto la distribución muestral “se ve lo suficientemente normal” (no solo inspeccionando el histograma a simple vista) — ¿qué prueba estadística o métrica podrías calcular en cada tamaño de muestra para cuantificar la normalidad en lugar de depender del juicio visual?
Aplica lo que aprendiste
Entregable: Un memorándum de 200–400 palabras para stakeholders respondiendo al desafío de tu VP de Producto. El intervalo de confianza del 95% del artículo para el tiempo promedio en el sitio se construyó utilizando la aproximación Normal basada en el CLT (stats.norm.interval(0.95, loc=mean_val, scale=std_error) donde std_error = std / sqrt(50)) en una sola muestra de 50 usuarios extraídos de datos exponenciales con scale=2. Tu VP pregunta: “El propio plot_clt del artículo mostró que n=10 todavía estaba asimétrico — ¿cómo sabes que n=50 es lo suficientemente Normal? ¿Por qué no simplemente usar bootstrap?” Toma una posición clara: defiende el IC basado en el CLT como adecuado para este conjunto de datos, o argumenta que un enfoque de remuestreo bootstrap sería más seguro. Luego, presenta un steelman de la postura opuesta en un párrafo.
Rúbrica:
- Toma y mantiene una posición clara (CLT adecuado vs bootstrap preferido) fundamentada en el caso exponencial de n=50, scale=2
- Nombra el supuesto específico que hace el IC basado en el CLT y que el bootstrap no: la normalidad aproximada de la distribución muestral en el tamaño de muestra elegido
- Utiliza la progresión empírica del artículo (n=2 irregular, n=10 asimétrico, n=100 campana bien definida) como evidencia a favor o en contra de que n=50 caiga en la zona “segura” en relación con la Regla de 30
- Aborda la advertencia de independencia del artículo: nombra una condición del mundo real (p. ej., un pico de tráfico viral donde los usuarios llegan en ráfagas correlacionadas) bajo la cual tanto los IC basados en el CLT como los de bootstrap no serían confiables
- Incluye un steelman de un párrafo del método que no recomendaste
- Escrito para una audiencia de VP de Producto — lenguaje accesible sin perder la sustancia estadística
- Se mantiene dentro de 200–400 palabras
Esta traducción fue generada automáticamente y puede contener errores. Si el idioma inglés es tu preferencia, puedes leer el artículo original en inglés .
Artículos relacionados
- Estadística En revisión
El Bootstrap: Cómo medir la incertidumbre sin asumir la normalidad
Aprende cómo el método de remuestreo bootstrap te permite calcular intervalos de confianza para datos asimétricos sin depender de fórmulas de la distribución normal.
- Estadística En revisión
Pearson vs Spearman vs Kendall: Cómo elegir la correlación adecuada para tus datos
Aprende cuándo usar la correlación de Pearson, Spearman o Kendall en Python — y por qué un puntaje bajo puede significar que simplemente elegiste la herramienta incorrecta para tus datos.
- Estadística En revisión
La 'paradoja del mentiroso' en los datos: por qué hacer demasiadas pruebas conduce a falsos descubrimientos
Aprende por qué realizar demasiadas pruebas estadísticas genera falsos descubrimientos y cómo las correcciones de Bonferroni y Benjamini-Hochberg te ayudan a dejar de perseguir ruido.
- Estadística En revisión
Intervalos de confianza: lo que realmente significa '95% de confianza' (sin dolores de cabeza con las matemáticas)
Aprende qué significa realmente el 95% de confianza —describe el proceso, no tu intervalo específico— con código en Python, ejemplos de pruebas A/B y una intuición clara.
¿Buscas otra cosa?
Busca en todos los artículos por título, resumen o tema.