🚀 Laboratorio de Pruebas de Hipótesis

Domina Z, t, χ², Normalidad y ANOVA con Python · Por el Prof. Logístico

📈 Prueba Z

Cuando la varianza poblacional es conocida o la muestra es grande (proporciones).

Estadístico Z (una media):

$$ z = \frac{\bar{x} - \mu_0}{\sigma / \sqrt{n}} $$

Diferencia de proporciones (A/B test):

$$ z = \frac{(\hat{p}_1 - \hat{p}_2)}{\sqrt{\hat{p}(1-\hat{p})(\frac{1}{n_1}+\frac{1}{n_2})}} \quad \hat{p} = \frac{x_1+x_2}{n_1+n_2} $$

🧪 Demo: ¿Los programadores de TechFun tienen un CI superior?

Esperando datos...
# Código Python (Google Colab)
import numpy as np
import scipy.stats as stats

datos = np.array([104]*36)  # Simulación
mu_0 = 100
sigma = 15
n = len(datos)
z_stat = (np.mean(datos) - mu_0) / (sigma / np.sqrt(n))
p_valor = 1 - stats.norm.cdf(z_stat)  # unilateral derecha
print(f"Z = {z_stat:.3f}, p = {p_valor:.4f}")

📊 Prueba t de Student

Para muestras pequeñas o cuando desconocemos σ.

Una muestra: \( t = \frac{\bar{x} - \mu_0}{s / \sqrt{n}} \)

Dos muestras independientes (Welch): \( t = \frac{\bar{x}_1 - \bar{x}_2}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}} \)

Pareada: \( t = \frac{\bar{d}}{s_d / \sqrt{n}} \) donde \( d_i = x_{i,después} - x_{i,antes} \)

🧪 Demo: Batería de consola (t una muestra)

🧪 Demo: Torneo novatos vs expertos (t independiente, Welch)

🧪 Demo: Hackathon (t pareada)

import scipy.stats as stats
# Una muestra
t, p = stats.ttest_1samp(datos, popmean=8)
# Independiente Welch
t, p = stats.ttest_ind(g1, g2, equal_var=False)
# Pareada
t, p = stats.ttest_rel(despues, antes)

🎲 Chi‑cuadrado (χ²)

Para frecuencias observadas vs esperadas (bondad de ajuste) o tablas de contingencia.

$$ \chi^2 = \sum \frac{(O_i - E_i)^2}{E_i} $$

🧪 Demo: ¿Dado trucado? (bondad de ajuste)

🧪 Demo: Género vs sabor de helado (tabla de contingencia)

import scipy.stats as stats
# Bondad de ajuste
chi2, p = stats.chisquare(f_obs=observed, f_exp=expected)
# Tabla de contingencia
chi2, p, dof, expected = stats.chi2_contingency(tabla)

🔔 Pruebas de Normalidad

Verificamos si los datos provienen de una distribución normal.

Test D'Agostino K²: combina asimetría y curtosis.

$$ K^2 = Z_1^2 + Z_2^2 \sim \chi^2_2 $$ \(Z_1\) basado en la asimetría muestral, \(Z_2\) basado en la curtosis.

🧪 Demo: D'Agostino‑Pearson (calculado en vivo)

import scipy.stats as stats
stat, p = stats.normaltest(datos)  # D'Agostino K²
shap_w, p_shap = stats.shapiro(datos) # Shapiro-Wilk (muestras pequeñas)

🧪 ANOVA de una vía

Comparamos las medias de tres o más grupos.

$$ F = \frac{MS_{entre}}{MS_{dentro}} $$ $$ MS_{entre} = \frac{SS_{entre}}{k-1},\quad MS_{dentro} = \frac{SS_{dentro}}{N-k} $$

🧪 Demo: Fertilizantes A, B, C

import scipy.stats as stats
f_stat, p = stats.f_oneway(A, B, C)
# Post‑hoc Tukey (statsmodels)
from statsmodels.stats.multicomp import pairwise_tukeyhsd