ผิดหรือไม่ที่จะกระวนกระวายใจก่อนที่จะทำการทดสอบ Wilcoxon?


9

ฉันเขียนสคริปต์ทดสอบข้อมูลโดยใช้wilcox.testแต่เมื่อฉันได้ผลลัพธ์ผลลัพธ์ค่า p ทั้งหมดที่เท่ากับ 1 ฉันอ่านในบางเว็บไซต์ที่คุณสามารถใช้ jitter ก่อนทดสอบข้อมูล (เพื่อหลีกเลี่ยงความสัมพันธ์ตามที่กล่าวไว้) ฉันทำสิ่งนี้และตอนนี้ฉันมีผลลัพธ์ที่ยอมรับได้ การทำเช่นนี้ผิดหรือเปล่า?

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

@Andrie: ขอบคุณสำหรับความช่วยเหลือของคุณ แต่นั่นไม่ใช่รหัสที่สมบูรณ์นั่นเป็นส่วนหนึ่งของฟังก์ชั่นที่คำนวณการทดสอบ wilcox และรหัสที่สร้างค่า p-value ที่แตกต่างกันสำหรับแต่ละ (xp, yp) นั่นคือลิงค์ของ เป็นส่วนหนึ่งของข้อมูลของฉันคุณสามารถดูและตรวจสอบว่าฉันสามารถทำได้ขอบคุณล่วงหน้า mediafire.com/?mnj26kp4bv5lcr5

1
ฉันจะสงสัยลิงก์ไปยังข้อมูลที่ต้องการเปลี่ยนเส้นทางไปยังลิงก์อื่น ๆ โดยเฉพาะอย่างยิ่งเมื่อ R มีdput()ฟังก์ชันที่มีประโยชน์มากซึ่งไม่จำเป็นต้องทำเช่นนั้น โปรดให้ตัวอย่างที่ทำซ้ำได้เพื่อรับความช่วยเหลือ
ไล่

ข้ามการโพสต์: stackoverflow.com/questions/5554037/…
Chase

@weblover เมื่อฉันแนะนำ (ใน tex.SE) เพื่อถามคำถามเกี่ยวกับสถิติของคุณที่นี่ฉันไม่รู้ว่าคุณได้ถามดังนั้น โปรดลบหนึ่งในสองโพสต์ของคุณ (อาจเป็น SO เนื่องจากเป็นคำถามสถิติ)
chl

คำตอบ:


6

มีหัวข้อในรายการความช่วยเหลือ R เกี่ยวกับสิ่งนี้ ดูตัวอย่าง: http://tolstoy.newcastle.edu.au/R/e8/help/09/12/9200.html

ข้อเสนอแนะแรกคือการทดสอบซ้ำหลายครั้งด้วยการกระวนกระวายใจที่แตกต่างกันจากนั้นรวมค่า p เพื่อรับค่า p โดยรวมทั้งโดยการหาค่าเฉลี่ยหรือค่าสูงสุด พวกเขายังแนะนำว่าการทดสอบการเปลี่ยนรูปแบบตรงไปตรงมาสามารถใช้แทน (จากสองแบบนั่นคือสิ่งที่ฉันต้องการ) ดูคำถามการใช้การทดสอบการเปลี่ยนรูปแบบใดใน R ที่จะใช้แทนการทดสอบ t (ทั้งคู่และไม่ใช่คู่)? สำหรับตัวอย่างของการทดสอบการเปลี่ยนรูป

Greg Snow เขียนที่อื่นในหัวข้อนั้น: การเพิ่มสัญญาณรบกวนแบบสุ่มลงในข้อมูลเพื่อหลีกเลี่ยงการเตือนก็เหมือนกับการถอดแบตเตอรี่ออกจากเครื่องตรวจจับควันเพื่อปิดเสียงแทนที่จะทำการตรวจสอบสิ่งที่ทำให้สัญญาณเตือนหายไป (ดูhttp://tolstoy.newcastle.edu.au/R/e8/help/09/12/9195.html )


ขอบคุณสำหรับการตอบกลับของคุณ แต่ฉันไม่ได้รับสิ่งที่ฉันควรทำตอนนี้? เปลี่ยนการทดสอบหรือปรับข้อมูลตามบางสิ่งและนี่คืออะไร ???
weblover

ฉันจะสรุปหน้าที่เชื่อมโยงไป
Aaron ออกจาก Stack Overflow เมื่อ

3

(ข้อจำกัดความรับผิดชอบ: ฉันไม่ได้ตรวจสอบรหัสคำตอบของฉันขึ้นอยู่กับคำอธิบายของคุณ)

ฉันมีความรู้สึกว่าสิ่งที่คุณต้องการจะทำคือความคิดที่ดีจริงๆ Wilcoxon เป็นการทดสอบ resampling (หรือการสุ่ม) สำหรับตำแหน่ง นั่นคือมันใช้อันดับของค่าและเปรียบเทียบลำดับเหล่านี้กับการเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมดของอันดับ (ดูเช่นที่นี่ )

ดังนั้นในขณะที่คุณตระหนักถึงความสัมพันธ์ที่เลวร้ายในขณะที่คุณไม่ได้รับการจัดอันดับออกจากพวกเขา อย่างไรก็ตามการเพิ่มสัญญาณรบกวนแบบสุ่ม (กระวนกระวายใจ) ในข้อมูลของคุณจะแปลงอันดับทั้งหมดเพื่อให้มีอันดับแบบสุ่ม! นั่นคือมันบิดเบือนข้อมูลของคุณอย่างรุนแรง

ดังนั้น: ผิดที่จะทำเช่นนั้น


ขอบคุณสำหรับคำตอบของคุณ แต่ฉันควรทำอย่างไรในกรณีนี้?
weblover

2

คุณถามคนหลายคนว่าคุณควรทำอะไรตอนนี้ ในมุมมองของฉันสิ่งที่คุณควรทำตอนนี้ยอมรับว่าค่า p ที่เหมาะสมที่นี่คือ 1.000 กลุ่มของคุณไม่แตกต่างกัน


สวัสดีมันมีเหตุผลที่จะยอมรับสิ่งนี้หรือไม่? เนื่องจากกลุ่มและกลุ่มย่อยทั้งหมดเมื่อเปรียบเทียบกันให้ค่า p เดียวกันนั่นไม่ใช่เหตุผลเพราะในแต่ละกรณีฉันกำลังทดสอบตัวแปร 1 ตัวเช่น: test ("Ph", V1), p-value soo ไม่ควรเหมือนกันสำหรับ ทั้งหมด ความคิดใด ๆ ??
weblover

แน่นอนมันอาจเป็นเหตุผล p-value 1 หมายถึงว่าทั้งสองกลุ่มนั้นใกล้เคียงกันมากที่สุด หากคุณมีความสัมพันธ์เกือบทั้งหมดนี่อาจเป็นจริง
แอรอนออกจาก Stack Overflow

@Aaron @Web ข้อมูลเหล่านี้ (V1 ถึง V7) ไม่ได้เชื่อมโยงกัน ต้องมีข้อผิดพลาดเกิดขึ้นที่ไหนสักแห่งในการรับค่า p - 1 ฉันได้รับค่า p-0.036 จำนวนมากเมื่อเปรียบเทียบกับการทดสอบแบบลงนาม Wilcoxon
whuber

OP จะโพสต์แถวข้อมูลสองสามแถวแรกเท่านั้น เห็นได้ชัดว่าจะต้องมีความสัมพันธ์ต่อไปแม้ว่าจะดูเหมือนไม่น่าเป็นไปได้เนื่องจากข้อมูลไปที่ทศนิยมหกตำแหน่ง ดังนั้นใช่ดูเหมือนว่าอาจมีข้อผิดพลาดในการวิเคราะห์แม้ว่าจะไม่ใช่สิ่งที่คุณชี้ให้เห็น
Aaron ออกจาก Stack Overflow
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.