J'ai écrit un script teste les données en utilisant le wilcox.test
, mais quand j'ai obtenu les résultats, toutes les valeurs de p étaient égales à 1. J'ai lu sur certains sites Web que vous pouviez utiliser la gigue avant de tester les données (pour éviter les liens comme ils le disaient), Je l'ai fait et j'ai maintenant un résultat acceptable. Est-ce mal de faire ça?
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
}
}
}
Ceci est la sortie 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")
Les données sont très volumineuses, et c'est le fil que j'ai commencé et ils m'ont dit qu'il pourrait être faux de le faire
Remarque Cette question provient de tex.SE: générer une sortie PDFcontain R dans une table en latex
r
nonparametric
ties
weblover
la source
la source
dput()
fonction très utile qui élimine tout besoin de le faire. Veuillez fournir un exemple reproductible pour recevoir de l'aide.Réponses:
Il y a un fil sur la liste R-help à ce sujet; voir par exemple: http://tolstoy.newcastle.edu.au/R/e8/help/09/12/9200.html
La première suggestion consiste à répéter le test un grand nombre de fois avec des oscillations différentes, puis à combiner les valeurs de p pour obtenir une valeur de p globale, en prenant une moyenne ou un maximum. Ils suggèrent également qu'un test de permutation simple pourrait être utilisé à la place (des deux, c'est ce que je préférerais). Voir la question Quelle implémentation de test de permutation dans R utiliser au lieu des tests t (appariés et non appariés)? pour quelques exemples de tests de permutation.
Ailleurs dans ce fil, Greg Snow écrit: Ajouter du bruit aléatoire aux données afin d'éviter un avertissement, c'est comme retirer les piles d'un détecteur de fumée pour le faire taire plutôt que d'enquêter sur la cause du déclenchement de l'alarme. (Voir http://tolstoy.newcastle.edu.au/R/e8/help/09/12/9195.html )
la source
(avertissement: je n'ai pas vérifié le code, ma réponse est uniquement basée sur votre description)
J'ai le sentiment que ce que tu veux faire est une très mauvaise idée . Wilcoxon est un test de rééchantillonnage (ou de randomisation) pour les rangs. C'est-à-dire qu'il prend le rang des valeurs et compare ces rangs à toutes les permutations possibles des rangs (voir par exemple ici ).
Donc, comme vous vous en êtes rendu compte, les liens sont assez mauvais car vous n'en obtenez pas de rangs. Cependant, l'ajout de bruit aléatoire (gigue) à vos données transformera tous les rangs, afin qu'ils aient des rangs aléatoires! Autrement dit, cela déforme gravement vos données.
Par conséquent: c'est mal de le faire .
la source
Vous avez demandé à plusieurs personnes ce que vous devriez faire maintenant. À mon avis, ce que vous devez faire maintenant, c'est accepter que la valeur de p appropriée ici est de 1.000. Vos groupes ne diffèrent pas.
la source