Test exacto de Fisher

El test exacto de Fisher calcula un p-valor exacto para una tabla de contingencia 2x2. A diferencia del contraste chi-cuadrado, no depende de una aproximación de muestra grande: condiciona en los totales marginales fijos de la tabla y calcula las probabilidades directamente a partir de la distribución hipergeométrica, lo que lo hace fiable incluso con muestras muy pequeñas.

¿Por qué un test exacto?

Considera una tabla 2x2 con celdas \(a, b, c, d\), donde las filas suman \(a+b\) y \(c+d\), las columnas suman \(a+c\) y \(b+d\), y el total general es \(n\):

Resultado 1 Resultado 2 Total
Grupo 1 \(a\) \(b\) \(a+b\)
Grupo 2 \(c\) \(d\) \(c+d\)
Total \(a+c\) \(b+d\) \(n\)

Si condicionamos en que los cuatro totales marginales sean fijos, solo la celda \(a\) puede variar libremente: una vez que se conoce \(a\), \(b\), \(c\) y \(d\) quedan determinadas por resta a partir de los márgenes. Bajo \(H_0\) de independencia, \(a\) sigue entonces una distribución hipergeométrica:

\[P(a) = \frac{\binom{a+b}{a}\binom{c+d}{c}}{\binom{n}{a+c}}\]

Esta es exactamente la probabilidad de obtener \(a\) “éxitos” al muestrear \(a+c\) elementos sin reemplazo de una población de \(n\) elementos que contiene \(a+b\) éxitos en total. Como esta probabilidad se calcula directamente, sin depender de ninguna aproximación de muestra grande, el p-valor resultante es exacto y no asintótico. El p-valor exacto suma las probabilidades hipergeométricas de todas las tablas al menos tan extremas como la observada, es decir, todas las tablas con los mismos márgenes fijos que apoyan \(H_1\) tanto como la tabla observada, o más.

Hipótesis

Contraste \(H_0\) \(H_1\)
Bilateral las variables son independientes (OR = 1) las variables están asociadas (OR \(\neq\) 1)
Unilateral (menor) OR \(\geq\) 1 OR \(<\) 1
Unilateral (mayor) OR \(\leq\) 1 OR \(>\) 1

\(H_0\) establece que las dos variables categóricas son independientes, lo cual equivale a decir que la razón de momios es igual a 1. \(H_1\) para el contraste bilateral establece que las variables están asociadas, es decir, que la razón de momios es distinta de 1. Las versiones unilaterales contrastan una dirección específica de asociación, elegida antes de observar los datos.

La razón de momios

La razón de momios (odds ratio) mide la fuerza y dirección de la asociación:

\[\text{OR} = \frac{ad}{bc}\]

Una razón de momios de 1 significa que no hay asociación: los momios del resultado son iguales en ambos grupos. Una razón de momios mayor que 1 significa que el resultado es más probable en la primera fila o grupo, mientras que una razón de momios menor que 1 significa que es menos probable.

La función fisher.test() de R no calcula este simple cociente de productos cruzados. En su lugar, informa una estimación corregida por sesgo conocida como estimación de máxima verosimilitud condicional (MLE condicional) de la razón de momios. Este valor está próximo a \(ad/bc\), pero no es idéntico. Ambas son estimaciones legítimas de la misma asociación subyacente: el cociente simple es más fácil de calcular a mano, mientras que la MLE condicional es la que coincide con el intervalo de confianza que R informa junto al p-valor.

Ejemplos

Ejemplo 1: ensayo clínico pequeño, fármaco nuevo frente a placebo (bilateral)

Ensayo clínico pequeño: fármaco nuevo frente a placebo (bilateral)

Un ensayo pequeño tiene demasiados pocos pacientes como para confiar en la aproximación chi-cuadrado:

Mejora No mejora Total
Fármaco 6 2 8
Placebo 2 5 7
Total 8 7 15

Las frecuencias esperadas aquí llegan a ser tan bajas como 3,27 en una celda, muy por debajo de la regla habitual de al menos 5, así que el chi-cuadrado no sería fiable.

Razón de momios por cociente de productos cruzados: \(OR = (6 \times 5)/(2 \times 2) = 30/4 = 7{,}5\).

El test exacto de Fisher (estimación MLE condicional de R: OR = 6,40) da un p-valor bilateral de 0,132.

Decisión: no rechazamos \(H_0\) con \(\alpha=0{,}05\). A pesar de la razón de momios descriptivamente grande, la muestra es demasiado pequeña para calificar la asociación como estadísticamente significativa.

Example icon

Gráfico de barras de los recuentos observados para el ensayo clínico de fármaco frente a placebo, comparando pacientes que mejoran y no mejoran

Ejemplo 2: ensayo de eficacia de una vacuna (unilateral)

Ensayo de eficacia de una vacuna (unilateral)

15 personas están vacunadas y 15 no lo están; el resultado es si contrajeron gripe esa temporada:

Gripe Sin gripe Total
Vacunados 1 14 15
No vacunados 7 8 15
Total 8 22 30

Hipótesis: \(H_0\): la vacunación no reduce el riesgo de gripe (OR \(\geq\) 1) frente a \(H_1\): la vacunación reduce el riesgo de gripe (OR \(<\) 1), un contraste unilateral ya que los investigadores tienen una hipótesis direccional específica.

Razón de momios por cociente de productos cruzados: \(OR = (1 \times 8)/(14 \times 7) = 8/98 \approx 0{,}082\).

P-valor unilateral (“menor”): 0,0176. P-valor bilateral (para comparar): 0,0352.

Decisión (unilateral): rechazamos \(H_0\) con \(\alpha=0{,}05\). Hay evidencia significativa de que la vacunación reduce el riesgo de gripe en esta muestra.

Example icon

Gráfico de barras de los recuentos observados para el ensayo de la vacuna, comparando gripe y sin gripe entre vacunados y no vacunados

Supuestos

El test exacto de Fisher requiere:

  • Márgenes fijos: tanto los totales de fila como los de columna se tratan como fijos. Este es el planteamiento clásico y condicional del test; tratar ambos márgenes como fijos es en sí mismo un debate estadístico de larga tradición, pero sigue siendo el enfoque práctico estándar.
  • Independencia: las observaciones son independientes entre sí.
  • Sin restricción de tamaño muestral: a diferencia del chi-cuadrado, no hay ningún requisito sobre las frecuencias esperadas de las celdas. Ese es precisamente el objetivo del test: funciona incluso cuando la regla del chi-cuadrado (frecuencias esperadas \(\geq 5\)) falla.

El test exacto de Fisher se usa normalmente solo para tablas 2x2. Las tablas mayores necesitan la extensión generalizada de Freeman-Halton, computacionalmente costosa pero disponible mediante fisher.test() en R, que también gestiona tablas \(r \times c\) por simulación en tablas grandes (simulate.p.value = TRUE).

⚠️ El test exacto de Fisher no siempre es más potente, y puede ser conservador

Un error común: “exacto” no significa “más potente”. Como el estadístico del test (el recuento en una celda) es discreto, los p-valores alcanzables forman un conjunto discreto y poco fino, así que el test puede ser conservador: su tasa real de rechazo bajo \(H_0\) puede quedar notablemente por debajo del \(\alpha\) nominal, especialmente con tablas pequeñas y desequilibradas. Esto es una contrapartida real frente a la aproximación chi-cuadrado, que es anticonservadora en ese mismo régimen de muestra pequeña, en lugar de lo contrario.

En la práctica: usa chi-cuadrado cuando todas las frecuencias esperadas sean \(\geq 5\), usa el test exacto de Fisher cuando no lo sean, y no esperes que el test exacto de Fisher detecte automáticamente un efecto real solo por calcular una respuesta “exacta”.

Realizar el test en R

Los dos ejemplos 2x2 anteriores, más una variante unilateral y una tabla más grande resuelta por simulación, todo con la misma función fisher.test():

# Ejemplo 1: ensayo clínico
tab1 <- matrix(c(6, 2, 2, 5), nrow = 2, byrow = TRUE)
fisher.test(tab1)                          # bilateral por defecto

# Ejemplo 2: ensayo de la vacuna (unilateral)
tab2 <- matrix(c(1, 14, 7, 8), nrow = 2, byrow = TRUE)
fisher.test(tab2, alternative = "less")    # unilateral
fisher.test(tab2)                          # bilateral, para comparar

# Tablas mayores (extensión de Freeman-Halton por simulación)
fisher.test(tabla_rxc, simulate.p.value = TRUE, B = 10000)

La salida incluye el p-valor, la estimación MLE condicional de la razón de momios y un intervalo de confianza para la razón de momios. El argumento alternative controla si el test es bilateral (por defecto) o unilateral ("less" o "greater").

💡 Test exacto de Fisher frente a chi-cuadrado: la regla de decisión

Usa el test exacto de Fisher para tablas 2x2 cuando alguna frecuencia esperada esté por debajo de 5 (la regla habitual de la aproximación chi-cuadrado), o siempre que el tamaño muestral total sea pequeño con independencia de los recuentos exactos. Usa chi-cuadrado para tablas más grandes y equilibradas: es computacionalmente más ligero y sus supuestos ya se cumplen. Para tablas mayores de 2x2 con recuentos pequeños, usa fisher.test(..., simulate.p.value = TRUE) en lugar de la aproximación clásica de bondad de ajuste chi-cuadrado.