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
r
nonparametric
ties
weblover
sumber
sumber
dput()
fungsi yang sangat berguna yang menghilangkan kebutuhan untuk melakukan itu. Harap berikan contoh yang dapat direproduksi untuk menerima bantuan.Jawaban:
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 )
sumber
(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 .
sumber
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.
sumber