Python Data Science Program
📓 Abrir notebook en GitHub

Clase 176 — Test t (una muestra, dos muestras, pareado)

Parte: 3 — Estadística Inferencial y Causal · Fuente: ISLP, cap. 13 + Bruce & Bruce, cap. 3 Statistical Experiments and Significance Testing. ⏱️ Duración estimada: 80 min.

🎯 Objetivo

Que el alumno aplique correctamente las tres variantes del test t —una muestra, dos muestras independientes (Welch por default), pareado—, distinga hipótesis nula y alternativa, lea p-value e intervalo de confianza de la salida de scipy.stats y pingouin, y aprenda a reportar effect size (Cohen's d, Hedges' g) junto con el p-value para no caer en la trampa de "significativo pero irrelevante".

📚 Resultados de aprendizaje

Al finalizar, el estudiante podrá:

🗺️ Temas

📌 Versión profundizada — 2026

El tema moderno que antes vivía como complemento dentro de esta clase ahora tiene su(s) clase(s) propia(s) con patrón completo, ejercicios y homework:

📖 Definiciones y características

📂 Dataset / recursos

🧪 Ejercicios

  1. Una muestra: con tips.total_bill, testá H₀: μ = 20 vs H₁: μ ≠ 20 con scipy.stats.ttest_1samp(tips.total_bill, popmean=20). Reportá t, p y el IC95 % (.confidence_interval()).
  2. Dos muestras (Welch): testá si tip difiere entre sex='Male' y sex='Female' con ttest_ind(equal_var=False). Calculá Cohen's d a mano y verificá contra pingouin.ttest.
  3. Pareado: simulá presión arterial antes/después de un fármaco con rng = np.random.default_rng(0): antes = rng.normal(140, 12, 30), despues = antes - rng.normal(5, 3, 30). Aplicá ttest_rel(antes, despues) y comparalo contra hacer ttest_ind mal (verás cómo el pareado tiene mucho más poder).
  4. Bilateral vs unilateral: para el ejercicio 2, repetí con alternative='greater' y 'less'. Observá cómo el p-value se divide ≈ 2.
  5. Significativo vs relevante: generá grupo_a = rng.normal(100, 15, 10_000) y grupo_b = rng.normal(100.5, 15, 10_000). El test va a dar p < 0.001; calculá Cohen's d y discutí en 2 líneas por qué el resultado "no importa".

📝 Homework verificable

Sobre tips:

  1. Hipótesis: la propina promedio es distinta para time='Lunch' y time='Dinner'.
  2. Verificar normalidad de cada grupo con pingouin.normality (Shapiro).
  3. Ejecutar pingouin.ttest y reportar: T, gl, p-value, IC95 %, Cohen's d, power.
  4. Una conclusión de 3 líneas que mencione (a) si rechazás H₀, (b) la magnitud del efecto en palabras (small/medium/large), (c) si recomendarías ese hallazgo a un dueño de restaurante.

Criterio de aceptación: el reporte debe incluir effect size y la conclusión no puede limitarse a "p < 0.05". Si Cohen's d es < 0.2, la respuesta a (c) debería ser "no" aunque el p sea bajo.

⚠️ Errores comunes

Síntoma / mensaje Causa y cómo arreglar
Aplico ttest_ind con equal_var=True por costumbre y los grupos tienen n muy distintos Student clásico con varianzas desiguales y n desbalanceado infla el error tipo I. Fix: dejar equal_var=False (Welch) por default; ya es lo recomendado en la literatura desde hace décadas.
p < 0.05 con n = 10⁶ y declaro un hallazgo importante "Significancia estadística" con muestra gigante captura efectos triviales. Fix: reportar Cohen's d y discutir relevancia.
Cambio alternative='greater' después de ver que x̄_a > x̄_b Eso es p-hacking. La dirección se fija con la pregunta de negocio, no con los datos. Fix: bilateral por default; unilateral solo si hay un pre-registro o lógica de dominio fuerte.
Aplico ttest_ind a observaciones pareadas (mismo sujeto antes/después) Pierde poder enormemente y puede dar p > 0.05 cuando pareado da p < 0.001. Fix: ttest_rel cuando hay pareo natural.
El test asume normalidad y mis datos son muy asimétricos con n=12 Welch es robusto pero no mágico. Fix: scipy.stats.mannwhitneyu (Clase 150) o bootstrap (Clase 153).

❓ Preguntas frecuentes

❓ ¿Welch o Student por default?

Welch siempre. No cuesta nada en poder cuando las varianzas son iguales, y protege contra el caso (muy común) de varianzas distintas. La literatura moderna (Delacre, Lakens & Leys 2017) recomienda abandonar el Student t-test.

❓ ¿Tengo que testear normalidad antes del t-test?

No con n ≥ 30 por grupo (TCL). Con n chico y datos visiblemente asimétricos, sí — y si Shapiro rechaza, mejor pasar a bootstrap o Mann-Whitney. Cuidado: con n enorme, Shapiro rechaza siempre por desviaciones triviales; mirá Q-Q plot como complemento.

❓ ¿Qué es BF10 que reporta pingouin?

Factor de Bayes contra H₀. BF10 > 3 es evidencia moderada a favor de H₁; > 10 fuerte. Es la versión bayesiana del p-value y no tiene los problemas del NHST (la testeás directamente en la Clase 158).

❓ ¿Por qué el IC95 % de la diferencia y el p-value siempre concuerdan?

Porque son la misma información presentada de otra forma. Si el IC95 % de μ_a - μ_b no incluye 0, entonces p < 0.05 (bilateral). Reportar el IC es más informativo: muestra magnitud y dirección.

❓ Cohen's d me da 0.3, ¿cómo lo explico al cliente?

"Un efecto pequeño-mediano". Operacionalmente: si dibujás las dos distribuciones, el ≈ 55 % de los individuos del grupo tratamiento superan a la mediana del grupo control (vs 50 % bajo H₀). Para una conversión, traducilo a "incremento absoluto de X puntos porcentuales".

🔗 Referencias

📥 Material descargable

➡️ Siguiente clase

Clase 177 — Effect size dedicado: Cohen's d, Hedges' g, Cliff's δ con pingouin