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
r
nonparametric
ties
weblover
fuente
fuente
dput()
función muy útil que elimina cualquier necesidad de hacerlo. Proporcione un ejemplo reproducible para recibir asistencia.Respuestas:
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 )
fuente
(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 .
fuente
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.
fuente