Чи неправильно тремтіти перед виконанням тесту Вілкоксона?


9

Я написав сценарій тестує дані за допомогою 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 всередині таблиці латексу


2
Ви не кажете нам, що це за ваші дані, але я б дуже підозріло ставився до будь-якої процедури, яка додає випадкові шуми до даних, а потім проводить статистичний тест на них. Крім того, ви впевнені, що ваш код робить те, що, на вашу думку, робить? Я читаю, що, незважаючи на ваш цикл, він поверне єдине p.value - значення x = y = {lastvaluof} (uni)
Андрі

@Andrie: дякую за вашу допомогу, але це не повний код, це частина функції, що обчислює тест wilcox, і код, що створює різні значення p-значення для кожного (xp, yp), це посилання на частину моїх даних, ви можете їх переглянути і перевірити, чи можу я це зробити, дякую заздалегідь. mediafire.com/?mnj26kp4bv5lcr5

1
Я б дуже підозріло ставився до посилань на дані, які потребують переадресації на інші посилання, особливо коли R надає дуже корисну dput()функцію, яка позбавляє від потреби цього робити. Надайте відтворювальний приклад для отримання допомоги.
Чейз


@weblover Коли я запропонував (на tex.SE) поставити тут запитання щодо вашої статистики, я не знав, що ви вже запитували про ТАК. Видаліть одне із своїх двох дописів (можливо, так, оскільки це питання статистики).
chl

Відповіді:


6

З цього питання є нитка у списку R-довідки; див. наприклад: 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 )


дякую за вашу відповідь, але я не зрозумів, що мені робити зараз? змінити тест або налаштувати дані на основі чогось, і що це щось таке ???
weblover

Я підсумую сторінку, на яку я посилався.
Аарон вийшов із переповнення стека

3

(відмова від відповідальності: я не перевірив код, моя відповідь лежить лише на вашому описі)

У мене таке відчуття, що те, що ти хочеш зробити, - це дійсно погана ідея . Wilcoxon - це тест на перекомпонування (або рандомізацію) для рангів. Тобто, він приймає ранг значень і порівнює ці ранги з усіма можливими перестановками рангів (див., Наприклад, тут ).

Отже, як ви зрозуміли, зв'язки досить погані, оскільки ви не отримуєте з них рангів. Однак додавання до даних випадкових шумів (тремтіння) перетворить усі ранги, щоб вони мали випадкові ранги! Тобто вона сильно спотворює ваші дані.

Тому: Це неправильно робити .


thnx для вас відповідь, але що мені робити в цьому випадку ??
weblover

2

Ви запитали кількох людей, що вам робити зараз. На мою думку, те, що ви зараз повинні зробити, це визнати, що правильне значення р тут становить 1.000. Ваші групи не відрізняються.


привіт, раціонально це прийняти ?? тому що всі групи та підгрупи при порівнянні разом дають однакове p-значення, це не логічно, тому що в кожному випадку я тестую 1 змінну, наприклад: test ("Ph", V1), so-p-значення не повинно бути однаковим для всі. якісь ідеї ??
кохання

Звичайно, це може бути раціональним. Р-значення 1 означає, що дві групи максимально наближені до однакових. Якщо у вас майже всі зв’язки, це може бути правдою.
Аарон вийшов із переповнення стека

@Aaron @Web Ці дані (від V1 до V7) не пов'язані. Мабуть, десь була допущена помилка в отриманні p-значень 1. Я отримую багато p-значень 0,036, порівнюючи їх з тестом підписаного Вілкоксоном підпису.
whuber

ОП розмістила лише перші кілька рядків даних; Мабуть, далі мають бути зв’язки, хоча це здається малоймовірним, оскільки дані надходять до шести знаків після коми. Так, так, здається, що в аналізі може виникнути помилка, хоча не саме та, яку ви вказуєте.
Аарон вийшов із переповнення стека
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.