23 · El Z-test
Cuando σ es conocida y n es grande, compara una media muestral con una media poblacional hipotética usando una razón elegante: z = (x̄ − μ₀) / (σ / √n).
Cuando σ es conocida y n es grande, el Z-test compara una media muestral con una media poblacional hipotética — la prueba formal más sencilla.
Sin esto:
Sin él, no puedes preguntar '¿la media de esta muestra difiere significativamente de una referencia conocida?'
En la lección anterior aprendiste que el p-value mide qué tan sorprendente son tus datos bajo H₀. Ahora construiremos la primera prueba concreta que produce ese p-value: el Z-test de una muestra.
La receta:
Dada una muestra de n observaciones con media muestral x̄, y asumiendo que la desviación estándar poblacional σ es conocida, probamos H₀: μ = μ₀ con el estadístico Z:
z = (x̄ − μ₀) / (σ / √n)
Bajo H₀, z sigue una Normal Estándar N(0, 1) — porque por el TCL la media muestral es aproximadamente N(μ₀, σ²/n), por lo que restar la media y dividir por el SE da una Normal estándar.
P-values unilaterales vs bilaterales:
- Bilateral (H₁: μ ≠ μ₀): p = 2 · (1 − Φ(|z|)) — te sorprenden igualmente los valores extremos en ambas direcciones.
- Unilateral derecho (H₁: μ > μ₀): p = 1 − Φ(z)
- Unilateral izquierdo (H₁: μ < μ₀): p = Φ(z)
donde Φ es la CDF de la Normal estándar.
Supuestos:
- σ es conocida (por teoría, datos históricos o un estudio previo muy grande).
- O bien n es grande (≥ 30 por regla empírica) para que el TCL se aplique, o la población ya es Normal.
- Las observaciones son iid.
Nota sobre scipy: scipy no incluye una función dedicada ztest. Los enfoques estándar son statsmodels.stats.weightstats.ztest o hacerlo a mano con scipy.stats.norm — que es lo que haremos aquí para que las matemáticas sean transparentes.
Python (in browser)
Z-test de una muestra: 50 puntuaciones de CI de N(102, 15) probadas contra H₀: μ=100. Como la media verdadera solo está 2 puntos por encima del nulo y n es modesta, la prueba puede o no rechazar — dándonos una idea concreta del poder estadístico.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Z-test de dos muestras comparando dos grupos donde ambas σ se asumen conocidas. El efecto verdadero es 5 puntos de CI; si es detectable depende tanto del tamaño de muestra como del azar en este sorteo.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Análisis de potencia: para detectar de forma confiable un desplazamiento de 5 puntos de CI con σ=15 al 80% de potencia y α=0.05, necesitas ~71 observaciones por grupo.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Lista de verificación de supuestos del Z-test y opciones scipy/statsmodels.
Para un Z-test bilateral a α = 0.05, ¿cuál es el valor crítico z (es decir, rechazas H₀ si |z| lo supera)?
- **Estadístico Z:** z = (x̄ − μ₀) / (σ/√n). Bajo H₀ sigue N(0,1). p bilateral = 2·(1 − Φ(|z|)).
- Usa el Z-test solo cuando σ es conocida Y n ≥ 30 (o los datos son Normales). De lo contrario usa el t-test.
- **Fórmula de potencia:** n = ((z_{α/2} + z_β) · σ / Δ)². Con α=0.05, potencia=0.80: z_{α/2}=1.96, z_β=0.84.
Comparar la tasa de conversión observada con un benchmark (Z-test de proporciones); tests A/B de muestra grande con varianza conocida; alertas de significancia en dashboards de monitoreo.
Si lo quitas: No puedes hacer afirmaciones formales sobre 'la media muestral difiere de la referencia' sin un Z-test o su equivalente t.