Apakah salah menggunakan jitter sebelum melakukan tes Wilcoxon?


9

Saya menulis skrip menguji data menggunakan wilcox.test, tetapi ketika saya mendapatkan hasilnya, semua nilai p sama dengan 1. Saya membaca di beberapa situs web yang dapat Anda gunakan jitter sebelum menguji data (untuk menghindari ikatan seperti yang mereka katakan), Saya melakukan ini dan sekarang saya memiliki hasil yang dapat diterima. Apakah salah melakukan ini?

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
          }
        }
}


Ini adalah output dari 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")

Datanya sangat besar, dan itu adalah utas yang saya mulai dan mereka mengatakan kepada saya bahwa mungkin melakukan hal ini salah

Catatan Pertanyaan ini berasal dari tex.SE: menghasilkan output PDFcontain R di dalam tabel lateks


2
Anda tidak memberi tahu kami apa data Anda, tetapi saya akan sangat curiga terhadap prosedur apa pun yang menambahkan suara acak ke data dan kemudian menjalankan tes statistik di atasnya. Selain itu, apakah Anda yakin kode Anda melakukan apa yang Anda pikirkan? Bacaan saya adalah bahwa terlepas dari loop Anda, itu akan mengembalikan satu p.value - nilai x = y = {lastvaluof} (uni)
Andrie

@ Andrie: terima kasih atas bantuan Anda, tapi itu bukan kode lengkap, itu adalah bagian dari fungsi yang menghitung uji wilcox, dan kode yang menghasilkan nilai p-value yang berbeda untuk masing-masing (xp, yp), itu adalah tautan dari bagian dari data saya, Anda dapat melihatnya dan memeriksa apakah saya dapat melakukan ini, terima kasih sebelumnya. mediafire.com/?mnj26kp4bv5lcr5

1
Saya akan sangat curiga terhadap tautan ke data yang mengharuskan pengalihan ke tautan lain, terutama ketika R menyediakan dput()fungsi yang sangat berguna yang menghilangkan kebutuhan untuk melakukan itu. Harap berikan contoh yang dapat direproduksi untuk menerima bantuan.
Chase


@weblover Ketika saya menyarankan (di tex.SE) untuk mengajukan pertanyaan statistik Anda di sini, saya tidak tahu Anda sudah bertanya pada SO. Harap hapus salah satu dari dua posting Anda (mungkin di SO, karena ini adalah pertanyaan statistik).
chl

Jawaban:


6

Ada utas di daftar bantuan R tentang ini; lihat misalnya: http://tolstoy.newcastle.edu.au/R/e8/help/09/12/9200.html

Saran pertama yang ada adalah mengulangi pengujian beberapa kali dengan jittering yang berbeda dan kemudian menggabungkan nilai-p untuk mendapatkan nilai-p keseluruhan, baik dengan mengambil rata-rata atau maksimum. Mereka juga menyarankan bahwa tes permutasi langsung dapat digunakan sebagai gantinya (dari keduanya, itulah yang saya inginkan). Lihat pertanyaan Implementasi tes permutasi mana di R untuk digunakan, bukan uji-t (berpasangan dan tidak berpasangan)? untuk beberapa contoh tes permutasi.

Di tempat lain di utas itu, Greg Snow menulis: Menambahkan derau acak ke data untuk menghindari peringatan adalah seperti melepas baterai dari detektor asap untuk membungkamnya daripada menyelidiki apa yang menyebabkan alarm berbunyi. (Lihat http://tolstoy.newcastle.edu.au/R/e8/help/09/12/9195.html )


terima kasih atas balasan Anda, tetapi saya tidak mengerti, apa yang harus saya lakukan sekarang? ubah tes, atau sesuaikan data berdasarkan sesuatu, dan apa ini sesuatu ???
weblover

Saya akan meringkas halaman yang saya tautkan.
Aaron meninggalkan Stack Overflow

3

(penafian: Saya tidak memeriksa kode, jawaban saya hanya berdasarkan pada deskripsi Anda)

Saya merasa bahwa apa yang ingin Anda lakukan adalah ide yang sangat buruk . Wilcoxon adalah tes resampling (atau pengacakan) untuk peringkat. Artinya, dibutuhkan peringkat dari nilai-nilai dan membandingkan peringkat ini dengan semua permutasi yang mungkin dari peringkat (lihat misalnya, di sini ).

Jadi, seperti yang Anda sadari, ikatan sangat buruk karena Anda tidak mendapatkan peringkat dari mereka. Namun, menambahkan derau acak (jitter) ke data Anda akan mengubah semua peringkat, sehingga mereka memiliki peringkat acak! Artinya, itu sangat merusak data Anda.

Karena itu: salah melakukannya .


Terima kasih, tapi apa yang harus saya lakukan dalam kasus ini ??
weblover

2

Anda telah bertanya kepada beberapa orang apa yang harus Anda lakukan sekarang. Dalam pandangan saya, apa yang harus Anda lakukan sekarang adalah menerima bahwa nilai p yang tepat di sini adalah 1.000. Grup Anda tidak berbeda.


halo, apakah masuk akal untuk menerima ini ?? karena semua grup dan subkelompok bila dibandingkan bersama-sama, memberikan nilai-p yang sama, itu tidak logis karena dalam setiap kasus saya menguji 1 variabel misalnya: tes ("Ph", V1), so-p-value tidak boleh sama untuk semua. ada ide ??
weblover

Tentu, itu bisa masuk akal. Nilai p 1 berarti bahwa kedua kelompok sedekat mungkin dengan yang sama. Jika Anda memiliki hampir semua ikatan, ini mungkin benar.
Aaron meninggalkan Stack Overflow

@ Harun @ Web Data ini (V1 hingga V7) tidak terikat. Kesalahan pasti telah terjadi di suatu tempat dalam memperoleh nilai-p dari 1. Saya mendapatkan banyak nilai-p dari 0,036 ketika membandingkannya dengan uji peringkat bertanda Wilcoxon.
whuber

OP hanya memposting beberapa baris pertama data; rupanya harus ada ikatan lebih lanjut, meskipun itu tampaknya tidak mungkin karena data masuk ke enam tempat desimal. Jadi ya, sepertinya ada kesalahan dalam analisis, meskipun tidak persis yang Anda tunjukkan.
Aaron meninggalkan Stack Overflow
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.