Ich habe ein Skript geschrieben, das die Daten mit dem testet wilcox.test
, aber als ich die Ergebnisse erhielt, waren alle p-Werte gleich 1. Ich habe auf einigen Websites gelesen, dass Sie vor dem Testen der Daten Jitter verwenden könnten (um Verbindungen zu vermeiden, wie sie sagten). Ich habe das getan und jetzt habe ich ein akzeptables Ergebnis. Ist es falsch das zu tun?
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
}
}
}
Dies ist die Ausgabe von
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")
Die Daten sind sehr groß, und das ist der Thread, den ich gestartet habe, und sie sagten mir, dass es falsch sein könnte, dies zu tun
Hinweis Diese Frage stammt von tex.SE: Generieren von PDFcontain R-Ausgaben in Latex-Tabellen
r
nonparametric
ties
Weblover
quelle
quelle
dput()
Funktion bietet, die dies überflüssig macht. Bitte geben Sie ein reproduzierbares Beispiel an, um Unterstützung zu erhalten.Antworten:
Es gibt einen Thread auf der R-Hilfeliste darüber; Siehe zum Beispiel: http://tolstoy.newcastle.edu.au/R/e8/help/09/12/9200.html
Der erste Vorschlag besteht darin, den Test viele Male mit unterschiedlichem Jittering zu wiederholen und dann die p-Werte zu kombinieren, um einen Gesamt-p-Wert zu erhalten, entweder indem ein Durchschnitt oder ein Maximum genommen wird. Sie schlagen auch vor, dass stattdessen ein einfacher Permutationstest verwendet werden könnte (von den beiden würde ich das vorziehen). Siehe die Frage Welche Permutationstestimplementierung in R soll anstelle von t-Tests (gepaart und nicht gepaart) verwendet werden? für einige Beispiele für Permutationstests.
An anderer Stelle in diesem Thread schreibt Greg Snow: Das Hinzufügen von zufälligem Rauschen zu Daten, um eine Warnung zu vermeiden, ist wie das Entfernen der Batterien aus einem Rauchmelder, um ihn zum Schweigen zu bringen, anstatt zu untersuchen, was den Alarm auslöst. (Siehe http://tolstoy.newcastle.edu.au/R/e8/help/09/12/9195.html )
quelle
(Haftungsausschluss: Ich habe den Code nicht überprüft, meine Antwort basiert nur auf Ihrer Beschreibung)
Ich habe das Gefühl, dass das, was Sie tun möchten, eine wirklich schlechte Idee ist . Wilcoxon ist ein Resampling- (oder Randomisierungs-) Test für Ränge. Das heißt, es nimmt den Rang der Werte und vergleicht diese Ränge mit allen möglichen Permutationen der Ränge (siehe z . B. hier ).
Wie Sie festgestellt haben, sind Krawatten also ziemlich schlecht, da Sie keine Ränge daraus ziehen. Wenn Sie Ihren Daten jedoch zufälliges Rauschen (Jitter) hinzufügen, werden alle Ränge so transformiert, dass sie zufällige Ränge haben! Das heißt, es verzerrt Ihre Daten erheblich.
Deshalb: Es ist falsch, dies zu tun .
quelle
Sie haben mehrere Personen gefragt, was Sie jetzt tun sollen. Meiner Ansicht nach sollten Sie jetzt akzeptieren, dass der richtige p-Wert hier 1.000 beträgt. Ihre Gruppen unterscheiden sich nicht.
quelle