Suponga que tiene 7 sujetos (u objetos) y que tiene medidas A y B en cada uno, con datos (falsos) como los siguientes:
Subject 1 2 3 4 5 6 7
A 77.04 111.79 109.82 90.02 97.93 84.01 105.72
B 82.80 117.28 109.58 96.13 100.72 88.07 111.46
D = B-A 5.76 5.49 -0.24 6.11 2.79 4.06 5.74
Una prueba t pareada (prueba t de una muestra sobre la diferencia) muestra una diferencia significativa al nivel del 0,3%, como sigue:
d = c(5.76, 5.49, -0.24, 6.11, 2.79, 4.06, 5.74)
t.test(d)$p.val
[1] 0.002778031
Pero suponga que duda de la normalidad de los datos y se preocupa por utilizar una prueba t para una muestra tan pequeña.
Una prueba de permutación no paramétrica se basa en un gran número de permutaciones aleatorias del signo de las diferencias. En cada permutación se encuentra la diferencia media. (Se dice que la diferencia es la "métrica" de la prueba de permutación). La diferencia observada es $\bar D_{obs} = 4.244.$
mean(d)
[1] 4.244286
El valor P de la prueba de permutación a dos bandas es la proporción de diferencias permutadas que iguala o supera la diferencia observada en valor absoluto. En este caso, el valor P es de 0,03.
set.seed(504)
a.prm = replicate(10^5, mean(sample(c(-1,1),7,rep=T)*d))
mean(abs(a.prm) >= abs(mean(d)))
[1] 0.03029
Con algunos problemas se podría obtener la distribución exacta de las permutaciones mediante métodos combinatorios. La simulación proporciona una aproximación adecuada a esta distribución, que se muestra a continuación. (Hay 128 valores distintos en la distribución de permutación simulada).
hist(a.prm, prob=T, col="skyblue2",
main="Simulated Permutation Dist'n")
rug(a.prm)
abline(v = c(-1,1)*mean(d), col="red")
Nota: Para pequeñas cantidades de datos, he encontrado que las pruebas de permutación son más satisfactorias que el remuestreo bootstrap.
En cierto sentido, algunas de las pruebas no paramétricas clásicas pueden considerarse pruebas de permutación "congeladas". (La métrica basada en el rango no está sujeta a cambios.) Para nuestros datos una prueba de Wilcoxon de una muestra, tal como se implementa en R, da aproximadamente el mismo valor P que la prueba de permutación. (Yo no querría utilizar una prueba de Wilcoxon de una muestra con menos de unas siete diferencias).
wilcox.test(d)$p.val
[1] 0.03125