La prueba t de Student en Python te permite comparar la distribución de dos variables numéricas y decidir si son estadísticamente diferentes. Aquí aprendes a calcularla paso a paso usando Pandas, NumPy y SciPy, ideal si estás validando hipótesis en proyectos de análisis de datos.
Qué librerías necesitas para automatizar pruebas de hipótesis
Antes de calcular cualquier estadístico, prepara tu entorno. Un notebook en Colab funciona perfecto para este flujo.
Las librerías que vas a importar son:
- Pandas como
pd para manejar la tabla de datos.
- NumPy como
np para operaciones matemáticas como la raíz cuadrada.
- Seaborn como
sns por si necesitas visualizar.
- SciPy stats como
stats, junto con los módulos f_oneway y ttest_ind, que son específicos para pruebas de hipótesis.
python
import pandas as pd
import numpy as np
import seaborn as sns
import scipy.stats as stats
from scipy.stats import f_oneway
from scipy.stats import ttest_ind
El dataset que usarás es el clásico Iris, cargado desde la URL del repositorio de machine learning. Define los nombres de columnas: sepal length, sepal width, petal length, petal width y la variable categórica class.
Cómo se calcula el error estándar antes del t de Student
La fórmula t de Student depende de un cálculo previo, el error estándar (SE), que es la desviación estándar dividida entre la raíz cuadrada del tamaño de muestra. Sin este paso, no puedes llegar al estadístico final.
La idea es comparar dos variables numéricas: en este caso sepal length contra sepal width. Para cada una calculas su SE [04:30].
python
SE_length = iris['sepal_length'].std() / np.sqrt(10)
SE_width = iris['sepal_width'].std() / np.sqrt(10)
¿Qué es el error estándar (SE)? Es una medida de cuánto varía la media de una muestra respecto a la media real. Se calcula como la desviación estándar dividida entre la raíz cuadrada del tamaño de muestra.
Luego viene el standard error deviation (SED), que combina los dos errores estándar elevándolos al cuadrado, sumándolos y sacando la raíz cuadrada. Esto te da un denominador único para la fórmula t.
python
SED = np.sqrt(SE_length2 + SE_width2)
Por qué conviene calcular cada paso por separado
Podrías hacer todo en una sola línea, pero separar el cálculo te ayuda a detectar errores y a entender qué está pasando en cada operación. Es una buena práctica cuando empiezas con estadística aplicada.
Cómo interpretar el valor t y el p-value en Python
Con el SED listo, calculas el estadístico t como la diferencia de medias entre las dos variables dividida por el SED [07:00].
python
tstat = (iris['sepal_length'].mean() - iris['sepal_width'].mean()) / SED
El resultado en este ejercicio fue 9.43. Ese es tu valor t.
Para obtener el p-value, usas el módulo ttest_ind de SciPy, que recibe las dos variables a comparar:
python
ttest_ind(iris['sepal_length'], iris['sepal_width'])
La salida arrojó un estadístico de 36 y un p-value de 3.98e-112, un número extremadamente pequeño.
¿Qué significa un p-value tan pequeño? Indica que la probabilidad de que las dos distribuciones sean iguales por azar es casi nula. Por eso se rechaza la hipótesis nula.
Cuándo rechazar la hipótesis nula con el método t
La regla de decisión es directa:
- Si el valor absoluto de t es mayor que el valor crítico, rechazas la hipótesis nula. Las distribuciones son diferentes.
- Si el valor absoluto de t es menor, aceptas la hipótesis nula. Las distribuciones son similares.
- En este ejercicio, 9.43 supera ampliamente el umbral, así que rechazas la nula.
La conclusión: la distribución de sepal length es muy distinta a la de sepal width. Tu hipótesis inicial de que serían parecidas no se sostiene con los datos.
¿Cuándo usar t de Student y no otra prueba? Cuando quieres comparar las medias de dos grupos o variables numéricas. Si tienes tres o más grupos, lo correcto es usar ANOVA.
Conceptos clave que aparecen en el ejercicio
Para que el cálculo tenga sentido, conviene tener claros varios términos que se cruzan en el código:
- Desviación estándar: mide la dispersión de los datos respecto a la media, calculada con
.std() en Pandas.
- Raíz cuadrada con NumPy: la función
np.sqrt() se usa tanto en el SE como en el SED.
- Hipótesis nula: la teoría inicial que asume que no hay diferencia entre las distribuciones.
- Hipótesis alternativa: la conclusión a la que llegas cuando rechazas la nula, en este caso que las distribuciones difieren.
- ttest_ind: módulo de SciPy que devuelve directamente el estadístico t y el p-value sin que tengas que programarlo a mano [09:30].
El flujo completo, importar librerías, calcular SE, calcular SED, sacar el estadístico t y validar con ttest_ind, te da una plantilla replicable para cualquier comparación entre dos variables numéricas.
¿Qué dos variables del dataset Iris compararías tú con este método? Cuéntalo en los comentarios y comparte tu resultado.