Comprender la distribución normal o gaussiana es fundamental para cualquier persona que trabaje con datos. A diferencia de las distribuciones discretas como la binomial, las distribuciones continuas describen variables aleatorias que pueden tomar cualquier valor, no solo números enteros. Aquí se muestra cómo construir, graficar y verificar una gaussiana usando Python, partiendo de un conjunto de datos reales sobre la longitud de alas de moscas domésticas.
¿Qué es la distribución gaussiana y cómo se escribe en Python?
La distribución normal, también conocida como la campana de Gauss, es una de las distribuciones continuas más importantes en probabilidad y estadística [1:06]. Su forma matemática es una exponencial cuyo argumento está elevado al cuadrado, y depende de dos parámetros clave:
- µ (mu): la media o promedio de la distribución.
- σ (sigma): la desviación estándar, que controla qué tan ancha o estrecha es la campana.
En Python, la función se implementa usando NumPy para las operaciones matemáticas. Se calcula el coeficiente 1 / (sigma * np.sqrt(2 * np.pi)) y se multiplica por np.exp(-0.5 * pow((x - mu) / sigma, 2)) [2:53]. Al generar valores de x entre -4 y 4 con incrementos de 0.1, y aplicar la función con µ = 0 y σ = 1, se obtiene la clásica forma de campana.
¿Cómo afectan los parámetros µ y σ a la forma de la curva?
Cambiar el valor de µ desplaza la campana horizontalmente. Por ejemplo, si µ pasa de 0 a 1, la curva se mueve hacia la derecha sin cambiar su forma [4:37]. Por otro lado, reducir σ hace que la campana sea más delgada, concentrando los datos más cerca de la media. Esta intuición es esencial: µ posiciona y σ controla la dispersión.
¿Cómo se usa SciPy para construir distribuciones normales?
La librería SciPy ofrece el objeto norm, importado desde scipy.stats, que simplifica la creación de distribuciones normales [5:22]. Se define la distribución con norm(loc=0, scale=1) y luego se evalúa la función de densidad de probabilidad (PDF) con el método .pdf(x). El resultado es idéntico al obtenido con la función manual.
También es posible calcular la distribución acumulada de probabilidad (CDF) usando .cdf(x) [6:27]. Esta función representa la integral de la gaussiana y, dado que no tiene solución analítica sencilla, SciPy la resuelve de forma numérica mediante aproximaciones. La CDF tiene forma de S y muestra la probabilidad acumulada hasta cada valor de x.
¿Cómo verificar que datos reales siguen una distribución gaussiana?
Para conectar la teoría con la práctica, se utiliza un archivo Excel con datos sobre la longitud de alas de moscas domésticas (housefly wing lengths), que contiene una muestra de aproximadamente cien individuos [8:03].
El flujo de trabajo en Google Colab es directo:
- Cargar el archivo en la carpeta temporal del entorno.
- Leerlo con Pandas usando
pd.read_excel(), que convierte el archivo en un data frame [9:21].
- Seleccionar la columna relevante y extraer solo los valores numéricos con
.values.
- Limpiar las primeras filas que contienen etiquetas usando slicing (
arr[4:]) [10:29].
Para calcular frecuencias, se emplea np.unique() con el argumento return_counts=True, que devuelve los valores únicos y cuántas veces se repite cada uno [11:15]. Al graficar estas frecuencias con un diagrama de barras en Matplotlib, la forma resultante se asemeja visualmente a una campana.
¿Qué es la estimación paramétrica y por qué importa?
Para confirmar que los datos siguen una gaussiana, se calcula el promedio con arr.mean() y la desviación estándar con arr.std() directamente desde NumPy [13:02]. Estos valores se usan como parámetros de una distribución normal teórica construida con SciPy.
Al superponer la curva teórica sobre el histograma normalizado (dividiendo los conteos entre la longitud del arreglo), ambas coinciden con precisión [14:42]. Este procedimiento se denomina estimación paramétrica: ajustar los parámetros de un modelo teórico usando estadísticos calculados directamente de los datos.
El resultado demuestra que la distribución normal no es solo una abstracción matemática, sino que emerge de forma natural en datos del mundo real. Existen además otras distribuciones continuas como la exponencial, Pareto, gamma y beta, cada una con aplicaciones en contextos específicos [16:00].
¿Has trabajado con datos que sigan una distribución diferente a la normal? Comparte tu experiencia.