Eu escrevi um script que testa os dados usando o wilcox.test
, mas quando obtive os resultados, todos os valores de p eram iguais a 1. Li em alguns sites que você poderia usar o jitter antes de testar os dados (para evitar empates, como eles disseram), Eu fiz isso e agora tenho um resultado aceitável. É errado fazer isso?
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 é a saída 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")
Os dados são muito grandes e foi esse o segmento que iniciei e eles me disseram que pode estar errado fazer isso
Nota Esta pergunta vem do tex.SE: gerando saída PDFcontain R dentro da tabela de látex
r
nonparametric
ties
weblover
fonte
fonte
dput()
função muito útil que elimina qualquer necessidade de fazer isso. Forneça um exemplo reproduzível para receber assistência.Respostas:
Há um tópico na lista de ajuda R sobre isso; Veja, por exemplo: http://tolstoy.newcastle.edu.au/R/e8/help/09/12/9200.html
A primeira sugestão é repetir o teste várias vezes com diferentes oscilações e, em seguida, combinar os valores de p para obter um valor de p geral, fazendo uma média ou um máximo. Eles também sugerem que um teste direto de permutação possa ser usado (dos dois, é o que eu prefiro). Veja a pergunta Qual implementação de teste de permutação em R usar em vez de testes t (emparelhados e não emparelhados)? para alguns exemplos de testes de permutação.
Em outro lugar desse segmento, Greg Snow escreve: Adicionar ruído aleatório aos dados para evitar um aviso é como remover as baterias de um detector de fumaça para silenciá-lo, em vez de investigar o que está causando o alarme. (Veja http://tolstoy.newcastle.edu.au/R/e8/help/09/12/9195.html )
fonte
(aviso: não verifiquei o código, minha resposta é baseada apenas na sua descrição)
Tenho a sensação de que o que você quer fazer é uma péssima ideia . Wilcoxon é um teste de reamostragem (ou randomização) para classificações. Ou seja, ele classifica os valores e compara essas classificações com todas as permutações possíveis das classificações (veja, por exemplo, aqui ).
Então, como você percebeu, os laços são muito ruins, pois você não obtém uma classificação deles. No entanto, adicionar ruído aleatório (jitter) aos seus dados transformará todas as classificações, para que elas tenham classificações aleatórias! Ou seja, distorce seus dados severamente.
Portanto: é errado fazer isso .
fonte
Você perguntou a várias pessoas o que você deve fazer agora. Na minha opinião, o que você deve fazer agora é aceitar que o valor p apropriado aqui seja 1.000. Seus grupos não diferem.
fonte