Unidad 1 · Inferencia estadística y distribuciones muestrales · Módulo 06
Una diferencia observada entre dos grupos puede reflejar una diferencia poblacional, pero también puede aparecer debido a la variabilidad propia del muestreo.
En este módulo aprenderás a comparar la diferencia observada con su incertidumbre mediante el estadístico (t). Después evaluarás el resultado utilizando el valor crítico, el valor (p) y el intervalo de confianza.
Estas tres lecturas deben conducir a una misma decisión estadística. La decisión permite evaluar evidencia frente a una diferencia poblacional igual a cero, pero no demuestra causalidad ni determina por sí sola la importancia social de la diferencia.
En una encuesta se seleccionan dos grupos de 50 personas. El Grupo A presenta un ingreso medio de $700.000 y el Grupo B, de $750.000. Manteniendo el orden de comparación B − A, la diferencia observada es de $50.000 a favor del Grupo B. Sin embargo, otra muestra podría producir una diferencia distinta. Por eso, debemos evaluar si esta diferencia es grande en relación con su incertidumbre. La diferencia observada en la muestra se representa mediante D = x̄B − x̄A, mientras que la diferencia poblacional que queremos conocer se representa mediante Δ = μB − μA. Podemos calcular D con la muestra, pero Δ permanece desconocida.
La diferencia observada entre las medias de la muestra es:
\[ D=\bar{x}_B-\bar{x}_A \]
La diferencia que queremos conocer en la población es:
\[ \Delta=\mu_B-\mu_A \]
Podemos calcular \(D\) con los datos de la muestra, pero \(\Delta\) permanece desconocida.
La prueba de hipótesis utiliza la diferencia observada para evaluar una afirmación sobre la diferencia poblacional.
La diferencia observada muestra cuánto se separan las medias en la muestra. Para evaluar la evidencia estadística, debemos compararla con su error estándar.
El proceso puede resumirse así:
pregunta social → hipótesis → diferencia observada → error estándar → estadístico \(t\) → valor crítico y valor \(p\) → intervalo de confianza → decisión → interpretación
En símbolos:
\[ H_0/H_1 \rightarrow D \rightarrow SE_D \rightarrow t \rightarrow t^*\text{ y }p \rightarrow IC \rightarrow \text{decisión} \]
El estadístico \(t\) indica cuántos errores estándar separan la diferencia observada de cero.
La decisión puede evaluarse de tres formas equivalentes:
Cuando se utiliza el mismo método y nivel de significación, las tres formas deben conducir a la misma decisión.
El error estándar indica cuánto podría cambiar la diferencia si extrajéramos otras muestras.
El estadístico \(t\) compara la diferencia observada con esa incertidumbre:
\[ t=\frac{D}{SE_D} \]
Un valor de \(t\) alejado de cero indica que la diferencia es grande en relación con su error estándar.
A partir de \(t\) obtenemos el valor \(p\), que indica qué tan inusual sería observar una diferencia como esta si en la población no existiera una diferencia entre los grupos.
Finalmente, comparamos el valor \(p\) con el nivel \(\alpha\) para tomar una decisión estadística.
\[ D \rightarrow SE_D \rightarrow t \rightarrow p \]
El nivel de significación, \(\alpha\), es un umbral fijado antes del análisis. Representa el riesgo aceptado de rechazar \(H_0\) cuando en realidad es verdadera. Usualmente se utiliza \(\alpha=0{,}05\) (5%). Si \(p\leq\alpha\), se rechaza \(H_0\); si \(p>\alpha\), no se rechaza. El valor \(p\) no depende solamente del tamaño de la diferencia. También depende de la incertidumbre asociada a ella.
La pregunta s:
¿Existen diferencias de ingreso entre los grupos?
Para responderla, formulamos dos hipótesis sobre las medias poblacionales.
La hipótesis nula plantea que no existe diferencia entre los grupos:
\[ H_0:\mu_B-\mu_A=0 \]
La hipótesis alternativa plantea que sí existe una diferencia:
\[ H_1:\mu_B-\mu_A\neq0 \]
Esta es una prueba bilateral porque considera diferencias en ambas direcciones:
Las hipótesis se refieren a la población. Los datos de la muestra permiten evaluar qué tan compatible es el resultado observado con \(H_0\). (No hay diferencia)
La muestra presenta una diferencia de ingresos medios entre los grupos:
\[ D=\bar{x}_B-\bar{x}_A=\$50.000 \]
Esta diferencia debe compararse con su error estándar:
\[ t=\frac{D}{SE_D} \]
El estadístico \(t\) indica cuántos errores estándar separan la diferencia observada de cero.
La hipótesis nula plantea que no existe diferencia entre las medias poblacionales:
\[ H_0:\mu_B-\mu_A=0 \]
Aunque \(H_0\) fuera cierta, las muestras podrían presentar diferencias por variabilidad muestral. La distribución \(t\) muestra los resultados esperables en ese escenario: está centrada en cero y contiene valores positivos y negativos.
En este ejemplo, \(gl=98\). Los grados de libertad resumen la cantidad de información disponible para estimar la variabilidad y determinan la forma de la distribución \(t\) y su valor crítico. Cuando aumentan, la distribución \(t\) se parece más a la normal.
¿Por qué hay 98 grados de libertad?
Como hay 50 personas en cada grupo, en la prueba \(t\) con varianzas combinadas se calcula:\[ gl=n_A+n_B-2=50+50-2=98 \]
Se restan dos grados de libertad porque se estiman dos medias, una por cada grupo. Si se utiliza la prueba \(t\) de Welch, el cálculo es diferente y el resultado puede no ser exactamente 98.
La diferencia observada debe interpretarse junto con su incertidumbre.
El error estándar de la diferencia, \(SE_D\), indica cuánto podría cambiar la diferencia entre las medias si extrajéramos otras muestras.
El estadístico \(t\) compara la diferencia observada con esa incertidumbre:
\[ t = \frac{D-0}{SE_D} = \frac{D}{SE_D} \]
El signo de \(t\) indica la dirección de la diferencia:
El valor absoluto, \(|t|\), indica cuántos errores estándar separan la diferencia observada de cero.
A partir de \(t\) calculamos el valor \(p\). En una prueba bilateral, este indica qué tan probable sería obtener un resultado tan alejado de cero como el observado, o más extremo, si \(H_0\) fuera cierta.
Luego comparamos el valor \(p\) con el nivel de significación \(\alpha\):
\[ p\leq\alpha \quad\Rightarrow\quad \text{rechazar }H_0 \]
\[ p>\alpha \quad\Rightarrow\quad \text{no rechazar }H_0 \]
Un valor \(p\) pequeño indica que los datos son poco compatibles con \(H_0\).
Un valor \(p\) grande indica que los datos todavía son compatibles con \(H_0\), pero no demuestra que las medias poblacionales sean iguales.
El laboratorio de Test de hipótesis está conectado con el recorrido “Cómo se construye y se interpreta la decisión”. Si cambias la diferencia entre las medias, la dispersión, el tamaño muestral o el nivel α en el laboratorio, el recorrido actualizará automáticamente sus cálculos, visualizaciones e interpretación.
La diferencia observada debe compararse con su incertidumbre. El estadístico \(t\) resume esta relación:
\[ t = \frac{\text{diferencia observada}} {\text{error estándar de la diferencia}} \]
El signo de \(t\) indica la dirección de la diferencia y su valor absoluto, \(|t|\), muestra cuántos errores estándar la separan de cero.
Como la hipótesis alternativa es bilateral:
\[ H_1:\mu_B-\mu_A\neq0 \]
consideramos resultados extremos en ambas direcciones. A partir de \(t\) calculamos el valor \(p\), que indica qué tan inusual sería obtener un resultado tan alejado de cero como el observado, o más extremo, si \(H_0\) fuera cierta.
Luego comparamos \(p\) con el nivel de significación \(\alpha\):
\[ p\leq\alpha \quad\Rightarrow\quad \text{rechazar }H_0 \]
\[ p>\alpha \quad\Rightarrow\quad \text{no rechazar }H_0 \]
Por ejemplo, si \(p=0{,}320\) y \(\alpha=0{,}05\), entonces \(p>\alpha\) y no rechazamos \(H_0\).
Cambiar \(\alpha\) puede modificar la decisión, pero no cambia los datos, el estadístico \(t\) ni el valor \(p\).
En una prueba bilateral con \(\alpha=0{,}05\):
El intervalo también muestra la magnitud y la precisión de la diferencia.
El valor \(p\) no indica:
Rechazar \(H_0\) significa que los datos son poco compatibles con una diferencia poblacional igual a cero. No rechazarla significa que la evidencia no es suficiente para descartarla, pero no demuestra que los grupos sean iguales.
La conclusión también depende de la calidad de los datos, el diseño de la muestra, los supuestos estadísticos y los posibles sesgos. Una prueba estadística evalúa un modelo, pero no confirma ni refuta por sí sola una teoría social completa.
Recapitulando:
La prueba comienza con la diferencia observada entre las medias:
\[ D=\bar{x}_B-\bar{x}_A \]
En este ejemplo:
\[ D=\$50.000 \]
Esta diferencia no basta para tomar una decisión. También debemos considerar cuánto podría variar entre muestras.
El error estándar de la diferencia es:
\[ SE_D=\$80.000 \]
Esteindica cuánto podría variar la diferencia entre las medias de una muestra a otra. El error estándar es de $80.000 porque, según la dispersión y el tamaño de los dos grupos, se estima que la diferencia entre sus medias podría variar normalmente alrededor de $80.000 entre una muestra y otra.
Como la incertidumbre es mayor que la diferencia observada, el resultado todavía se encuentra relativamente cerca de cero.
El estadístico \(t\) resume esta comparación:
\[ t=\frac{D}{SE_D} = \frac{50.000}{80.000} = 0{,}63 \]
Esto significa que la diferencia observada se encuentra a 0,63 errores estándar de cero.
El signo de \(t\) indica la dirección de la diferencia y \(|t|\) indica su distancia respecto de cero.
La distribución \(t\) representa los resultados que podrían aparecer si la diferencia poblacional fuera cero.
En este ejemplo:
\[ gl=98 \]
Los grados de libertad determinan la forma de la distribución y el valor crítico. Con una prueba bilateral y \(\alpha=0{,}05\):
\[ t^*\approx1{,}984 \]
Rechazamos \(H_0\) cuando el estadístico alcanza alguna de las regiones críticas:
\[ |t_{\text{obs}}|\geq t^* \]
Pero en este caso:
\[ |0{,}63|<1{,}984 \]
Por lo tanto, el resultado no alcanza una región crítica.
El valor \(p\) indica qué tan inusual sería obtener un resultado como el observado, o uno más extremo, si \(H_0\) fuera cierta.
En este ejemplo:
\[ p=0{,}533 \]
Como:
\[ 0{,}533>0{,}05 \]
no rechazamos \(H_0\).
El intervalo de confianza del 95 % para la diferencia es:
\[ IC_{95\%} = [-\$108.757;\ \$208.757] \]
Como el intervalo incluye cero:
\[ 0\in IC_{95\%} \]
una diferencia poblacional igual a cero todavía es compatible con los datos.
En este ejemplo:
Las tres formas conducen a la misma conclusión:
No rechazar \(H_0\).
Los datos no entregan evidencia estadística suficiente para descartar una diferencia poblacional igual a cero. Esto no demuestra que las medias sean iguales: solo indica que la evidencia disponible no permite afirmar que sean diferentes.
Ejemplo con datos construidos para fines pedagógicos.
| Grupo | n | Media | Desviación estándar |
|---|---|---|---|
| A | 50 | $700.000 | $250.000 |
| B | 50 | $750.000 | $250.000 |
Dos grupos de 50 personas presentan los siguientes ingresos medios:
\[ \bar{x}_A=\$700.000 \qquad \bar{x}_B=\$750.000 \]
La diferencia observada, manteniendo el orden \(B-A\), es:
\[ D = \bar{x}_B-\bar{x}_A = \$50.000 \]
El error estándar de esta diferencia es:
\[ SE_D=\$50.000 \]
Por lo tanto, el estadístico \(t\) es:
\[ t = \frac{D}{SE_D} = \frac{50.000}{50.000} = 1{,}00 \]
El valor \(p\) bilateral es:
\[ p=0{,}320 \]
Como \(p>0{,}05\), no rechazamos \(H_0\).
El intervalo de confianza del 95 % para la diferencia es:
\[ IC_{95\%} = [-\$49.223;\ \$149.223] \]
Como el intervalo incluye el valor cero, los datos no entregan evidencia estadística suficiente para concluir que existe una diferencia entre las medias poblacionales.
No rechazar \(H_0\) no demuestra que las medias poblacionales sean iguales. Significa que la evidencia disponible no es suficiente para descartar una diferencia igual a cero.
Hipótesis:
\[ H_0:\mu_B-\mu_A=0 \]
\[ H_1:\mu_B-\mu_A\neq0 \]
Error estándar de la diferencia:
\[ SE_{\bar{x}_B-\bar{x}_A}=\sqrt{\frac{s_A^2}{n_A}+\frac{s_B^2}{n_B}} \]
Con varianzas iguales:
\[ s_p^2=\frac{(n_A-1)s_A^2+(n_B-1)s_B^2}{n_A+n_B-2} \]
\[ SE_{\bar{x}_B-\bar{x}_A}=s_p\sqrt{\frac{1}{n_A}+\frac{1}{n_B}} \]
Estadístico y valor p bilateral:
\[ t_{obs}=\frac{(\bar{x}_B-\bar{x}_A)-0}{SE_{\bar{x}_B-\bar{x}_A}} \]
\[ p=P(|T|\geq |t_{obs}| \mid H_0) \]
Regla de decisión y error Tipo I:
\[ p\leq\alpha \Rightarrow \text{rechazar }H_0 \]
\[ p>\alpha \Rightarrow \text{no rechazar }H_0 \]
\[ \alpha=P(\text{rechazar }H_0 \mid H_0 \text{ verdadera}) \]
Intervalo para la diferencia:
\[ (\bar{x}_B-\bar{x}_A)\pm t^{*}SE_{\bar{x}_B-\bar{x}_A} \]
set.seed(123)
n <- 50
media_a <- 700000
media_b <- 750000
sd_objetivo <- 250000
alfa <- 0.05
base <- seq(-1, 1, length.out = n)
base <- as.numeric(scale(base))
grupo_a <- media_a + sd_objetivo * base
grupo_b <- media_b + sd_objetivo * base
media_obs_a <- mean(grupo_a)
media_obs_b <- mean(grupo_b)
sd_a <- sd(grupo_a)
sd_b <- sd(grupo_b)
diferencia <- media_obs_b - media_obs_a
se_diferencia <- sqrt(sd_a^2 / n + sd_b^2 / n)
t_obs <- diferencia / se_diferencia
gl <- 2 * n - 2
p_analitico <- 2 * pt(-abs(t_obs), df = gl)
critico <- qt(1 - alfa / 2, df = gl)
ic_diferencia <- diferencia + c(-1, 1) * critico * se_diferencia
round(c(
media_a = media_obs_a,
media_b = media_obs_b,
diferencia = diferencia,
error_estandar = se_diferencia,
t = t_obs,
p = p_analitico,
limite_inferior = ic_diferencia[1],
limite_superior = ic_diferencia[2]
), 3)
prueba <- t.test(grupo_b, grupo_a, var.equal = TRUE, alternative = "two.sided")
prueba
if (p_analitico <= alfa) {
print("Decisión: rechazar H0")
} else {
print("Decisión: no rechazar H0")
}
valores <- c(grupo_a, grupo_b)
etiquetas <- c(rep("A", n), rep("B", n))
repeticiones <- 10000
diferencias_nulas <- replicate(repeticiones, {
etiquetas_perm <- sample(etiquetas)
mean(valores[etiquetas_perm == "B"]) -
mean(valores[etiquetas_perm == "A"])
})
p_simulado <- mean(abs(diferencias_nulas) >= abs(diferencia))
p_simulado
histograma <- hist(diferencias_nulas, breaks = 40, plot = FALSE)
zonas_extremas <- abs(histograma$mids) >= abs(diferencia)
plot(
histograma,
col = ifelse(zonas_extremas, "tomato", "grey85"),
border = "white",
main = "Distribución nula de diferencias",
xlab = "Diferencia simulada B - A"
)
abline(v = 0, lwd = 2)
abline(v = c(-abs(diferencia), abs(diferencia)), lty = 2, lwd = 2)
comparar_tamano <- function(n_grupo) {
base_n <- seq(-1, 1, length.out = n_grupo)
base_n <- as.numeric(scale(base_n))
a <- media_a + sd_objetivo * base_n
b <- media_b + sd_objetivo * base_n
se <- sqrt(var(a) / n_grupo + var(b) / n_grupo)
t <- (mean(b) - mean(a)) / se
gl <- 2 * n_grupo - 2
p <- 2 * pt(-abs(t), df = gl)
c(n = n_grupo, diferencia = mean(b) - mean(a), SE = se, t = t, p = p)
}
rbind(comparar_tamano(50), comparar_tamano(500))import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
rng = np.random.default_rng(123)
n = 50
media_a = 700_000
media_b = 750_000
sd_objetivo = 250_000
alfa = 0.05
base = np.linspace(-1, 1, n)
base = (base - base.mean()) / base.std(ddof=1)
grupo_a = media_a + sd_objetivo * base
grupo_b = media_b + sd_objetivo * base
media_obs_a = grupo_a.mean()
media_obs_b = grupo_b.mean()
sd_a = grupo_a.std(ddof=1)
sd_b = grupo_b.std(ddof=1)
diferencia = media_obs_b - media_obs_a
se_diferencia = np.sqrt(sd_a**2 / n + sd_b**2 / n)
t_obs = diferencia / se_diferencia
gl = 2 * n - 2
p_analitico = 2 * stats.t.sf(abs(t_obs), df=gl)
critico = stats.t.ppf(1 - alfa / 2, df=gl)
ic_diferencia = (
diferencia - critico * se_diferencia,
diferencia + critico * se_diferencia
)
print(f"Media A: ${media_obs_a:,.0f}")
print(f"Media B: ${media_obs_b:,.0f}")
print(f"Diferencia: ${diferencia:,.0f}")
print(f"Error estándar: ${se_diferencia:,.0f}")
print(f"t({gl}) = {t_obs:.3f}")
print(f"p = {p_analitico:.4f}")
print(f"IC 95%: [${ic_diferencia[0]:,.0f}; ${ic_diferencia[1]:,.0f}]")
resultado = stats.ttest_ind(grupo_b, grupo_a, equal_var=True, alternative="two-sided")
print(resultado)
if p_analitico <= alfa:
print("Decisión: rechazar H0")
else:
print("Decisión: no rechazar H0")
valores = np.concatenate([grupo_a, grupo_b])
repeticiones = 10_000
diferencias_nulas = np.empty(repeticiones)
for i in range(repeticiones):
valores_perm = rng.permutation(valores)
muestra_a = valores_perm[:n]
muestra_b = valores_perm[n:]
diferencias_nulas[i] = muestra_b.mean() - muestra_a.mean()
p_simulado = np.mean(np.abs(diferencias_nulas) >= abs(diferencia))
print("Valor p aproximado por simulación:", round(p_simulado, 4))
conteos, limites = np.histogram(diferencias_nulas, bins=40)
centros = (limites[:-1] + limites[1:]) / 2
anchos = np.diff(limites)
extremos = np.abs(centros) >= abs(diferencia)
plt.bar(centros, conteos, width=anchos, alpha=np.where(extremos, 1.0, 0.45))
plt.axvline(0, linewidth=2)
plt.axvline(diferencia, linestyle="--")
plt.axvline(-diferencia, linestyle="--")
plt.xlabel("Diferencia simulada B - A")
plt.ylabel("Frecuencia")
plt.title("Distribución nula de diferencias")
plt.show()
def comparar_tamano(n_grupo):
base_n = np.linspace(-1, 1, n_grupo)
base_n = (base_n - base_n.mean()) / base_n.std(ddof=1)
a = media_a + sd_objetivo * base_n
b = media_b + sd_objetivo * base_n
se = np.sqrt(a.var(ddof=1) / n_grupo + b.var(ddof=1) / n_grupo)
diferencia_n = b.mean() - a.mean()
t_n = diferencia_n / se
gl_n = 2 * n_grupo - 2
p_n = 2 * stats.t.sf(abs(t_n), df=gl_n)
return {"n": n_grupo, "diferencia": diferencia_n, "SE": se, "t": t_n, "p": p_n}
for resultado_n in [comparar_tamano(50), comparar_tamano(500)]:
print(resultado_n)Python requiere SciPy para la distribución t.
---
pagetitle: "M06. Test de hipótesis y lógica de falsación | Estadística Correlacional Interactiva"
page-layout: custom
toc: false
body-class: rs-lesson-page inferencia-module m06-page
format:
html:
css:
- ../assets/css/m06-test-hipotesis-logica-falsacion.css
- ../assets/css/inferencia-modules.css
---
::: {.rs-lesson-page-wrap .m06-module-intro}
::: {.m06-lesson-header}
::: {.inference-module-kicker .m06-lesson-kicker}
Unidad 1 · Inferencia estadística y distribuciones muestrales · Módulo 06
:::
# M06. Test de hipótesis y lógica de falsación
::: {.rs-module-lead}
Una diferencia observada entre dos grupos puede reflejar una diferencia poblacional, pero también puede aparecer debido a la variabilidad propia del muestreo.
En este módulo aprenderás a comparar la diferencia observada con su incertidumbre mediante el estadístico (t). Después evaluarás el resultado utilizando el valor crítico, el valor (p) y el intervalo de confianza.
Estas tres lecturas deben conducir a una misma decisión estadística. La decisión permite evaluar evidencia frente a una diferencia poblacional igual a cero, pero no demuestra causalidad ni determina por sí sola la importancia social de la diferencia.
:::
:::
::: {.m06-lesson-section #pregunta-social}
## Pregunta social
### ¿La diferencia observada entre los grupos entrega evidencia de una diferencia poblacional?
```{=html}
<p class="m06-social-question-intro"> En una encuesta se seleccionan dos grupos de 50 personas. El Grupo A presenta un ingreso medio de <strong>$700.000</strong> y el Grupo B, de <strong>$750.000</strong>. Manteniendo el orden de comparación B − A, la diferencia observada es de <strong>$50.000 a favor del Grupo B</strong>. Sin embargo, otra muestra podría producir una diferencia distinta. Por eso, debemos evaluar si esta diferencia es grande en relación con su incertidumbre. La diferencia observada en la muestra se representa mediante <strong>D = x̄<sub>B</sub> − x̄<sub>A</sub></strong>, mientras que la diferencia poblacional que queremos conocer se representa mediante <strong>Δ = μ<sub>B</sub> − μ<sub>A</sub></strong>. Podemos calcular D con la muestra, pero Δ permanece desconocida. </p>
```
:::
::: {.rs-callout-warning style="background: rgba(102, 224, 222, 0.1); border-left: 4px solid #7266e0; padding: 1rem; border-radius: 4px; margin: 1.2rem 0;"}
La diferencia observada entre las medias de la muestra es:
$$
D=\bar{x}_B-\bar{x}_A
$$
La diferencia que queremos conocer en la población es:
$$
\Delta=\mu_B-\mu_A
$$
Podemos calcular $D$ con los datos de la muestra, pero $\Delta$ permanece desconocida.
La prueba de hipótesis utiliza la diferencia observada para evaluar una afirmación sobre la diferencia poblacional.
:::
::: {.m06-lesson-section #idea-central}
## Idea central
La diferencia observada muestra cuánto se separan las medias en la muestra. Para evaluar la evidencia estadística, debemos compararla con su error estándar.
El proceso puede resumirse así:
::: {.rs-callout-warning style="background: rgba(123, 227, 182, 0.43); border-left: 4px solid #7266e0; padding: 1rem; border-radius: 4px; margin: 1.2rem 0;"}
**pregunta social → hipótesis → diferencia observada → error estándar → estadístico $t$ → valor crítico y valor $p$ → intervalo de confianza → decisión → interpretación**
:::
En símbolos:
$$
H_0/H_1
\rightarrow
D
\rightarrow
SE_D
\rightarrow
t
\rightarrow
t^*\text{ y }p
\rightarrow
IC
\rightarrow
\text{decisión}
$$
El estadístico $t$ indica cuántos errores estándar separan la diferencia observada de cero.
La decisión puede evaluarse de tres formas equivalentes:
- comparar $|t_{\text{obs}}|$ con $t^*$;
- comparar $p$ con $\alpha$;
- observar si el intervalo de confianza incluye o excluye cero.
Cuando se utiliza el mismo método y nivel de significación, las tres formas deben conducir a la misma decisión.
El [**error estándar**]{.m01-kw}
indica cuánto podría cambiar la diferencia si extrajéramos otras muestras.
El [estadístico $t$]{.m01-kw} compara la diferencia observada con esa incertidumbre:
$$
t=\frac{D}{SE_D}
$$
Un valor de $t$ alejado de cero indica que la diferencia es grande en relación con su error estándar.
A partir de $t$ obtenemos el [**valor $p$**]{.m01-kw}, que indica qué tan inusual sería observar una diferencia como esta si en la población no existiera una diferencia entre los grupos.
Finalmente, comparamos el valor $p$ con el nivel $\alpha$ para tomar una decisión estadística.
$$
D \rightarrow SE_D \rightarrow t \rightarrow p
$$
El nivel de significación, $\alpha$, es un umbral fijado antes del análisis. Representa el riesgo aceptado de rechazar $H_0$ cuando en realidad es verdadera. Usualmente se utiliza $\alpha=0{,}05$ (5%). Si $p\leq\alpha$, se rechaza $H_0$; si $p>\alpha$, no se rechaza.
El valor $p$ no depende solamente del tamaño de la diferencia. También depende de la incertidumbre asociada a ella.
::: {.m06-sequence-flow .rs-sequence-flow role="list"}
::: {.m06-flow-step .rs-flow-step role="listitem"}
```{=html}
<div class="rs-flow-step-num" aria-hidden="true">1</div>
```
### De la pregunta a las hipótesis
La pregunta s:
**¿Existen diferencias de ingreso entre los grupos?**
Para responderla, formulamos dos hipótesis sobre las medias poblacionales.
La **hipótesis nula** plantea que no existe diferencia entre los grupos:
$$
H_0:\mu_B-\mu_A=0
$$
La **hipótesis alternativa** plantea que sí existe una diferencia:
$$
H_1:\mu_B-\mu_A\neq0
$$
Esta es una prueba bilateral porque considera diferencias en ambas direcciones:
- una diferencia positiva, cuando la media del Grupo B es mayor;
- una diferencia negativa, cuando la media del Grupo A es mayor.
Las hipótesis se refieren a la población. Los datos de la muestra permiten evaluar qué tan compatible es el resultado observado con $H_0$. (No hay diferencia)
:::
::: {.m06-flow-step .rs-flow-step role="listitem"}
```{=html}
<div class="rs-flow-step-num" aria-hidden="true">2</div>
```
### Del resultado observado al modelo nulo
La muestra presenta una diferencia de ingresos medios entre los grupos:
$$
D=\bar{x}_B-\bar{x}_A=\$50.000
$$
Esta diferencia debe compararse con su error estándar:
$$
t=\frac{D}{SE_D}
$$
El estadístico $t$ indica cuántos errores estándar separan la diferencia observada de cero.
La hipótesis nula plantea que no existe diferencia entre las medias poblacionales:
$$
H_0:\mu_B-\mu_A=0
$$
Aunque $H_0$ fuera cierta, las muestras podrían presentar diferencias por variabilidad muestral. La distribución $t$ muestra los resultados esperables en ese escenario: está centrada en cero y contiene valores positivos y negativos.
En este ejemplo, $gl=98$. Los **grados de libertad** resumen la cantidad de información disponible para estimar la variabilidad y determinan la forma de la distribución $t$ y su valor crítico. Cuando aumentan, la distribución $t$ se parece más a la normal.
> **¿Por qué hay 98 grados de libertad?**
> Como hay 50 personas en cada grupo, en la prueba $t$ con varianzas combinadas se calcula:
>
> $$
> gl=n_A+n_B-2=50+50-2=98
> $$
>
> Se restan dos grados de libertad porque se estiman dos medias, una por cada grupo. Si se utiliza la prueba $t$ de Welch, el cálculo es diferente y el resultado puede no ser exactamente 98.
:::
::: {.m06-flow-step .rs-flow-step role="listitem"}
```{=html}
<div class="rs-flow-step-num" aria-hidden="true">3</div>
```
### Tres criterios para tomar la decisión
La diferencia observada debe interpretarse junto con su incertidumbre.
El **error estándar de la diferencia**, $SE_D$, indica cuánto podría cambiar la diferencia entre las medias si extrajéramos otras muestras.
El estadístico $t$ compara la diferencia observada con esa incertidumbre:
$$
t
=
\frac{D-0}{SE_D}
=
\frac{D}{SE_D}
$$
El signo de $t$ indica la dirección de la diferencia:
- $t>0$: la media del Grupo B es mayor;
- $t<0$: la media del Grupo A es mayor.
El valor absoluto, $|t|$, indica cuántos errores estándar separan la diferencia observada de cero.
A partir de $t$ calculamos el **valor $p$**. En una prueba bilateral, este indica qué tan probable sería obtener un resultado tan alejado de cero como el observado, o más extremo, si $H_0$ fuera cierta.
Luego comparamos el valor $p$ con el nivel de significación $\alpha$:
$$
p\leq\alpha
\quad\Rightarrow\quad
\text{rechazar }H_0
$$
$$
p>\alpha
\quad\Rightarrow\quad
\text{no rechazar }H_0
$$
> Un valor $p$ pequeño indica que los datos son poco compatibles con $H_0$.
> Un valor $p$ grande indica que los datos todavía son compatibles con $H_0$, pero no demuestra que las medias poblacionales sean iguales.
:::
:::
:::
::: {.m06-lesson-section #secuencia-visual}
## Secuencia visual del contraste
```{=html}
<div id="m06-test-explainer" class="m06-explainer-section"></div>
```
:::
::: {.rs-callout-note .rs-callout-note--m01-blue}
El laboratorio de Test de hipótesis está conectado con el recorrido “Cómo se construye y se interpreta la decisión”. Si cambias la diferencia entre las medias, la dispersión, el tamaño muestral o el nivel α en el laboratorio, el recorrido actualizará automáticamente sus cálculos, visualizaciones e interpretación.
:::
::: {.m06-lesson-section #laboratorio}
```{=html}
<div class="lab-fullscreen-launcher">
<a class="lab-fullscreen-link" href="../labs/inferencia/m06-test-hipotesis-laboratorio.html" target="_blank" rel="noopener noreferrer" aria-label="Abrir el Laboratorio de Test de Hipótesis en una pestaña nueva">
<span>Ver en pantalla completa</span>
<span class="lab-fullscreen-link__icon" aria-hidden="true">↗</span>
</a>
</div>
<div id="m06-lab-root" class="m06-lab-surface m06-lab-breakout" data-lab-id="m06-test-hipotesis" data-fullscreen-url="../labs/inferencia/m06-test-hipotesis-laboratorio.html"></div>
```
:::
## Del resultado a la conclusión
La diferencia observada debe compararse con su incertidumbre. El estadístico $t$ resume esta relación:
$$
t
=
\frac{\text{diferencia observada}}
{\text{error estándar de la diferencia}}
$$
El signo de $t$ indica la dirección de la diferencia y su valor absoluto, $|t|$, muestra cuántos errores estándar la separan de cero.
Como la hipótesis alternativa es bilateral:
$$
H_1:\mu_B-\mu_A\neq0
$$
consideramos resultados extremos en ambas direcciones. A partir de $t$ calculamos el valor $p$, que indica qué tan inusual sería obtener un resultado tan alejado de cero como el observado, o más extremo, si $H_0$ fuera cierta.
Luego comparamos $p$ con el nivel de significación $\alpha$:
$$
p\leq\alpha
\quad\Rightarrow\quad
\text{rechazar }H_0
$$
$$
p>\alpha
\quad\Rightarrow\quad
\text{no rechazar }H_0
$$
Por ejemplo, si $p=0{,}320$ y $\alpha=0{,}05$, entonces $p>\alpha$ y no rechazamos $H_0$.
Cambiar $\alpha$ puede modificar la decisión, pero no cambia los datos, el estadístico $t$ ni el valor $p$.
### Relación con el intervalo de confianza
En una prueba bilateral con $\alpha=0{,}05$:
- si el intervalo de confianza del 95 % incluye cero, normalmente no rechazamos $H_0$;
- si el intervalo excluye cero, normalmente rechazamos $H_0$.
El intervalo también muestra la magnitud y la precisión de la diferencia.
### Límites de la conclusión
El valor $p$ no indica:
- la probabilidad de que $H_0$ sea verdadera;
- la probabilidad de que el resultado se deba al azar;
- la magnitud o importancia social de la diferencia;
- que exista una relación causal.
Rechazar $H_0$ significa que los datos son poco compatibles con una diferencia poblacional igual a cero. No rechazarla significa que la evidencia no es suficiente para descartarla, pero no demuestra que los grupos sean iguales.
La conclusión también depende de la calidad de los datos, el diseño de la muestra, los supuestos estadísticos y los posibles sesgos. Una prueba estadística evalúa un modelo, pero no confirma ni refuta por sí sola una teoría social completa.
::: {.rs-callout-warning style="background: rgba(224, 102, 102, 0.1); border-left: 4px solid #e06666; padding: 1rem; border-radius: 4px; margin: 1.2rem 0;"}
**Recapitulando:**
La prueba comienza con la diferencia observada entre las medias:
$$
D=\bar{x}_B-\bar{x}_A
$$
En este ejemplo:
$$
D=\$50.000
$$
Esta diferencia no basta para tomar una decisión. También debemos considerar cuánto podría variar entre muestras.
### 1. Comparar la diferencia con su incertidumbre
El error estándar de la diferencia es:
$$
SE_D=\$80.000
$$
Esteindica cuánto podría variar la diferencia entre las medias de una muestra a otra. El error estándar es de $80.000 porque, según la dispersión y el tamaño de los dos grupos, se estima que la diferencia entre sus medias podría variar normalmente alrededor de $80.000 entre una muestra y otra.
Como la incertidumbre es mayor que la diferencia observada, el resultado todavía se encuentra relativamente cerca de cero.
El estadístico $t$ resume esta comparación:
$$
t=\frac{D}{SE_D}
=
\frac{50.000}{80.000}
=
0{,}63
$$
Esto significa que la diferencia observada se encuentra a **0,63 errores estándar de cero**.
El signo de $t$ indica la dirección de la diferencia y $|t|$ indica su distancia respecto de cero.
### 2. Comparar con la distribución $t$
La distribución $t$ representa los resultados que podrían aparecer si la diferencia poblacional fuera cero.
En este ejemplo:
$$
gl=98
$$
Los grados de libertad determinan la forma de la distribución y el valor crítico. Con una prueba bilateral y $\alpha=0{,}05$:
$$
t^*\approx1{,}984
$$
Rechazamos $H_0$ cuando el estadístico alcanza alguna de las regiones críticas:
$$
|t_{\text{obs}}|\geq t^*
$$
Pero en este caso:
$$
|0{,}63|<1{,}984
$$
Por lo tanto, el resultado no alcanza una región crítica.
### 3. Comparar el valor $p$ con $\alpha$
El valor $p$ indica qué tan inusual sería obtener un resultado como el observado, o uno más extremo, si $H_0$ fuera cierta.
En este ejemplo:
$$
p=0{,}533
$$
Como:
$$
0{,}533>0{,}05
$$
no rechazamos $H_0$.
### 4. Revisar el intervalo de confianza
El intervalo de confianza del 95 % para la diferencia es:
$$
IC_{95\%}
=
[-\$108.757;\ \$208.757]
$$
Como el intervalo incluye cero:
$$
0\in IC_{95\%}
$$
una diferencia poblacional igual a cero todavía es compatible con los datos.
### 5. Tres formas, una misma decisión
En este ejemplo:
- $|0{,}63|<1{,}984$;
- $0{,}533>0{,}05$;
- el intervalo de confianza incluye cero.
Las tres formas conducen a la misma conclusión:
> **No rechazar $H_0$.**
Los datos no entregan evidencia estadística suficiente para descartar una diferencia poblacional igual a cero. Esto no demuestra que las medias sean iguales: solo indica que la evidencia disponible no permite afirmar que sean diferentes.
:::
::: {.m06-lesson-section .rs-example-section}
<details class="rs-example-disclosure">
<summary class="rs-example-disclosure__summary">
<span class="rs-example-disclosure__heading" role="heading" aria-level="2">Ejemplo aplicado valor P</span>
<span class="rs-example-disclosure__action"><span class="rs-example-disclosure__show">Ver ejemplo</span><span class="rs-example-disclosure__hide">Ocultar ejemplo</span><span class="rs-example-disclosure__chevron" aria-hidden="true">↓</span></span>
</summary>
::: {.rs-example-disclosure__content}
**Ejemplo con datos construidos para fines pedagógicos.**
```{=html}
<div class="m06-table-wrap">
<table>
<thead>
<tr><th>Grupo</th><th>n</th><th>Media</th><th>Desviación estándar</th></tr>
</thead>
<tbody>
<tr><td>A</td><td>50</td><td>$700.000</td><td>$250.000</td></tr>
<tr><td>B</td><td>50</td><td>$750.000</td><td>$250.000</td></tr>
</tbody>
</table>
</div>
```
Dos grupos de 50 personas presentan los siguientes ingresos medios:
$$
\bar{x}_A=\$700.000
\qquad
\bar{x}_B=\$750.000
$$
La diferencia observada, manteniendo el orden $B-A$, es:
$$
D
=
\bar{x}_B-\bar{x}_A
=
\$50.000
$$
El error estándar de esta diferencia es:
$$
SE_D=\$50.000
$$
Por lo tanto, el estadístico $t$ es:
$$
t
=
\frac{D}{SE_D}
=
\frac{50.000}{50.000}
=
1{,}00
$$
El valor $p$ bilateral es:
$$
p=0{,}320
$$
Como $p>0{,}05$, no rechazamos $H_0$.
El intervalo de confianza del 95 % para la diferencia es:
$$
IC_{95\%}
=
[-\$49.223;\ \$149.223]
$$
Como el intervalo incluye el valor cero, los datos no entregan evidencia estadística suficiente para concluir que existe una diferencia entre las medias poblacionales.
No rechazar $H_0$ no demuestra que las medias poblacionales sean iguales. Significa que la evidencia disponible no es suficiente para descartar una diferencia igual a cero.
:::
</details>
:::
```{=html}
<script src="../assets/js/m06-test-hipotesis-logica-falsacion.js"></script>
```
::: {.inference-endmatter}
<details class="inference-endmatter__item inference-endmatter__formulas">
<summary><span>Fórmulas mínimas y complementarias</span></summary>
::: {.inference-endmatter__content}
Hipótesis:
$$
H_0:\mu_B-\mu_A=0
$$
$$
H_1:\mu_B-\mu_A\neq0
$$
Error estándar de la diferencia:
$$
SE_{\bar{x}_B-\bar{x}_A}=\sqrt{\frac{s_A^2}{n_A}+\frac{s_B^2}{n_B}}
$$
Con varianzas iguales:
$$
s_p^2=\frac{(n_A-1)s_A^2+(n_B-1)s_B^2}{n_A+n_B-2}
$$
$$
SE_{\bar{x}_B-\bar{x}_A}=s_p\sqrt{\frac{1}{n_A}+\frac{1}{n_B}}
$$
Estadístico y valor p bilateral:
$$
t_{obs}=\frac{(\bar{x}_B-\bar{x}_A)-0}{SE_{\bar{x}_B-\bar{x}_A}}
$$
$$
p=P(|T|\geq |t_{obs}| \mid H_0)
$$
Regla de decisión y error Tipo I:
$$
p\leq\alpha \Rightarrow \text{rechazar }H_0
$$
$$
p>\alpha \Rightarrow \text{no rechazar }H_0
$$
$$
\alpha=P(\text{rechazar }H_0 \mid H_0 \text{ verdadera})
$$
Intervalo para la diferencia:
$$
(\bar{x}_B-\bar{x}_A)\pm t^{*}SE_{\bar{x}_B-\bar{x}_A}
$$
:::
</details>
<details class="inference-endmatter__item inference-endmatter__code">
<summary><span>Código en R y Python</span></summary>
::: {.inference-endmatter__content}
::: {.panel-tabset .rs-code-tabs}
### R {.unnumbered .unlisted}
```r
set.seed(123)
n <- 50
media_a <- 700000
media_b <- 750000
sd_objetivo <- 250000
alfa <- 0.05
base <- seq(-1, 1, length.out = n)
base <- as.numeric(scale(base))
grupo_a <- media_a + sd_objetivo * base
grupo_b <- media_b + sd_objetivo * base
media_obs_a <- mean(grupo_a)
media_obs_b <- mean(grupo_b)
sd_a <- sd(grupo_a)
sd_b <- sd(grupo_b)
diferencia <- media_obs_b - media_obs_a
se_diferencia <- sqrt(sd_a^2 / n + sd_b^2 / n)
t_obs <- diferencia / se_diferencia
gl <- 2 * n - 2
p_analitico <- 2 * pt(-abs(t_obs), df = gl)
critico <- qt(1 - alfa / 2, df = gl)
ic_diferencia <- diferencia + c(-1, 1) * critico * se_diferencia
round(c(
media_a = media_obs_a,
media_b = media_obs_b,
diferencia = diferencia,
error_estandar = se_diferencia,
t = t_obs,
p = p_analitico,
limite_inferior = ic_diferencia[1],
limite_superior = ic_diferencia[2]
), 3)
prueba <- t.test(grupo_b, grupo_a, var.equal = TRUE, alternative = "two.sided")
prueba
if (p_analitico <= alfa) {
print("Decisión: rechazar H0")
} else {
print("Decisión: no rechazar H0")
}
valores <- c(grupo_a, grupo_b)
etiquetas <- c(rep("A", n), rep("B", n))
repeticiones <- 10000
diferencias_nulas <- replicate(repeticiones, {
etiquetas_perm <- sample(etiquetas)
mean(valores[etiquetas_perm == "B"]) -
mean(valores[etiquetas_perm == "A"])
})
p_simulado <- mean(abs(diferencias_nulas) >= abs(diferencia))
p_simulado
histograma <- hist(diferencias_nulas, breaks = 40, plot = FALSE)
zonas_extremas <- abs(histograma$mids) >= abs(diferencia)
plot(
histograma,
col = ifelse(zonas_extremas, "tomato", "grey85"),
border = "white",
main = "Distribución nula de diferencias",
xlab = "Diferencia simulada B - A"
)
abline(v = 0, lwd = 2)
abline(v = c(-abs(diferencia), abs(diferencia)), lty = 2, lwd = 2)
comparar_tamano <- function(n_grupo) {
base_n <- seq(-1, 1, length.out = n_grupo)
base_n <- as.numeric(scale(base_n))
a <- media_a + sd_objetivo * base_n
b <- media_b + sd_objetivo * base_n
se <- sqrt(var(a) / n_grupo + var(b) / n_grupo)
t <- (mean(b) - mean(a)) / se
gl <- 2 * n_grupo - 2
p <- 2 * pt(-abs(t), df = gl)
c(n = n_grupo, diferencia = mean(b) - mean(a), SE = se, t = t, p = p)
}
rbind(comparar_tamano(50), comparar_tamano(500))
```
### Python {.unnumbered .unlisted}
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
rng = np.random.default_rng(123)
n = 50
media_a = 700_000
media_b = 750_000
sd_objetivo = 250_000
alfa = 0.05
base = np.linspace(-1, 1, n)
base = (base - base.mean()) / base.std(ddof=1)
grupo_a = media_a + sd_objetivo * base
grupo_b = media_b + sd_objetivo * base
media_obs_a = grupo_a.mean()
media_obs_b = grupo_b.mean()
sd_a = grupo_a.std(ddof=1)
sd_b = grupo_b.std(ddof=1)
diferencia = media_obs_b - media_obs_a
se_diferencia = np.sqrt(sd_a**2 / n + sd_b**2 / n)
t_obs = diferencia / se_diferencia
gl = 2 * n - 2
p_analitico = 2 * stats.t.sf(abs(t_obs), df=gl)
critico = stats.t.ppf(1 - alfa / 2, df=gl)
ic_diferencia = (
diferencia - critico * se_diferencia,
diferencia + critico * se_diferencia
)
print(f"Media A: ${media_obs_a:,.0f}")
print(f"Media B: ${media_obs_b:,.0f}")
print(f"Diferencia: ${diferencia:,.0f}")
print(f"Error estándar: ${se_diferencia:,.0f}")
print(f"t({gl}) = {t_obs:.3f}")
print(f"p = {p_analitico:.4f}")
print(f"IC 95%: [${ic_diferencia[0]:,.0f}; ${ic_diferencia[1]:,.0f}]")
resultado = stats.ttest_ind(grupo_b, grupo_a, equal_var=True, alternative="two-sided")
print(resultado)
if p_analitico <= alfa:
print("Decisión: rechazar H0")
else:
print("Decisión: no rechazar H0")
valores = np.concatenate([grupo_a, grupo_b])
repeticiones = 10_000
diferencias_nulas = np.empty(repeticiones)
for i in range(repeticiones):
valores_perm = rng.permutation(valores)
muestra_a = valores_perm[:n]
muestra_b = valores_perm[n:]
diferencias_nulas[i] = muestra_b.mean() - muestra_a.mean()
p_simulado = np.mean(np.abs(diferencias_nulas) >= abs(diferencia))
print("Valor p aproximado por simulación:", round(p_simulado, 4))
conteos, limites = np.histogram(diferencias_nulas, bins=40)
centros = (limites[:-1] + limites[1:]) / 2
anchos = np.diff(limites)
extremos = np.abs(centros) >= abs(diferencia)
plt.bar(centros, conteos, width=anchos, alpha=np.where(extremos, 1.0, 0.45))
plt.axvline(0, linewidth=2)
plt.axvline(diferencia, linestyle="--")
plt.axvline(-diferencia, linestyle="--")
plt.xlabel("Diferencia simulada B - A")
plt.ylabel("Frecuencia")
plt.title("Distribución nula de diferencias")
plt.show()
def comparar_tamano(n_grupo):
base_n = np.linspace(-1, 1, n_grupo)
base_n = (base_n - base_n.mean()) / base_n.std(ddof=1)
a = media_a + sd_objetivo * base_n
b = media_b + sd_objetivo * base_n
se = np.sqrt(a.var(ddof=1) / n_grupo + b.var(ddof=1) / n_grupo)
diferencia_n = b.mean() - a.mean()
t_n = diferencia_n / se
gl_n = 2 * n_grupo - 2
p_n = 2 * stats.t.sf(abs(t_n), df=gl_n)
return {"n": n_grupo, "diferencia": diferencia_n, "SE": se, "t": t_n, "p": p_n}
for resultado_n in [comparar_tamano(50), comparar_tamano(500)]:
print(resultado_n)
```
Python requiere SciPy para la distribución t.
:::
:::
</details>
<details class="inference-endmatter__item inference-endmatter__references">
<summary><span>Bibliografía</span></summary>
::: {.inference-endmatter__content}
- Moore, D. S. *Estadística aplicada básica*. Antoni Bosch.
- Popper, K. R. *La lógica de la investigación científica*.
- Ritchey, F. J. *Estadística para las ciencias sociales*. McGraw-Hill.
:::
</details>
:::
```{=html}
<nav class="rs-lesson-footer-nav rs-inference-footer-nav" aria-label="Navegación entre módulos">
<a href="m05_intervalos_confianza.qmd" class="rs-nav-link rs-nav-link--previous">
<span class="rs-nav-link__arrow" aria-hidden="true">←</span>
<span class="rs-nav-link__copy">
<span class="rs-nav-link__label">Módulo anterior</span>
<span class="rs-nav-link__title">M05. Intervalos de confianza</span>
</span>
</a>
<a href="m07_hipotesis_direccionales.qmd" class="rs-nav-link rs-nav-link--next">
<span class="rs-nav-link__copy">
<span class="rs-nav-link__label">Siguiente módulo</span>
<span class="rs-nav-link__title">M07. Hipótesis direccionales y no direccionales</span>
</span>
<span class="rs-nav-link__arrow" aria-hidden="true">→</span>
</a>
</nav>
```
:::