Test de Kruskal-Wallis
El test de Kruskal-Wallis es la alternativa no paramétrica al ANOVA de un factor. Sustituye las observaciones originales por sus rangos y contrasta si las distribuciones de rangos son iguales en todos los grupos. No requiere el supuesto de normalidad y es robusto frente a valores atípicos y distribuciones asimétricas.
Cuándo usar Kruskal-Wallis en lugar de ANOVA
Usa el test de Kruskal-Wallis cuando:
- Los datos son claramente no normales y los tamaños muestrales son pequeños (el TCL no ayuda).
- Los datos son ordinales (por ejemplo, escalas Likert, clasificaciones).
- Hay valores atípicos extremos que distorsionarían el estadístico F del ANOVA.
- El test de Levene rechaza la homocedasticidad y el ANOVA de Welch tampoco es apropiado.
Cuando los tamaños muestrales son grandes y los datos son continuos, el ANOVA de un factor (o el de Welch) suele ser preferible por su mayor potencia.
Hipótesis
\(H_0\): los \(k\) grupos tienen la misma distribución (equivalentemente, la misma mediana poblacional).
\(H_1\): al menos un grupo tiene una distribución distinta.
⚠️ Kruskal-Wallis contrasta distribuciones, no solo medianas
Una descripción habitual dice que el test de Kruskal-Wallis compara medianas. Esto solo es exacto cuando los grupos tienen la misma forma distribucional y difieren únicamente en localización. En general, el test es sensible a cualquier diferencia en la distribución (localización, dispersión, forma). Un resultado significativo indica que los grupos difieren de algún modo, pero no necesariamente en sus medianas. Interpreta los resultados con cuidado cuando los grupos tienen formas o varianzas muy distintas.
Estadístico del test
Se combinan las \(N = n_1 + n_2 + \cdots + n_k\) observaciones y se ordenan de 1 a \(N\) (rangos medios para empates). Sea \(R_{ij}\) el rango de la \(j\)-ésima observación del grupo \(i\), y \(\bar{R}_i = \frac{1}{n_i}\sum_j R_{ij}\) el rango medio del grupo \(i\).
\[H = \frac{12}{N(N+1)} \sum_{i=1}^{k} n_i \left(\bar{R}_i - \frac{N+1}{2}\right)^2\]
Bajo \(H_0\), \(H\) sigue aproximadamente una distribución \(\chi^2\) con \(k-1\) grados de libertad (exacta para muestras grandes). Cuanto mayor es \(H\), más difieren las distribuciones de rangos entre los grupos.
Con empates se aplica un factor de corrección: \(H_\text{corr} = H / C\) donde \(C = 1 - \sum_t(t^3-t)/(N^3-N)\) y \(t\) es el tamaño de cada grupo empatado. Con pocos empates la corrección es despreciable.
Ejemplo completo
Una psicóloga mide las puntuaciones de ansiedad (0-100) en tres grupos de terapia tras 8 semanas:
- Grupo A (TCC): 32, 28, 35, 30, 27
- Grupo B (Mindfulness): 45, 52, 48, 55, 50
- Grupo C (Control): 60, 58, 65, 62, 70
Paso 1: asignar rangos a las 15 observaciones conjuntamente.
| Puntuación | 27 | 28 | 30 | 32 | 35 | 45 | 48 | 50 | 52 | 55 | 58 | 60 | 62 | 65 | 70 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Rango | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| Grupo | A | A | A | A | A | B | B | B | B | B | C | C | C | C | C |
Paso 2: rangos medios. \(\bar{R}_A = (1+2+3+4+5)/5 = 3\), \(\bar{R}_B = (6+7+8+9+10)/5 = 8\), \(\bar{R}_C = (11+12+13+14+15)/5 = 13\).
Rango medio global: \((N+1)/2 = 16/2 = 8\).
Paso 3: calcular \(H\).
\[H = \frac{12}{15 \times 16}\left[5(3-8)^2 + 5(8-8)^2 + 5(13-8)^2\right]\] \[= \frac{12}{240}\left[5 \times 25 + 0 + 5 \times 25\right] = 0{,}05 \times 250 = 12{,}50\]
P-valor (\(\chi^2\) con \(gl = 2\)): \(p = P(\chi^2_2 \geq 12{,}50) \approx 0{,}002\).
Decisión: rechazamos \(H_0\). Los tres grupos de terapia difieren significativamente en las puntuaciones de ansiedad.

Tests post-hoc: test de Dunn
Al igual que el ANOVA, un resultado significativo del test de Kruskal-Wallis solo indica que algunos grupos difieren. El test de Dunn realiza comparaciones por pares usando las sumas de rangos del test original, con una corrección para comparaciones múltiples (habitualmente Bonferroni o Holm).

Los tres pares difieren significativamente tras el ajuste de Bonferroni. La TCC produce las puntuaciones de ansiedad más bajas, seguida de Mindfulness y luego el control.
Realizar el test en R
# Test de Kruskal-Wallis
kruskal.test(puntuacion ~ grupo, data = df_anx)
# Test post-hoc de Dunn con corrección de Bonferroni
library(dunn.test)
dunn.test(df_anx$puntuacion, df_anx$grupo, method = "bonferroni")
# O con el paquete FSA (corrección de Holm)
library(FSA)
dunnTest(puntuacion ~ grupo, data = df_anx, method = "holm")
💡 Kruskal-Wallis vs ANOVA de un factor: eficiencia
Cuando se cumple el supuesto de normalidad, el test de Kruskal-Wallis tiene aproximadamente el 95,5% de la potencia del ANOVA de un factor (la misma eficiencia relativa asintótica que el test de Wilcoxon frente al test t). Para distribuciones no normales, Kruskal-Wallis puede ser sustancialmente más potente. El coste de usar Kruskal-Wallis cuando el ANOVA es válido es pequeño; el coste de usar ANOVA cuando se necesita Kruskal-Wallis puede ser grande.