Я написал скрипт для проверки данных, используя wilcox.test
, но когда я получил результаты, все значения p были равны 1. На некоторых веб-сайтах я читал, что перед тестированием данных можно использовать джиттер (чтобы избежать связей, как они сказали), Я сделал это, и теперь у меня есть приемлемый результат. Это неправильно делать это?
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
}
}
}
Это вывод
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")
Данные очень большие, и это тема, которую я начал, и они сказали мне, что это может быть неправильно
Примечание. Этот вопрос возник из tex.SE: создание вывода PDFcontain R внутри латексной таблицы.
r
nonparametric
ties
weblover
источник
источник
dput()
функцию, которая устраняет необходимость в этом. Пожалуйста, приведите воспроизводимый пример для получения помощи.Ответы:
В списке R-help есть ветка об этом; см. например: http://tolstoy.newcastle.edu.au/R/e8/help/09/12/9200.html
Первое предложение - повторить тест большое количество раз с различным джиттером, а затем объединить p-значения, чтобы получить общее p-значение, взяв среднее или максимальное значение. Они также предполагают, что вместо этого можно использовать простой тест перестановки (из двух, это то, что я бы предпочел). См. Вопрос Какую реализацию теста перестановки в R использовать вместо t-тестов (парных и непарных)? для некоторых примеров тестов перестановки.
В другом месте этой темы Грег Сноу пишет: «Добавление случайных шумов к данным во избежание предупреждения - это все равно, что извлечь батареи из детектора дыма, чтобы заставить его замолчать, вместо того, чтобы исследовать, что вызывает срабатывание будильника». (См. Http://tolstoy.newcastle.edu.au/R/e8/help/09/12/9195.html ).
источник
(отказ от ответственности: я не проверял код, мой ответ основан только на вашем описании)
У меня такое ощущение, что то, что ты хочешь сделать - это действительно плохая идея . Уилкоксон - это критерий повторной выборки (или рандомизации) для рангов. То есть он берет ранг значений и сравнивает эти ранги со всеми возможными перестановками рангов (см., Например, здесь ).
Итак, как вы поняли, связи довольно плохие, потому что вы не получаете рангов из них. Однако добавление случайного шума (джиттера) к вашим данным преобразует все ранги, так что они имеют случайные ранги! То есть это сильно искажает ваши данные.
Поэтому: это неправильно .
источник
Вы спросили нескольких людей, что вы должны делать сейчас. На мой взгляд, то, что вы должны сделать сейчас, это принять то, что правильное значение p здесь составляет 1.000. Ваши группы не отличаются.
источник