Tengo dos conjuntos de datos y me gustaría saber si son significativamente diferentes o no (esto proviene de "¿ Dos grupos son significativamente diferentes? Prueba de uso ").
Decidí usar una prueba de permutación, haciendo lo siguiente en R:
permutation.test <- function(coding, lncrna) {
coding <- coding[,1] # dataset1
lncrna <- lncrna[,1] # dataset2
### Under null hyphotesis, both datasets would be the same. So:
d <- c(coding, lncrna)
# Observed difference
diff.observed = mean(coding) - mean(lncrna)
number_of_permutations = 5000
diff.random = NULL
for (i in 1:number_of_permutations) {
# Sample from the combined dataset
a.random = sample (d, length(coding), TRUE)
b.random = sample (d, length(lncrna), TRUE)
# Null (permuated) difference
diff.random[i] = mean(b.random) - mean(a.random)
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
pvalue = sum(abs(diff.random) >= abs(diff.observed)) / number_of_permutations
pvalue
}
Sin embargo, los valores p no deberían ser 0 según este documento: http://www.statsci.org/smyth/pubs/permp.pdf
¿Qué me recomiendan hacer? Es esta forma de calcular el valor p:
pvalue = sum(abs(diff.random) >= abs(diff.observed)) / number_of_permutations
¿una buena manera? ¿O es mejor hacer lo siguiente?
pvalue = sum(abs(diff.random) >= abs(diff.observed)) + 1 / number_of_permutations + 1
p-value
permutation-test
usuario2886545
fuente
fuente
a.random
b.random
b.random
a.random
coding
lncrna
Respuestas:
Discusión
Una prueba de permutación genera todas las permutaciones relevantes de un conjunto de datos, calcula un estadístico de prueba designado para cada permutación y evalúa el estadístico de prueba real en el contexto de la distribución de permutación resultante de las estadísticas. Una forma común de evaluarlo es informar la proporción de estadísticas que son (en cierto sentido) "tan o más extremas" que las estadísticas reales. Esto a menudo se llama un "valor p".
Debido a que el conjunto de datos real es una de esas permutaciones, su estadística necesariamente estará entre las que se encuentran dentro de la distribución de permutación. Por lo tanto, el valor p nunca puede ser cero.
A menos que el conjunto de datos sea muy pequeño (menos de aproximadamente 20-30 números totales, por lo general) o que el estadístico de prueba tenga una forma matemática particularmente agradable, no es factible generar todas las permutaciones. (Un ejemplo donde todas las permutaciones se generan aparece en prueba de permutación en R .) Por lo tanto implementaciones de ordenador de pruebas de permutación típicamente de muestra de la distribución de permutación. Lo hacen generando algunas permutaciones aleatorias independientes y esperan que los resultados sean una muestra representativa de todas las permutaciones.
Por lo tanto, cualquier número (como un "valor p") derivado de dicha muestra es solo estimadores de las propiedades de la distribución de permutación. Es muy posible, y a menudo ocurre cuando los efectos son grandes, que el valor p estimado sea cero. No hay nada de malo en eso, pero inmediatamente plantea el problema hasta ahora descuidado de cuánto podría diferir el valor p estimado del correcto. Debido a que la distribución muestral de una proporción (como un valor p estimado) es binomial, esta incertidumbre se puede abordar con un intervalo de confianza binomial .
Arquitectura
Una implementación bien construida seguirá de cerca la discusión en todos los aspectos. Comenzaría con una rutina para calcular la estadística de prueba, como esta para comparar las medias de dos grupos:
Escriba otra rutina para generar una permutación aleatoria del conjunto de datos y aplique la estadística de prueba. La interfaz de este permite al llamante proporcionar la estadística de prueba como argumento. Comparará los primeros
m
elementos de una matriz (presuntamente un grupo de referencia) con los elementos restantes (el grupo "tratamiento").La prueba de permutación se lleva a cabo primero encontrando la estadística de los datos reales (se supone que se almacenan en dos matrices)
control
ytreatment
) y luego buscando estadísticas para muchas permutaciones aleatorias independientes de los mismos:Ahora calcule la estimación binomial del valor p y un intervalo de confianza para él. Un método utiliza el
binconf
procedimiento incorporado en elHMisc
paquete:No es una mala idea comparar el resultado con otra prueba, incluso si se sabe que no es del todo aplicable: al menos podría obtener un sentido de orden de magnitud de dónde debería estar el resultado. En este ejemplo (de medias de comparación), una prueba t de Student generalmente da un buen resultado de todos modos:
Esta arquitectura se ilustra en una situación más compleja, con
R
código de trabajo , en Probar si las variables siguen la misma distribución .Ejemplo
Después de usar el código anterior para ejecutar una prueba de permutación, tracé la muestra de la distribución de permutación junto con una línea roja vertical para marcar la estadística real:
El cálculo del límite de confianza binomial resultó en
3.16e-05
Comentarios
fuente
(B es el número de permutaciones aleatorias en las que se obtiene una estadística mayor o igual que la observada y M es el número total de permutaciones aleatorias muestreadas).
fuente