---
title: "Capítulo 8: Inferencia Estadística para Datos Categóricos en Ciencias de la Salud"
subtitle: 'Adaptación Didáctica de "Introductory Statistics for the Life and Biomedical Sciences" con Datos Reales de Investigaciones Estudiantiles (UJMD)'
author: "Giovanni Francisco Guevara, MD, MPH Ph.D(c) - Cátedra de Bioestadística - Facultad de Ciencias de la Salud"
date: "2026-11-10"
format:
html:
toc: true
toc-depth: 3
toc-location: left
theme: flatly
code-fold: false
code-tools: true
number-sections: true
pdf:
toc: true
toc-depth: 3
number-sections: true
colorlinks: true
documentclass: article
geometry:
- top=20mm
- bottom=20mm
- left=20mm
- right=20mm
docx:
toc: true
toc-depth: 3
number-sections: true
execute:
echo: true
warning: false
message: false
editor:
markdown:
wrap: 72
---
# Introducción y Objetivos del Capítulo
En el Capítulo 5 exploramos la inferencia estadística aplicada a
variables cuantitativas continuas (medias, pruebas $t$ y ANOVA). No
obstante, en la práctica médica y en la investigación clínica, una
proporción sustancial de las variables de interés son de naturaleza
**categórica**: presencia o ausencia de enfermedad, éxito o fracaso
terapéutico, hábito tabáquico o de vapeo, grado de somnolencia diurna y
respuesta a intervenciones sanitarias.
En estos escenarios, las mediciones no se expresan en promedios
numéricos con unidades de escala, sino como **conteos de frecuencia
(**$n$), proporciones muestrales ($\hat{p}$) y porcentajes.
El objetivo central de este capítulo es desarrollar el marco
metodológico para **probar hipótesis y estimar parámetros poblacionales
sobre variables cualitativas dicotómicas y politómicas**, abarcando
desde una sola proporción hasta tablas de contingencia multivariadas,
pruebas exactas y métodos computacionales de remuestreo.
### Objetivos de aprendizaje
Al finalizar este capítulo, el estudiante de medicina será capaz de:
1. **Analizar e interpretar** la distribución muestral de una
proporción simple ($\hat{p}$), evaluando las condiciones de
éxito-fracaso y construyendo intervalos de confianza del 95%
($IC_{95\%}$) y pruebas de significancia $Z$.
2. **Comparar** proporciones entre dos muestras independientes mediante
la prueba $Z$ de dos proporciones, integrando estimadores de impacto
epidemiológico (Riesgo Relativo y Razón de Momios / *Odds Ratio*).
3. **Aplicar** la prueba de **Chi-cuadrado (**$\chi^2$) de Bondad de
Ajuste para verificar si una distribución muestral se ajusta a un
modelo teórico o referencia poblacional conocida.
4. **Evaluar** la asociación e independencia entre dos variables
cualitativas en tablas de contingencia $r \times c$ mediante la
prueba $\chi^2$ de Independencia de Pearson y el análisis de
residuos ajustados.
5. **Reconocer** las limitaciones asintóticas de la prueba $\chi^2$ en
muestras pequeñas y aplicar con precisión el **Test Exacto de
Fisher**.
6. **Implementar** métodos modernos de inferencia libre de distribución
basados en **simulación y permutaciones** en RStudio.
7. **Seleccionar** la técnica inferencial adecuada para datos
categóricos a partir de un árbol de decisión bioestadístico.
------------------------------------------------------------------------
# Inferencia para una Proporción
## Fundamentos teóricos y modelo matemático
Consideremos una variable biológica dicotómica $X$ que puede tomar
únicamente dos valores: "éxito" ($X = 1$) o "fracaso" ($X = 0$), con una
probabilidad poblacional constante de éxito denotada por $p$. Cada
individuo representa un ensayo Bernoulli independiente.
En una muestra aleatoria de tamaño $n$, el número total de éxitos es la
variable aleatoria binomial $X \sim \text{Binomial}(n, p)$. El estimador
puntual insesgado de la proporción poblacional $p$ es la **proporción
muestral** ($\hat{p}$):
$$\hat{p} = \frac{X}{n} = \frac{\sum_{i=1}^n X_i}{n}$$
### Esperanza y varianza del estimador
Por las propiedades de la distribución binomial:
1. **Esperanza (insesgadez):**
$E(\hat{p}) = E\left(\frac{X}{n}\right) = \frac{n p}{n} = p$
2. **Varianza:**
$\text{Var}(\hat{p}) = \text{Var}\left(\frac{X}{n}\right) = \frac{1}{n^2} \text{Var}(X) = \frac{n p (1 - p)}{n^2} = \frac{p(1 - p)}{n}$
Por consiguiente, el **error estándar de la proporción** ($SE$) es:
$$SE_{\hat{p}} = \sqrt{\frac{p(1 - p)}{n}}$$
Cuando el parámetro poblacional $p$ es desconocido, se sustituye por el
estimador muestral $\hat{p}$:
$$\widehat{SE}_{\hat{p}} = \sqrt{\frac{\hat{p}(1 - \hat{p})}{n}}$$
------------------------------------------------------------------------
## La Condición de éxito-fracaso y el Teorema del Límite Central
Por el Teorema del Límite Central, la distribución muestral de $\hat{p}$
se aproxima a una distribución normal:
$$\hat{p} \mathrel{\dot{\sim}} N\left(p, \, \frac{p(1-p)}{n}\right)$$
Para que esta aproximación normal sea válida, debe cumplirse la
**Condición de Éxito-Fracaso**:
$$n p \ge 10 \quad \text{y} \quad n (1 - p) \ge 10$$
*(En estudios con muestras moderadas, algunos textos biometrológicos
admiten un umbral mínimo de 5 éxitos y 5 fracasos).*
------------------------------------------------------------------------
## Estimación interválica: De Wald a Wilson y Agresti-Coull
### 1. Intervalo asintótico clásico de Wald
El intervalo de confianza tradicional de nivel $(1 - \alpha)$ se define
como:
$$IC_{1 - \alpha} = \hat{p} \pm Z_{\alpha/2} \sqrt{\frac{\hat{p}(1 - \hat{p})}{n}}$$
Para un nivel de confianza del $95\%$ ($Z_{0.025} = 1.96$):
$$IC_{95\%} = \hat{p} \pm 1.96 \sqrt{\frac{\hat{p}(1 - \hat{p})}{n}}$$
*Advertencia metodológica:* El intervalo de Wald presenta una cobertura
real deficiente cuando el tamaño de muestra $n$ es pequeño o cuando la
proporción $\hat{p}$ se aproxima a los extremos (cercana a 0 o 1).
### 2. Corrección de Agresti-Coull ("Regla de más cuatro")
Agresti y Coull demostraron que sumar 2 éxitos ficticios y 2 fracasos
ficticios (añadir 4 observaciones imaginarias en total) corrige
drásticamente el sesgo de cobertura:
$$\tilde{n} = n + 4, \quad \tilde{X} = X + 2, \quad \tilde{p} = \frac{X + 2}{n + 4}$$
$$IC_{95\% \text{ (Agresti-Coull)}} = \tilde{p} \pm 1.96 \sqrt{\frac{\tilde{p}(1 - \tilde{p})}{\tilde{n}}}$$
------------------------------------------------------------------------
## Prueba de hipótesis $Z$ para una proporción
Para evaluar si la proporción poblacional $p$ coincide con un valor de
referencia predeterminado $p_0$:
- **Hipótesis Nula (**$H_0$): $p = p_0$
- **Hipótesis Alternativa (**$H_A$): $p \neq p_0$ (bilateral)
Bajo el supuesto de que $H_0$ es verdadera, el error estándar debe
calcularse utilizando el valor teórico nulo $p_0$ (no el estimado
$\hat{p}$):
$$SE_0 = \sqrt{\frac{p_0(1 - p_0)}{n}}$$
El estadístico de prueba estandarizado es:
$$Z_{\text{calc}} = \frac{\hat{p} - p_0}{\sqrt{\frac{p_0(1 - p_0)}{n}}}$$
Bajo $H_0$, $Z_{\text{calc}} \sim N(0, 1)$.
------------------------------------------------------------------------
## Ejemplo aplicado con Datos Estudiantiles (Informe Subgrupo 1: Prevalencia de somnolencia diurna excesiva)
En la investigación del **Subgrupo 1**, los estudiantes evaluaron la
prevalencia de **Somnolencia Diurna Excesiva (SDE)** mediante la Escala
de Somnolencia de Epworth (ESS \> 10 puntos) en una muestra
representativa de $n = 45$ estudiantes de Medicina de la UJMD.
La literatura médica nacional reporta que la prevalencia histórica de
SDE en población universitaria general es del $30\%$ ($p_0 = 0.30$). Los
estudiantes desean probar si en su muestra la prevalencia de somnolencia
patológica es significativamente superior a la referencia del $30\%$.
### Datos muestrales registrados:
- Tamaño de muestra: $n = 45$
- Casos con Somnolencia Diurna Excesiva (Epworth \> 10): $X = 22$
- Proporción muestral observada:
$\hat{p} = \frac{22}{45} \approx 0.4889$ ($48.89\%$)
### Verificación de condiciones:
$$n p_0 = 45 \times 0.30 = 13.5 \ge 10$$
$$n (1 - p_0) = 45 \times 0.70 = 31.5 \ge 10$$ Se satisfacen las
condiciones para la aproximación normal.
### Planteamiento de hipótesis:
- $H_0: p = 0.30$ (La prevalencia poblacional de SDE en estudiantes de
medicina es del 30%)
- $H_A: p > 0.30$ (La prevalencia es superior al estándar del 30%,
prueba unilateral derecha)
- Nivel de significancia: $\alpha = 0.05$
### Cálculo aritmético manual:
1. **Error estándar nulo (**$SE_0$):
$$SE_0 = \sqrt{\frac{0.30 \times (1 - 0.30)}{45}} = \sqrt{\frac{0.21}{45}} = \sqrt{0.004667} \approx 0.06831$$
2. **Estadístico** $Z$ Observado:
$$Z_{\text{calc}} = \frac{0.4889 - 0.3000}{0.06831} = \frac{0.1889}{0.06831} \approx +2.765$$
3. **Valor** $p$: Consultando la distribución normal estándar para una
cola derecha:
$$p = P(Z \ge 2.765) = 1 - \Phi(2.765) \approx 0.0028$$
4. **Intervalo de Confianza del 95% (Agresti-Coull):**
$$\tilde{n} = 45 + 4 = 49, \quad \tilde{X} = 22 + 2 = 24, \quad \tilde{p} = \frac{24}{49} \approx 0.4898$$
$$SE_{\text{AC}} = \sqrt{\frac{0.4898 \times (1 - 0.4898)}{49}} = \sqrt{\frac{0.2499}{49}} \approx 0.0714$$
$$IC_{95\%} = 0.4898 \pm 1.96 \times (0.0714) = [0.350, \, 0.630]$$
5. **Decisión e Interpretación Bioestadística:** Como el valor
$p = 0.0028 < 0.05$, se rechaza $H_0$. Existe evidencia muestral
estadísticamente significativa para afirmar que la prevalencia de
somnolencia diurna patológica en los estudiantes de Medicina
evaluados ($48.89\%$, $IC_{95\%}: 35.0\% \text{ a } 63.0\%$) supera
de manera alarmante la referencia poblacional del $30\%$.
------------------------------------------------------------------------
### Código ejecutable en RStudio
```{r}
#| label: fig-una-proporcion
#| fig-cap: "Distribución de probabilidad binomial y aproximación normal para la prueba de una proporción (Informe Subgrupo 1)."
#| fig-width: 7
#| fig-height: 4.5
library(tidyverse)
# Datos del Informe 1
n <- 45
x <- 22
p_hat <- x / n
p0 <- 0.30
# Prueba Z de 1 proporción (con y sin corrección de continuidad)
test_prop <- prop.test(x = x, n = n, p = p0, alternative = "greater", correct = FALSE)
print(test_prop)
# Prueba Binomial Exacta
test_binom <- binom.test(x = x, n = n, p = p0, alternative = "greater")
print(test_binom)
# Gráfico pedagógico de la distribución de éxitos bajo H0
x_vals <- 0:45
prob_binom <- dbinom(x_vals, size = n, prob = p0)
df_binom <- tibble(x = x_vals, prob = prob_binom)
ggplot(df_binom, aes(x = x, y = prob)) +
geom_col(aes(fill = x >= 22), color = "white", width = 0.8) +
scale_fill_manual(values = c("#457B9D", "#E63946"), labels = c("Zona no crítica", "Zona crítica (X >= 22)")) +
geom_vline(xintercept = n * p0, color = "#1D3557", linetype = "dashed", size = 1.2) +
annotate("text", x = n * p0, y = 0.12, label = "Esperado bajo H0: E = 13.5", color = "#1D3557", vjust = -1, fontface = "bold") +
annotate("text", x = 22, y = 0.05, label = paste("Observado: X = 22\n(p = ", round(test_binom$p.value, 4), ")", sep = ""),
color = "#E63946", fontface = "bold", hjust = -0.1) +
labs(
title = "Prueba de Hipótesis para la Prevalencia de Somnolencia (Epworth > 10)",
subtitle = "Distribución Binomial bajo H0: p = 0.30 frente al valor muestral observado",
x = "Número de Estudiantes con Somnolencia Diurna Excesiva (x)",
y = "Probabilidad P(X = x)",
fill = "Región"
) +
theme_minimal(base_size = 12) +
theme(legend.position = "bottom")
```
------------------------------------------------------------------------
# Inferencia para la diferencia de dos proporciones
## Fundamentos teóricos y comparación de dos poblaciones independientes
Cuando comparamos dos poblaciones médicas independientes respecto a un
desenlace binario (por ejemplo, presencia de síntomas respiratorios
según exposición al aerosol de vapeo), disponemos de dos muestras
aleatorias:
- **Grupo 1 (Expuestos):** $n_1$ observaciones, $X_1$ éxitos, proporción
$\hat{p}_1 = \frac{X_1}{n_1}$.
- **Grupo 2 (No Expuestos / Control):** $n_2$ observaciones, $X_2$
éxitos, proporción $\hat{p}_2 = \frac{X_2}{n_2}$.
El estimador puntual de la diferencia poblacional $(p_1 - p_2)$ es:
$$\hat{d} = \hat{p}_1 - \hat{p}_2$$
Dado que las dos muestras son independientes:
$$\text{Var}(\hat{p}_1 - \hat{p}_2) = \text{Var}(\hat{p}_1) + \text{Var}(\hat{p}_2) = \frac{p_1(1 - p_1)}{n_1} + \frac{p_2(1 - p_2)}{n_2}$$
------------------------------------------------------------------------
## Intervalo de confianza para $(p_1 - p_2)$ (Estimación No Agrupada)
Para construir el intervalo de confianza, como no asumimos ninguna
hipótesis nula a priori, estimamos la varianza de cada población
utilizando su propia proporción muestral:
$$SE_{\text{diff}} = \sqrt{\frac{\hat{p}_1(1 - \hat{p}_1)}{n_1} + \frac{\hat{p}_2(1 - \hat{p}_2)}{n_2}}$$
El Intervalo de Confianza del $95\%$ se expresa como:
$$IC_{95\%}(p_1 - p_2) = (\hat{p}_1 - \hat{p}_2) \pm 1.96 \times \sqrt{\frac{\hat{p}_1(1 - \hat{p}_1)}{n_1} + \frac{\hat{p}_2(1 - \hat{p}_2)}{n_2}}$$
### La Regla de decisión sobre el Cero ($0$)
- Si el intervalo contiene al valor cero ($0 \in IC_{95\%}$), se
concluye que no existe diferencia estadísticamente significativa entre
las dos proporciones poblacionales.
- Si el intervalo excluye al cero por completo (ambos límites son
positivos o ambos son negativos), se rechaza la hipótesis de igualdad
con $\alpha = 0.05$.
------------------------------------------------------------------------
## Prueba de hipótesis $Z$ con Proporción Combinada (*Pooled Proportion*)
Cuando planteamos la hipótesis nula de igualdad entre ambas
proporciones:
$$H_0: p_1 - p_2 = 0 \iff p_1 = p_2 = p_{\text{común}}$$
Bajo $H_0$, la mejor estimación de la proporción común no es $\hat{p}_1$
ni $\hat{p}_2$, sino la **proporción combinada o ponderada
(**$\hat{p}_{\text{pool}}$):
$$\hat{p}_{\text{pool}} = \frac{X_1 + X_2}{n_1 + n_2}$$
El Error Estándar bajo la hipótesis nula es:
$$SE_{\text{pool}} = \sqrt{\hat{p}_{\text{pool}}(1 - \hat{p}_{\text{pool}}) \left(\frac{1}{n_1} + \frac{1}{n_2}\right)}$$
El estadístico de prueba $Z$ es:
$$Z_{\text{calc}} = \frac{\hat{p}_1 - \hat{p}_2}{\sqrt{\hat{p}_{\text{pool}}(1 - \hat{p}_{\text{pool}}) \left(\frac{1}{n_1} + \frac{1}{n_2}\right)}}$$
------------------------------------------------------------------------
## Medidas epidemiológicas de asociación: Riesgo Relativo y Razón de Momios (*Odds Ratio*)
En los estudios clínicos de ciencias de la salud, además de la
diferencia absoluta de proporciones (Riesgo Atribuible o Reducción
Absoluta del Riesgo), es estándar reportar medidas relativas de
asociación a partir de una tabla de contingencia $2 \times 2$:
| Grupo / Condición | Con Evento ($+$) | Sin Evento ($-$) | Total |
|:---------------------|:----------------:|:----------------:|:-------------:|
| **Expuestos (1)** | $a$ | $b$ | $n_1 = a + b$ |
| **No Expuestos (2)** | $c$ | $d$ | $n_2 = c + d$ |
| **Total** | $a + c$ | $b + d$ | $N$ |
### 1. Riesgo Relativo ($RR$)
Utilizado principalmente en cohortes y ensayos clínicos prospectivos:
$$RR = \frac{\hat{p}_1}{\hat{p}_2} = \frac{a / (a + b)}{c / (c + d)}$$
### 2. Razón de Momios u *Odds Ratio* ($OR$)
Medida estándar en estudios transversales y casos y controles:
$$\text{Odds}_1 = \frac{a}{b}, \quad \text{Odds}_2 = \frac{c}{d} \implies OR = \frac{a / b}{c / d} = \frac{a \cdot d}{b \cdot c}$$
El Error Estándar del $\ln(OR)$ se calcula mediante la fórmula de Woolf:
$$SE_{\ln(OR)} = \sqrt{\frac{1}{a} + \frac{1}{b} + \frac{1}{c} + \frac{1}{d}}$$
$$IC_{95\%}(OR) = \exp\left(\ln(OR) \pm 1.96 \times SE_{\ln(OR)}\right)$$
------------------------------------------------------------------------
## Ejemplo aplicado con datos estudiantiles (Informe Subgrupo 3: Vapeo y síntomas respiratorios)
En el proyecto del **Subgrupo 3**, se evaluó la relación entre el uso de
cigarrillos electrónicos (vapeadores) y la presencia de síntomas
respiratorios crónicos/irritativos (tos matutina o disnea leve) en una
muestra de $N = 60$ estudiantes universitarios.
### Datos muestrales registrados:
- **Grupo 1 (Usuarios de vapeador):** $n_1 = 28$, presentan síntomas:
$X_1 = 17$ ($\hat{p}_1 = \frac{17}{28} \approx 0.6071$)
- **Grupo 2 (No usuarios / Control):** $n_2 = 32$, presentan síntomas:
$X_2 = 8$ ($\hat{p}_2 = \frac{8}{32} = 0.2500$)
### Planteamiento de hipótesis:
- $H_0: p_1 - p_2 = 0$ (La prevalencia de síntomas respiratorios es
idéntica en ambos grupos)
- $H_A: p_1 - p_2 \neq 0$ (Existe diferencia en la prevalencia de
síntomas)
- Nivel de significancia: $\alpha = 0.05$
### Cálculo aritmético manual:
1. **Diferencia de proporciones muestrales:**
$$\hat{d} = \hat{p}_1 - \hat{p}_2 = 0.6071 - 0.2500 = 0.3571 \quad (35.71\%)$$
2. **Proporción combinada (**$\hat{p}_{\text{pool}}$):
$$\hat{p}_{\text{pool}} = \frac{17 + 8}{28 + 32} = \frac{25}{60} \approx 0.4167$$
3. **Error estándar combinado (**$SE_{\text{pool}}$):
$$SE_{\text{pool}} = \sqrt{0.4167 \times (1 - 0.4167) \left(\frac{1}{28} + \frac{1}{32}\right)} = \sqrt{0.2431 \times (0.03571 + 0.03125)} = \sqrt{0.2431 \times 0.06696} \approx 0.1276$$
4. **Estadístico** $Z$ calculado:
$$Z_{\text{calc}} = \frac{0.3571}{0.1276} \approx +2.798$$
5. **Valor** $p$ bilateral:
$$p = 2 \times P(Z \ge 2.798) = 2 \times (1 - 0.9974) \approx 0.0051$$
6. **Razón de Momios (**$OR$):
$$a = 17, \quad b = 11, \quad c = 8, \quad d = 24$$
$$OR = \frac{17 \times 24}{11 \times 8} = \frac{408}{88} \approx 4.636$$
$$SE_{\ln(OR)} = \sqrt{\frac{1}{17} + \frac{1}{11} + \frac{1}{8} + \frac{1}{24}} = \sqrt{0.0588 + 0.0909 + 0.1250 + 0.0417} = \sqrt{0.3164} \approx 0.5625$$
$$IC_{95\%}(OR) = \exp\left(\ln(4.636) \pm 1.96 \times 0.5625\right) = \exp(1.5339 \pm 1.1025) = [1.539, \, 13.96]$$
7. **Decisión e interpretación:** Con $p = 0.0051 < 0.05$ y un
$IC_{95\%}$ del $OR$ que excluye totalmente la unidad
($1.54 \text{ a } 13.96$), se concluye que los estudiantes que
utilizan vapeadores presentan una probabilidad sustancialmente mayor
(más de 4.6 veces las *odds*) de reportar síntomas respiratorios
irritativos en comparación con el grupo no usuario.
------------------------------------------------------------------------
### Código ejecutable en RStudio
```{r}
#| label: fig-dos-proporciones
#| fig-cap: "Comparación de la prevalencia de síntomas respiratorios según hábito de vapeo con IC del 95%."
#| fig-width: 7
#| fig-height: 4.5
# Matriz 2x2: Filas = Grupo (Vapeo, Control); Columnas = Síntomas (Sí, No)
tabla_2x2 <- matrix(c(17, 11, 8, 24), nrow = 2, byrow = TRUE)
colnames(tabla_2x2) <- c("Con_Sintomas", "Sin_Sintomas")
rownames(tabla_2x2) <- c("Usuario_Vapeo", "No_Usuario")
print(tabla_2x2)
# Prueba de dos proporciones en R
test_2prop <- prop.test(tabla_2x2, correct = FALSE)
print(test_2prop)
# Visualización gráfica con intervalos de confianza de proporciones
df_grafico <- tibble(
Grupo = c("Usuarios Vapeo", "No Usuarios"),
n = c(28, 32),
Exitos = c(17, 8),
Proporcion = Exitos / n,
SE = sqrt(Proporcion * (1 - Proporcion) / n),
LI = Proporcion - 1.96 * SE,
LS = Proporcion + 1.96 * SE
)
ggplot(df_grafico, aes(x = Grupo, y = Proporcion, fill = Grupo)) +
geom_col(alpha = 0.7, width = 0.5, color = "white") +
geom_errorbar(aes(ymin = LI, ymax = LS), width = 0.15, size = 1.1, color = "#1D3557") +
geom_text(aes(label = paste(round(Proporcion * 100, 1), "%")), vjust = -1.8, fontface = "bold", size = 4) +
scale_fill_manual(values = c("#A8DADC", "#E63946")) +
scale_y_continuous(labels = scales::percent_format(), limits = c(0, 0.9)) +
labs(
title = "Prevalencia de Síntomas Respiratorios según Exposición a Vapeo",
subtitle = paste("Diferencia = +35.7% (IC 95%: ", round(test_2prop$conf.int[1]*100, 1),
"% a ", round(test_2prop$conf.int[2]*100, 1), "%, p = 0.0051)", sep = ""),
x = "Grupo de Estudio",
y = "Proporción de Estudiantes con Síntomas"
) +
theme_minimal(base_size = 12) +
theme(legend.position = "none")
```
------------------------------------------------------------------------
# Prueba de Chi-Cuadrado ($\chi^2$) de Bondad de Ajuste (*Goodness-of-Fit*)
## Concepto teórico y modelo multinomial
Cuando una variable categórica posee **tres o más niveles mutuamente
excluyentes (**$k \ge 3$), el objetivo bioestadístico consiste
frecuentemente en verificar si los conteos observados en una sola
muestra ($O_1, O_2, \dots, O_k$) concuerdan o "se ajustan" a una
distribución teórica de probabilidades especificada a priori
($p_{0,1}, p_{0,2}, \dots, p_{0,k}$, donde $\sum p_{0,j} = 1$).
### Hipótesis del Test de Bondad de Ajuste:
- $H_0: p_1 = p_{0,1}, \, p_2 = p_{0,2}, \, \dots, \, p_k = p_{0,k}$
(Los datos provienen de la distribución hipotética especificada).
- $H_A$: Al menos una de las proporciones poblacionales difiere de la
especificada en $H_0$.
### Cálculo de las frecuencias esperadas ($E_j$)
Si la muestra tiene un tamaño total $N = \sum_{j=1}^k O_j$, el número de
casos que esperaríamos observar en cada categoría $j$ bajo la hipótesis
nula es:
$$E_j = N \times p_{0,j}$$
------------------------------------------------------------------------
## El estadístico de prueba de Karl Pearson
Karl Pearson demostró que la discrepancia estandarizada entre las
frecuencias observadas ($O_j$) y las esperadas ($E_j$) sigue
asintóticamente una **distribución Chi-cuadrado (**$\chi^2$):
$$\chi^2_{\text{calc}} = \sum_{j=1}^k \frac{(O_j - E_j)^2}{E_j}$$
### Grados de libertad ($df$):
Dado que la suma de las frecuencias esperadas está restringida al gran
total ($\sum E_j = N$), se pierde 1 grado de libertad:
$$df = k - 1$$
### Propiedades fundamentales de la distribución $\chi^2$:
1. No puede tomar valores negativos ($\chi^2 \ge 0$).
2. Es asimétrica positiva (sesgada a la derecha).
3. A medida que los grados de libertad aumentan ($df > 30$), la curva
se aproxima gradualmente a una distribución normal.
4. La prueba es estrictamente de **cola derecha**, ya que discrepancias
mayores entre lo observado y lo esperado arrojan valores de $\chi^2$
más elevados.
------------------------------------------------------------------------
## Criterios de validez de Cochran para la Prueba $\chi^2$
Para que la aproximación a la distribución $\chi^2$ continua sea
válida: 1. Ninguna celda esperada debe ser menor a 1 ($E_j \ge 1$ para
todo $j$). 2. Al menos el $80\%$ de las celdas esperadas deben tener una
frecuencia de 5 o más ($E_j \ge 5$).
------------------------------------------------------------------------
## Ejemplo aplicado con datos estudiantiles (Informe Subgrupo 2: Distribución del Cronotipo Circadiano)
En el proyecto del **Subgrupo 2**, se evaluó el cronotipo circadiano
(ritmo biológico de sueño-vigilia) de $N = 90$ estudiantes de la
Facultad de Ciencias de la Salud, clasificándolos en: *Matutino
(alondras)*, *Intermedio* y *Vespertino (búhos)*.
Según los datos de referencia poblacional en jóvenes adultos
universitarios, la distribución esperada es: - Matutino: $20\%$
($p_{0,1} = 0.20$) - Intermedio: $50\%$ ($p_{0,2} = 0.50$) - Vespertino:
$30\%$ ($p_{0,3} = 0.30$)
Los investigadores desean comprobar si la muestra de estudiantes de
Medicina presenta una alteración en su ritmo circadiano que la desvíe
significativamente de la norma teórica.
### Datos muestrales registrados:
- Total: $N = 90$
- Observados:
- Matutino: $O_1 = 10$ estudiantes
- Intermedio: $O_2 = 36$ estudiantes
- Vespertino: $O_3 = 44$ estudiantes
### Frecuencias esperadas bajo $H_0$:
- $E_1 = 90 \times 0.20 = 18.0$
- $E_2 = 90 \times 0.50 = 45.0$
- $E_3 = 90 \times 0.30 = 27.0$
*(Verificación de Cochran: Todas las* $E_j \ge 18 \ge 5$. Requisito
plenamente cumplido).
### Cálculo manual del estadístico $\chi^2$:
| Categoría | $O_j$ | $E_j$ | $O_j - E_j$ | $(O_j - E_j)^2$ | $\frac{(O_j - E_j)^2}{E_j}$ |
|:-----------|:----------:|:----------:|:----------:|:----------:|:----------:|
| **Matutino** | 10 | 18.0 | $-8.0$ | 64.0 | $\frac{64.0}{18.0} \approx 3.556$ |
| **Intermedio** | 36 | 45.0 | $-9.0$ | 81.0 | $\frac{81.0}{45.0} = 1.800$ |
| **Vespertino** | 44 | 27.0 | $+17.0$ | 289.0 | $\frac{289.0}{27.0} \approx 10.704$ |
| **Total** | **90** | **90.0** | **0.0** | — | $\chi^2_{\text{calc}} \approx 16.060$ |
### Grados de libertad y decisión:
- $df = 3 - 1 = 2$.
- Valor crítico de $\chi^2$ con $df = 2$ y $\alpha = 0.05$:
$\chi^2_{\text{crit}} = 5.991$.
- Valor $p$: $P(\chi^2_2 \ge 16.060) \approx 0.0003$.
**Conclusión médica:** Como $\chi^2_{\text{calc}} = 16.060 > 5.991$
($p = 0.0003$), se rechaza categóricamente la hipótesis nula de bondad
de ajuste. Los estudiantes de Medicina difieren sustancialmente de la
distribución circadiana general, exhibiendo una notable hipertrofia del
cronotipo vespertino ($48.9\%$ observado vs $30.0\%$ esperado), lo cual
concuerda con las demandas de estudio nocturno y privación de sueño
descritas en su protocolo.
------------------------------------------------------------------------
### Código ejecutable en RStudio
```{r}
#| label: fig-chi-bondad-ajuste
#| fig-cap: "Comparación entre frecuencias observadas y esperadas para el cronotipo circadiano (Informe Subgrupo 2)."
#| fig-width: 7
#| fig-height: 4.5
# Vectores de conteos y probabilidades teóricas
observados <- c(Matutino = 10, Intermedio = 36, Vespertino = 44)
prob_teoricas <- c(0.20, 0.50, 0.30)
# Prueba Chi-cuadrado de Bondad de Ajuste en R
test_gof <- chisq.test(x = observados, p = prob_teoricas)
print(test_gof)
# Tabla visual de comparación
df_gof <- tibble(
Cronotipo = names(observados),
Observado = observados,
Esperado = sum(observados) * prob_teoricas
) %>%
pivot_longer(cols = c(Observado, Esperado), names_to = "Tipo", values_to = "Frecuencia")
ggplot(df_gof, aes(x = Cronotipo, y = Frecuencia, fill = Tipo)) +
geom_col(position = "dodge", alpha = 0.85, width = 0.6) +
scale_fill_manual(values = c("#457B9D", "#E63946")) +
geom_text(aes(label = Frecuencia), position = position_dodge(0.6), vjust = -0.5, fontface = "bold") +
labs(
title = "Prueba de Bondad de Ajuste: Distribución Circadiana en Medicina",
subtitle = paste("Chi-cuadrado =", round(test_gof$statistic, 3),
", df = 2, p =", format.pval(test_gof$p.value, digits = 3)),
x = "Cronotipo Circadiano",
y = "Número de Estudiantes (Frecuencia)"
) +
theme_minimal(base_size = 12) +
theme(legend.position = "bottom")
```
------------------------------------------------------------------------
# Inferencia para tablas de contingencia ($r \times c$): Independencia y homogeneidad
## Estructura general de una Tabla de Contingencia
Cuando clasificamos a una muestra de individuos de forma simultánea
según dos variables cualitativas—una en filas con $r$ niveles y otra en
columnas con $c$ niveles—generamos una **tabla de contingencia
bidimensional** $r \times c$:
| Fila / Columna | Columna 1 | Columna 2 | $\dots$ | Columna $c$ | Total Fila |
|:------------------|:---------:|:---------:|:--------:|:-----------:|:----------:|
| **Fila 1** | $O_{11}$ | $O_{12}$ | $\dots$ | $O_{1c}$ | $R_1$ |
| **Fila 2** | $O_{21}$ | $O_{22}$ | $\dots$ | $O_{2c}$ | $R_2$ |
| $\vdots$ | $\vdots$ | $\vdots$ | $\ddots$ | $\vdots$ | $\vdots$ |
| **Fila** $r$ | $O_{r1}$ | $O_{r2}$ | $\dots$ | $O_{rc}$ | $R_r$ |
| **Total Columna** | $C_1$ | $C_2$ | $\dots$ | $C_c$ | $N$ |
### Distinción conceptual: Independencia vs. Homogeneidad
- **Prueba de Independencia:** Se extrae una **única muestra aleatoria**
de una población y se clasifican los sujetos respecto a dos variables
(ej. Nivel de actividad física y Estado nutricional). Se contrasta si
ambas variables están estadísticamente asociadas.
- **Prueba de Homogeneidad:** Se extraen **muestras independientes
predefinidas** de $r$ subpoblaciones (ej. Estudiantes de 1º, 3º y 5º
año) y se evalúa si la distribución de una variable respuesta es
idéntica o cambia entre subpoblaciones.
- *Propiedad matemática:* La mecánica algebraica de cálculo y el
estadístico $\chi^2$ son exactamente idénticos en ambos contrastes.
------------------------------------------------------------------------
## Cálculo de frecuencias esperadas bajo independencia
Por la regla de multiplicación de probabilidades para sucesos
independientes, $P(A \cap B) = P(A) \times P(B)$. La probabilidad
esperada de que una observación caiga en la celda $(i, j)$ es
$\frac{R_i}{N} \times \frac{C_j}{N}$. Multiplicando por el gran total
$N$, obtenemos la frecuencia esperada:
$$E_{ij} = N \times \left(\frac{R_i}{N}\right) \times \left(\frac{C_j}{N}\right) = \frac{R_i \times C_j}{N}$$
$$\text{Frecuencia Esperada} = \frac{(\text{Total Fila } i) \times (\text{Total Columna } j)}{\text{Gran Total } N}$$
------------------------------------------------------------------------
## Estadístico $\chi^2$ y grados de libertad
El estadístico de prueba es la sumatoria de las discrepancias al
cuadrado sobre las $r \times c$ celdas de la tabla:
$$\chi^2_{\text{calc}} = \sum_{i=1}^r \sum_{j=1}^c \frac{(O_{ij} - E_{ij})^2}{E_{ij}}$$
### Grados de libertad:
En una tabla con márgenes fijos, una vez que llenamos $(r - 1)$ filas y
$(c - 1)$ columnas, las celdas restantes quedan automáticamente
determinadas:
$$df = (r - 1) \times (c - 1)$$
------------------------------------------------------------------------
## Análisis de residuos estandarizados y tamaño del efecto ($V$ de Cramér)
Cuando la prueba $\chi^2$ resulta estadísticamente significativa
($p < 0.05$), la prueba ómnibus solo nos indica que las variables están
asociadas, pero no revela **dónde radican las desviaciones
específicas**. Para desentrañar la fuente de la significancia, se
evalúan los **Residuos Ajustados de Haberman**:
$$r_{ij} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij} \left(1 - \frac{R_i}{N}\right) \left(1 - \frac{C_j}{N}\right)}}$$
Un residuo ajustado $|r_{ij}| > 1.96$ indica una desviación
estadísticamente significativa ($\alpha = 0.05$) entre lo observado y lo
esperado para esa celda en particular.
### Medida de magnitud del efecto: $V$ de Cramér
Para cuantificar la fuerza de la asociación en tablas $r \times c$, se
calcula la $V$ de Cramér:
$$V = \sqrt{\frac{\chi^2}{N \times \min(r - 1, \, c - 1)}}$$
Criterio de interpretación: $V \approx 0.10$ asociación débil,
$V \approx 0.30$ asociación moderada, $V \ge 0.50$ asociación fuerte.
------------------------------------------------------------------------
## Ejemplo aplicado con datos estudiantiles (Informe Subgrupo 7: Severidad de Ansiedad GAD-7 según Ciclo Académico)
En la investigación del **Subgrupo 7**, los autores clasificaron a
$N = 100$ estudiantes de Medicina según su ciclo de formación clínica
(**Preclínico: 1º-2º año**, **Básico-Intermedio: 3º año**,
**Clínico-Hospitalario: 4º-5º año**) y su nivel de ansiedad según la
escala GAD-7 (**Leve**, **Moderada**, **Severa**).
### Tabla de contingencia observada ($3 \times 3$):
| Ciclo Académico | Ansiedad Leve | Ansiedad Moderada | Ansiedad Severa | Total Fila ($R_i$) |
|:--------------|:-------------:|:-------------:|:-------------:|:-------------:|
| **Preclínica** | 22 | 10 | 4 | **36** |
| **Básico** | 12 | 14 | 8 | **34** |
| **Clínica** | 6 | 11 | 13 | **30** |
| **Total Columna (**$C_j$) | **40** | **35** | **25** | $N = 100$ |
### Frecuencias esperadas ($E_{ij} = \frac{R_i \times C_j}{100}$):
- $E_{11} = \frac{36 \times 40}{100} = 14.4$ ;
$E_{12} = \frac{36 \times 35}{100} = 12.6$ ;
$E_{13} = \frac{36 \times 25}{100} = 9.0$
- $E_{21} = \frac{34 \times 40}{100} = 13.6$ ;
$E_{22} = \frac{34 \times 35}{100} = 11.9$ ;
$E_{23} = \frac{34 \times 25}{100} = 8.5$
- $E_{31} = \frac{30 \times 40}{100} = 12.0$ ;
$E_{32} = \frac{30 \times 35}{100} = 10.5$ ;
$E_{33} = \frac{30 \times 25}{100} = 7.5$
*(Todas las frecuencias esperadas son* $\ge 7.5 > 5$, cumpliendo
plenamente con la regla de Cochran).
### Cálculo del estadístico $\chi^2$:
$$\chi^2 = \frac{(22 - 14.4)^2}{14.4} + \frac{(10 - 12.6)^2}{12.6} + \frac{(4 - 9.0)^2}{9.0} + \dots + \frac{(13 - 7.5)^2}{7.5}$$
$$\chi^2 = 4.011 + 0.537 + 2.778 + 0.188 + 0.371 + 0.029 + 3.000 + 0.024 + 4.033 \approx 14.971$$
### Grados de libertad y decisión:
$$df = (3 - 1) \times (3 - 1) = 2 \times 2 = 4$$ - Con $df = 4$ y
$\alpha = 0.05$, el valor crítico tabulado es
$\chi^2_{\text{crit}} = 9.488$. - Valor $p$:
$P(\chi^2_4 \ge 14.971) \approx 0.0048$. - Tamaño del efecto:
$V = \sqrt{\frac{14.971}{100 \times \min(2, 2)}} = \sqrt{\frac{14.971}{200}} = \sqrt{0.07486} \approx 0.274$
(asociación moderada).
**Interpretación Biometrológica:** Como $p = 0.0048 < 0.05$, existe una
asociación altamente significativa entre el ciclo académico y la
gravedad de los síntomas de ansiedad. Los residuos estandarizados
demuestran que los estudiantes del ciclo preclínico se concentran
significativamente en la categoría de ansiedad leve ($O = 22$ vs
$E = 14.4$), mientras que los estudiantes del ciclo clínico-hospitalario
presentan un exceso significativo de ansiedad severa ($O = 13$ vs
$E = 7.5$), reflejando el impacto de la carga asistencial hospitalaria.
------------------------------------------------------------------------
### Código ejecutable en RStudio
```{r}
#| label: fig-chi-contingencia
#| fig-cap: "Distribución porcentual de niveles de ansiedad GAD-7 según ciclo formativo (Informe Subgrupo 7)."
#| fig-width: 7.5
#| fig-height: 4.8
# Matriz 3x3
tabla_ansiedad <- matrix(
c(22, 10, 4,
12, 14, 8,
6, 11, 13),
nrow = 3, byrow = TRUE
)
colnames(tabla_ansiedad) <- c("Leve", "Moderada", "Severa")
rownames(tabla_ansiedad) <- c("Preclinica", "Basico", "Clinica")
# Prueba Chi-cuadrado en R
test_chi <- chisq.test(tabla_ansiedad)
print(test_chi)
# Residuos ajustados de Pearson
print("Residuos de Pearson (desviaciones por celda):")
round(test_chi$residuals, 2)
# Gráfico de barras apiladas al 100%
df_contingencia <- as.data.frame(as.table(tabla_ansiedad))
colnames(df_contingencia) <- c("Ciclo", "Ansiedad", "Conteo")
ggplot(df_contingencia, aes(x = Ciclo, y = Conteo, fill = Ansiedad)) +
geom_bar(position = "fill", stat = "identity", color = "white", width = 0.6) +
scale_y_continuous(labels = scales::percent_format()) +
scale_fill_manual(values = c("#2A9D8F", "#E9C46A", "#E63946")) +
labs(
title = "Gravedad de Ansiedad GAD-7 según Ciclo de Carrera Médica",
subtitle = paste("Prueba Chi-cuadrado: X2 = ", round(test_chi$statistic, 3),
", df = 4, p = 0.0048 (V de Cramér = 0.27)", sep = ""),
x = "Ciclo Formativo",
y = "Porcentaje dentro del Ciclo",
fill = "Nivel GAD-7"
) +
theme_minimal(base_size = 12) +
theme(legend.position = "right")
```
------------------------------------------------------------------------
# Test Exacto de Fisher (muestras pequeñas en Tablas $2 \times 2$)
## Limitación de la Prueba Asintótica de Chi-Cuadrado
La validez del estadístico $\chi^2$ descansa en la premisa asintótica de
que la muestra es lo suficientemente grande como para que la
distribución de frecuencias discretas converja a una función de densidad
continua.
Sin embargo, en investigación clínica piloto, en estudios de
enfermedades raras o cuando los eventos adversos son infrecuentes, es
habitual encontrar celdas con **frecuencias esperadas menores a 5
(**$E_{ij} < 5$) o incluso celdas observadas iguales a cero. En estos
casos, la prueba $\chi^2$ de Pearson arroja valores $p$ distorsionados
(a menudo conservadores en exceso o con tasas de error Tipo I
descontroladas).
Para solventar esta limitación, Sir Ronald Fisher desarrolló en 1934 el
**Test Exacto de Fisher**, el cual no depende de ninguna aproximación
continua, sino que calcula la **probabilidad exacta combinatoria** del
conjunto de datos observado.
------------------------------------------------------------------------
## Modelo matemático: la distribución hipergeométrica
Fisher propuso condicionar el análisis asumiendo que los **totales
marginales de la tabla** $2 \times 2$ están fijos ($n_1 = a + b$,
$n_2 = c + d$, $m_1 = a + c$, $m_2 = b + d$, y el total $N$):
| Condición / Exposición | Desenlace Positivo ($+$) | Desenlace Negativo ($-$) | Total Fila |
|:-----------------|:----------------:|:----------------:|:----------------:|
| **Tratamiento / Expuestos** | $a$ | $b$ | $a + b$ |
| **Control / No Expuestos** | $c$ | $d$ | $c + d$ |
| **Total Columna** | $a + c$ | $b + d$ | $N$ |
Bajo la hipótesis nula de independencia ($H_0$: no hay asociación entre
la exposición y el desenlace), la probabilidad de observar exactamente
la frecuencia $a$ en la primera celda sigue una **distribución
hipergeométrica**:
$$P(a) = \frac{\binom{a + b}{a} \binom{c + d}{c}}{\binom{N}{a + c}} = \frac{(a + b)! \, (c + d)! \, (a + c)! \, (b + d)!}{N! \, a! \, b! \, c! \, d!}$$
### Cálculo del valor $p$ exacto
El valor $p$ bilateral de Fisher se obtiene sumando las probabilidades
de la tabla observada y de todas las configuraciones de tablas
alternativas posibles (con los mismos totales marginales) cuya
probabilidad sea **menor o igual** a la observada:
$$p_{\text{Fisher}} = \sum_{P(\text{tabla}) \le P(\text{tabla}_{\text{obs}})} P(\text{tabla})$$
------------------------------------------------------------------------
## Ejemplo aplicado con datos estudiantiles (Informe Subgrupo 11: Taquicardia Paroxística y Bebidas Energizantes)
En la investigación del **Subgrupo 11**, se evaluó una cohorte clínica
pequeña de $N = 20$ estudiantes de internado que acudieron a consulta
médica por episodios agudos de taquicardia/palpitaciones, investigando
si consumían dosis elevadas de bebidas energizantes ($\ge 2$ latas al
día).
### Tabla de contingencia $2 \times 2$ registrada:
| Consumo de Energizantes | Episodio de Taquicardia ($+$) | Sin Taquicardia ($-$) | Total Fila |
|:-----------------|:----------------:|:----------------:|:----------------:|
| **Consumo Alto (**$\ge 2$ latas) | $a = 6$ | $b = 2$ | **8** |
| **Consumo Nulo o Ocasional** | $c = 1$ | $d = 11$ | **12** |
| **Total Columna** | **7** | **13** | $N = 20$ |
### Verificación de frecuencias esperadas:
- $E_{11} = \frac{8 \times 7}{20} = 2.8$
- $E_{21} = \frac{12 \times 7}{20} = 4.2$
*(Dos celdas poseen frecuencias esperadas menores a 5. La prueba
Chi-cuadrado no es aplicable; se requiere estrictamente el Test Exacto
de Fisher).*
### Cálculo aritmético manual de la probabilidad hipergeométrica:
$$P(a = 6) = \frac{8! \times 12! \times 7! \times 13!}{20! \times 6! \times 2! \times 1! \times 11!}$$
Evaluando los factoriales:
$$P(a = 6) = \frac{\binom{8}{6} \binom{12}{1}}{\binom{20}{7}} = \frac{28 \times 12}{77,520} = \frac{336}{77,520} \approx 0.00433$$
Para la tabla más extrema posible ($a = 7, b = 1, c = 0, d = 12$):
$$P(a = 7) = \frac{\binom{8}{7} \binom{12}{0}}{\binom{20}{7}} = \frac{8 \times 1}{77,520} = \frac{8}{77,520} \approx 0.00010$$
Sumando las probabilidades de la cola derecha y su contraparte simétrica
bilateral, se obtiene un valor $p \approx 0.0088$.
------------------------------------------------------------------------
### Código ejecutable en RStudio
```{r}
#| label: tbl-fisher-exact
#| tbl-cap: "Test Exacto de Fisher para eventos clínicos infrecuentes (Informe Subgrupo 11)."
# Matriz 2x2 con muestras pequeñas
tabla_fisher <- matrix(c(6, 2, 1, 11), nrow = 2, byrow = TRUE)
colnames(tabla_fisher) <- c("Taquicardia_Si", "Taquicardia_No")
rownames(tabla_fisher) <- c("Alto_Consumo", "Bajo_Consumo")
print(tabla_fisher)
# Ejecución del Test Exacto de Fisher
test_f <- fisher.test(tabla_fisher)
print(test_f)
```
**Interpretación Biometrológica:** El valor $p = 0.0088$ confirma una
asociación estadísticamente significativa entre el consumo elevado de
bebidas energizantes y la aparición de episodios de taquicardia aguda.
La Razón de Momios (*Odds Ratio*) estimada es de $OR = 23.95$
($IC_{95\%}: 1.83 \text{ a } 1205.8$), indicando un incremento dramático
del riesgo en sujetos expuestos.
------------------------------------------------------------------------
# Métodos de remuestreo y permutaciones para datos categóricos
## Principios de la inferencia libre de distribución por permutación
Los contrastes tradicionales de proporciones y Chi-cuadrado dependen de
supuestos distribucionales asintóticos ($N \to \infty$). Sin embargo, la
computación moderna permite abordar la inferencia para datos categóricos
desde una perspectiva no paramétrica intuitiva y libre de supuestos:
**el Test de Permutación**.
### Lógica de la prueba de permutación:
1. **Hipótesis nula:** Las dos variables cualitativas son completamente
independientes; es decir, la pertenencia al Grupo 1 o Grupo 2 no
tiene ningún efecto sobre la probabilidad del desenlace.
2. **Aleatorización de etiquetas:** Si $H_0$ es cierta, podemos
desacoplar la variable predictora de la variable desenlace.
Congelamos la columna de resultados y barajamos aleatoriamente
(*permutación*) las etiquetas del grupo.
3. **Distribución nula empírica:** Repetimos este barajado un gran
número de veces (por ejemplo, $B = 10,000$ réplicas de Monte Carlo),
calculando en cada iteración la diferencia de proporciones simulada
($\hat{d}^* = \hat{p}_1^* - \hat{p}_2^*$).
4. **Cálculo del valor** $p$ Empírico:
$$p_{\text{perm}} = \frac{\sum_{b=1}^B I(|\hat{d}^*_b| \ge |\hat{d}_{\text{obs}}|) + 1}{B + 1}$$
------------------------------------------------------------------------
## Ejemplo aplicado en RStudio con datos de remuestreo
Implementamos el test de permutación utilizando los datos del Informe
del Subgrupo 3 (Vapeo y Síntomas Respiratorios,
$n_1 = 28, n_2 = 32, \hat{d}_{\text{obs}} = 0.3571$).
```{r}
#| label: fig-permutacion-categorica
#| fig-cap: "Distribución nula empírica generada por 10,000 permutaciones para la diferencia de dos proporciones."
#| fig-width: 7
#| fig-height: 4.5
set.seed(2026)
# Creación de la base de datos binaria individual
datos_pacientes <- tibble(
grupo = c(rep("Vapeador", 28), rep("Control", 32)),
sintomas = c(rep(1, 17), rep(0, 11), rep(1, 8), rep(0, 24))
)
diferencia_observada <- mean(datos_pacientes$sintomas[datos_pacientes$grupo == "Vapeador"]) -
mean(datos_pacientes$sintomas[datos_pacientes$grupo == "Control"])
# Simulación de Permutación (10,000 réplicas)
B <- 10000
diferencias_nulas <- numeric(B)
for(i in 1:B) {
# Barajar las etiquetas del grupo
grupos_permutados <- sample(datos_pacientes$grupo)
p1_sim <- mean(datos_pacientes$sintomas[grupos_permutados == "Vapeador"])
p2_sim <- mean(datos_pacientes$sintomas[grupos_permutados == "Control"])
diferencias_nulas[i] <- p1_sim - p2_sim
}
# Cálculo del p-valor empírico bilateral
p_valor_perm <- (sum(abs(diferencias_nulas) >= abs(diferencia_observada)) + 1) / (B + 1)
# Visualización de la distribución nula empírica
df_perm <- tibble(diferencia = diferencias_nulas)
ggplot(df_perm, aes(x = diferencia)) +
geom_histogram(bins = 30, fill = "#457B9D", color = "white", alpha = 0.75) +
geom_vline(xintercept = c(-diferencia_observada, diferencia_observada),
color = "#E63946", linetype = "dashed", size = 1.3) +
annotate("text", x = diferencia_observada, y = 1200,
label = paste("Observado = +0.357\n(p_perm = ", round(p_valor_perm, 4), ")", sep = ""),
color = "#E63946", hjust = -0.1, fontface = "bold") +
labs(
title = "Test de Permutación para la Diferencia de Dos Proporciones",
subtitle = "10,000 permutaciones aleatorias bajo la hipótesis nula de independencia",
x = "Diferencia de Proporciones Simulada (p1* - p2*)",
y = "Frecuencia de Réplicas"
) +
theme_minimal(base_size = 12)
```
------------------------------------------------------------------------
# Resumen metodológico y árbol de decisión para datos categóricos
Para orientar la elección del procedimiento bioestadístico en
investigaciones médicas con variables cualitativas, se presenta el
siguiente cuadro integrador:
| Pregunta de Investigación | Tipo de Variable y Grupos | Prueba Estadística Principal | Supuestos / Criterios | Función en R |
|:--------------|:--------------|:--------------|:--------------|:--------------|
| **¿La proporción de un grupo difiere de un estándar clínico?** | 1 variable dicotómica ($X = 0, 1$), 1 muestra | **Prueba** $Z$ de 1 Proporción (o Binomial Exacta) | $n p_0 \ge 10$ y $n(1 - p_0) \ge 10$ | `prop.test()` o `binom.test()` |
| **¿Existe diferencia en el riesgo entre dos cohortes?** | 1 factor dicotómico ($2$ grupos), 1 desenlace binario | **Prueba** $Z$ de 2 Proporciones (o $\chi^2$ $2 \times 2$) | Éxitos y fracasos $\ge 5$ en cada grupo | `prop.test(matrix)` |
| **¿Los datos observados siguen un modelo multinomial teórico?** | 1 variable cualitativa con $k \ge 3$ niveles, 1 muestra | **Prueba** $\chi^2$ de Bondad de Ajuste | $E_j \ge 1$ y $\ge 80\%$ con $E_j \ge 5$ ($df = k - 1$) | `chisq.test(x, p)` |
| **¿Están asociadas dos variables cualitativas en una población?** | 2 variables categóricas en tabla $r \times c$ ($N$ grande) | **Prueba** $\chi^2$ de Independencia de Pearson | Todas las $E_{ij} \ge 1$ y $80\%$ con $E_{ij} \ge 5$ ($df = (r-1)(c-1)$) | `chisq.test(table)` |
| **¿Hay asociación en una tabla** $2 \times 2$ con frecuencias bajas? | 2 variables dicotómicas con celdas $E_{ij} < 5$ | **Test Exacto de Fisher** | Muestras pequeñas, márgenes fijos (distribución hipergeométrica) | `fisher.test(table)` |
| **¿Desea inferencia libre de distribución sin supuestos asintóticos?** | Cualquier tabla categórica o diferencia de proporciones | **Test de Permutación / Remuestreo** | Muestreo representativo, capacidad computacional | `sample()` / Bucles de simulación |
------------------------------------------------------------------------
# Ejercicios de autoevaluación y aplicación clínica
### Ejercicio 8.1 (Inferencia de una proporción)
En una muestra aleatoria de $n = 80$ médicos residentes, $52$ de ellos
manifestaron presentar síntomas clínicos de *Burnout* (Agotamiento
Emocional). 1. Calcule e interprete el intervalo de confianza del 95%
para la proporción poblacional de *Burnout* mediante la corrección de
Agresti-Coull. 2. Contraste si la proporción muestral supera
significativamente la tasa histórica nacional de referencia del $50\%$
($p_0 = 0.50$) con $\alpha = 0.05$.
### Ejercicio 8.2 (Comparación de dos proporciones)
En un ensayo clínico prospectivo de profilaxis antimicrobiana, se
compararon dos esquemas antibióticos en cirugía abdominal: - **Esquema
A:** 12 infecciones postoperatorias en 100 pacientes
($n_1 = 100, X_1 = 12$). - **Esquema B:** 4 infecciones postoperatorias
en 100 pacientes ($n_2 = 100, X_2 = 4$). 1. Calcule la proporción
combinada ($\hat{p}_{\text{pool}}$) y el estadístico $Z$. 2. Obtenga el
Riesgo Relativo ($RR$) y la Razón de Momios ($OR$). 3. ¿Existe
superioridad estadísticamente significativa del Esquema B sobre el
Esquema A?
### Ejercicio 8.3 (Tabla de contingencia y Chi-Cuadrado)
En un estudio sobre automedicación en estudiantes de ciencias de la
salud, se clasificó el uso de antiinflamatorios no esteroideos (AINEs)
según el año de carrera: - 1º Año: 15 usuarios, 35 no usuarios
($n_1 = 50$). - 3º Año: 25 usuarios, 25 no usuarios ($n_2 = 50$). - 5º
Año: 38 usuarios, 12 no usuarios ($n_3 = 50$). 1. Elabore la tabla de
frecuencias esperadas bajo la hipótesis de homogeneidad. 2. Calcule los
grados de libertad y el estadístico $\chi^2$. 3. Indique la conclusión
biometrológica correspondiente para $\alpha = 0.01$.
### Ejercicio 8.4 (Selección de prueba y Test de Fisher)
Se evalúa la tasa de supervivencia a 30 días de una complicación rara
tras un procedimiento invasivo según el uso de un anticoagulante nuevo
vs estándar: - Fármaco Nuevo: 0 fallecidos en 12 pacientes. - Estándar:
4 fallecidos en 10 pacientes. 1. Justifique técnicamente por qué la
prueba $\chi^2$ tradicional no es adecuada. 2. Plantee la fórmula de
Fisher y deduzca si existe evidencia de menor mortalidad con el fármaco
nuevo.
------------------------------------------------------------------------
# Solucionario razonado de los ejercicios
### Solución al Ejercicio 8.1
1. $\tilde{n} = 80 + 4 = 84$, $\tilde{X} = 52 + 2 = 54$,
$\tilde{p} = \frac{54}{84} \approx 0.6429$.\
$SE = \sqrt{\frac{0.6429 \times 0.3571}{84}} \approx 0.0523$.\
$IC_{95\%} = 0.6429 \pm 1.96 \times 0.0523 = [0.540, \, 0.745]$
($54.0\%$ a $74.5\%$).
2. $SE_0 = \sqrt{\frac{0.50 \times 0.50}{80}} = \sqrt{0.003125} \approx 0.0559$.\
$Z_{\text{calc}} = \frac{0.650 - 0.500}{0.0559} \approx +2.683$.\
Como $Z = 2.683 > 1.645$ (unilateral, $p = 0.0036 < 0.05$), se
rechaza $H_0$; la prevalencia de *Burnout* en los residentes es
significativamente superior al $50\%$.
### Solución al Ejercicio 8.2
1. $\hat{p}_1 = 0.12, \hat{p}_2 = 0.04$.\
$\hat{p}_{\text{pool}} = \frac{12 + 4}{200} = 0.08$.\
$SE_{\text{pool}} = \sqrt{0.08 \times 0.92 \left(\frac{1}{100} + \frac{1}{100}\right)} = \sqrt{0.0736 \times 0.02} \approx 0.03837$.\
$Z_{\text{calc}} = \frac{0.12 - 0.04}{0.03837} = \frac{0.08}{0.03837} \approx 2.085$.\
Valor $p = 0.0371 < 0.05$.
2. $RR = \frac{0.12}{0.04} = 3.00$ (El Esquema A triplica el riesgo de
infección respecto al B).\
$OR = \frac{12 \times 96}{88 \times 4} = \frac{1152}{352} \approx 3.27$.
3. Sí, el Esquema B reduce la infección postoperatoria de forma
estadísticamente significativa ($p < 0.05$).
### Solución al Ejercicio 8.3
1. Gran total $N = 150$. Total usuarios: $15 + 25 + 38 = 78$ ($52\%$).
Total no usuarios: $72$ ($48\%$).\
Frecuencias esperadas por año ($n = 50$):
- Usuarios esperados: $50 \times 0.52 = 26.0$ en cada año.\
- No usuarios esperados: $50 \times 0.48 = 24.0$ en cada año.
2. $\chi^2 = \frac{(15-26)^2}{26} + \frac{(35-24)^2}{24} + \frac{(25-26)^2}{26} + \frac{(25-24)^2}{24} + \frac{(38-26)^2}{26} + \frac{(12-24)^2}{24}$\
$\chi^2 = \frac{121}{26} + \frac{121}{24} + \frac{1}{26} + \frac{1}{24} + \frac{144}{26} + \frac{144}{24} = 4.654 + 5.042 + 0.038 + 0.042 + 5.538 + 6.000 = 21.314$.\
$df = (3 - 1)(2 - 1) = 2 \times 1 = 2$.
3. Con $df = 2$, $\chi^2_{\text{crit}} (\alpha = 0.01) = 9.210$. Como
$\chi^2_{\text{calc}} = 21.314 > 9.210$ ($p < 0.0001$), se concluye
que el consumo de AINEs se incrementa de manera drástica conforme se
avanza en la carrera médica (de $30\%$ en 1º año a $76\%$ en 5º
año).
### Solución al Ejercicio 8.4
1. En la celda de fallecidos con el fármaco nuevo, la frecuencia
observada es $0$ y la frecuencia esperada es
$E = \frac{12 \times 4}{22} \approx 2.18 < 5$. La regla de Cochran
se viola y el supuesto asintótico de $\chi^2$ colapsa.
2. Se formula el Test de Fisher condicionando a totales marginales
fijos:\
$P(a = 0) = \frac{\binom{12}{0} \binom{10}{4}}{\binom{22}{4}} = \frac{1 \times 210}{7315} \approx 0.0287$.\
El valor $p$ unilateral es $0.0287 < 0.05$. Concluimos que el nuevo
fármaco ofrece una reducción estadísticamente significativa en la
mortalidad a 30 días en comparación con la terapia estándar.