Domina Z, t, χ², Normalidad y ANOVA con Python · Por el Prof. Logístico
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} $$# 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}")
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} \)
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)
Para frecuencias observadas vs esperadas (bondad de ajuste) o tablas 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)
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.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)
Comparamos las medias de tres o más grupos.
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