¿Está mal temblar antes de realizar la prueba de Wilcoxon?

9

Escribí un script que prueba los datos usando el wilcox.test, pero cuando obtuve los resultados, todos los valores p fueron iguales a 1. Leí en algunos sitios web que podría usar jitter antes de probar los datos (para evitar vínculos como decían), Hice esto y ahora tengo un resultado aceptable. ¿Está mal hacer esto?

test<- function(column,datacol){
    library(ggplot2)
t=read.table("data.txt", stringsAsFactors=FALSE)
uni=unique(c(t$V9))
    for (xp in uni) { 
          for(yp in uni) {
            testx <- subset(t, V9==xp)
            testy <- subset(t, V9==yp)
            zz <- wilcox.test(testx[[datacol]],jitter(testy[[datacol]]))
            p.value <- zz$p.value
          }
        }
}


Esta es la salida de dput(head(t))

structure(list(V1 = c(0.268912,
0.314681, 0.347078, 0.286945, 
0.39562, 0.282182), V2 = c(0.158921, 0.210526, 0.262024, 0.322006, 
0.133417, 0.283025), V3 = c(0.214082, 0.166895, 0.132547, 0.147361, 
0.09174, 0.169093), V4 = c(0.358085, 0.307898, 0.258352, 0.243688, 
0.379224, 0.2657), V5= c(-0.142223, 0.010895, 0.14655, 
0.08152, 0.02116, 0.030083), V6 = c(0.096408, -0.091896,

-0.331229, -0.446603, -0.088493, -0.262037), V7` = c(1.680946, 
1.649559, 1.534401, 1.130529, 3.441356, 1.211815), V8 = c("NC_000834",  "NC_000844",
"NC_000845", "NC_000846", "NC_000857",
"NC_000860" ), V9 = c("Chordata",
"Arthropoda", "Chordata", "Chordata", 
"Arthropoda", "Chordata"), V10 =
c("???:???", "Diplostraca", 
"???:???", "Rheiformes", "Diptera",
"Salmoniformes"), V11 = c("???:???",
"Branchiopoda", "Mammalia", "Aves",
"Insecta", "Actinopterygii" )), .Names
= c("V1", "V2", "V3", "V4", "V5", "V6",  "V7",
"V8", "V9", "V10",
"V11"), row.names = c(NA,  6L),
class = "data.frame")

Los datos son muy grandes, y ese es el hilo que comencé y me dijeron que podría estar mal hacer esto

Nota: esta pregunta proviene de tex.SE: generar PDFcontain R salida dentro de la tabla de látex

weblover
fuente
2
No nos dice cuáles son sus datos, pero sospecho mucho de cualquier procedimiento que agregue ruido aleatorio a los datos y luego realice una prueba estadística sobre ellos. Además, ¿estás seguro de que tu código hace lo que crees que hace? Mi lectura es que, a pesar de su ciclo, devolverá un solo valor p - el de x = y = {lastvaluof} (uni)
Andrie
@Andrie: gracias por su ayuda, pero ese no es el código completo, es parte de la función que calcula la prueba de wilcox, y el código produce diferentes valores de valor p para cada uno (xp, yp), ese es un enlace de un parte de mis datos, puede verlos y verificar si puedo hacer esto, gracias de antemano. mediafire.com/?mnj26kp4bv5lcr5
1
Sospecharía mucho los enlaces a datos que requieren redirigir a otros enlaces, especialmente cuando R proporciona la dput()función muy útil que elimina cualquier necesidad de hacerlo. Proporcione un ejemplo reproducible para recibir asistencia.
Chase
@weblover Cuando sugerí (en tex.SE) hacer su pregunta de estadísticas aquí, no sabía que ya había preguntado en SO. Por favor, elimine una de sus dos publicaciones (probablemente en SO, ya que esta es una pregunta de estadísticas).
chl

Respuestas:

6

Hay un hilo en la lista de R-help sobre esto; ver por ejemplo: http://tolstoy.newcastle.edu.au/R/e8/help/09/12/9200.html

La primera sugerencia es repetir la prueba una gran cantidad de veces con diferentes fluctuaciones y luego combinar los valores p para obtener un valor p general, ya sea tomando un promedio o un máximo. También sugieren que en su lugar podría usarse una prueba de permutación directa (de las dos, eso es lo que preferiría). Consulte la pregunta ¿Qué implementación de prueba de permutación en R usar en lugar de pruebas t (emparejadas y no emparejadas)? para algunos ejemplos de pruebas de permutación.

En otra parte de ese hilo, Greg Snow escribe: Agregar ruido aleatorio a los datos para evitar una advertencia es como quitar las baterías de un detector de humo para silenciarlo en lugar de investigar qué está causando la alarma. (Ver http://tolstoy.newcastle.edu.au/R/e8/help/09/12/9195.html )

Aaron dejó Stack Overflow
fuente
gracias por su respuesta, pero no entendí, ¿qué debo hacer ahora? cambiar la prueba o ajustar los datos en función de algo, ¿y qué es esto?
weblover
Resumiré la página a la que me vinculé.
Aaron dejó Stack Overflow el
3

(descargo de responsabilidad: no verifiqué el código, mi respuesta se basa solo en su descripción)

Tengo la sensación de que lo que quieres hacer es una muy mala idea . Wilcoxon es una prueba de remuestreo (o aleatorización) para los rangos. Es decir, toma el rango de los valores y compara estos rangos con todas las permutaciones posibles de los rangos (ver, por ejemplo, aquí ).

Entonces, como te diste cuenta, los lazos son bastante malos ya que no obtienes rangos de ellos. Sin embargo, agregar ruido aleatorio (jitter) a sus datos transformará todos los rangos, de modo que tengan rangos aleatorios. Es decir, distorsiona severamente sus datos.

Por lo tanto: está mal hacerlo .

Henrik
fuente
Gracias por su respuesta, pero ¿qué debo hacer en este caso?
weblover
2

Le has preguntado a varias personas qué debes hacer ahora. En mi opinión, lo que debe hacer ahora es aceptar que el valor p adecuado aquí es 1.000. Tus grupos no difieren.

Peter Flom - Restablece a Monica
fuente
hola, ¿es racional aceptar esto? porque todos los grupos y subgrupos cuando se comparan entre sí, dan el mismo valor p, eso no es lógico porque en cada caso estoy probando 1 variable, por ejemplo: prueba ("Ph", V1), entonces el valor p no debería ser el mismo para todos . algunas ideas ??
weblover
Claro, podría ser racional. Un valor p de 1 significa que los dos grupos son lo más parecidos posible. Si tienes casi todos los lazos, esto podría ser cierto.
Aaron dejó Stack Overflow el
@Aaron @Web Estos datos (V1 a V7) no están vinculados. Se debe haber cometido un error en algún lugar al obtener valores p de 1. Obtengo muchos valores p de 0.036 al compararlos con la prueba de rango con signo de Wilcoxon.
whuber
El OP solo publicó las primeras filas de los datos; aparentemente debe haber vínculos más adelante, aunque eso parece poco probable ya que los datos van a seis decimales. Entonces, sí, parece que puede haber un error en el análisis, aunque no exactamente el que usted señala.
Aaron dejó Stack Overflow el