การทดสอบของ Dunnett ใน R คืนค่าต่างกันในแต่ละครั้ง


13

ฉันใช้ไลบรารี R 'multcomp' ( http://cran.r-project.org/web/packages/multcomp/ ) เพื่อคำนวณการทดสอบของ Dunnett ฉันใช้สคริปต์ด้านล่าง:

Group <- factor(c("A","A","B","B","B","C","C","C","D","D","D","E","E","F","F","F"))
Value <- c(5,5.09901951359278,4.69041575982343,4.58257569495584,4.79583152331272,5,5.09901951359278,4.24264068711928,5.09901951359278,5.19615242270663,4.58257569495584,6.16441400296898,6.85565460040104,7.68114574786861,7.07106781186548,6.48074069840786)
data <- data.frame(Group, Value)
aov <- aov(Value ~ Group, data)
summary(glht(aov, linfct=mcp(Group="Dunnett")))

ตอนนี้ถ้าฉันรันสคริปต์นี้ผ่าน R Console หลาย ๆ ครั้งฉันจะได้ผลลัพธ์ที่แตกต่างกันเล็กน้อยในแต่ละครั้ง นี่คือตัวอย่างหนึ่ง:

         Simultaneous Tests for General Linear Hypotheses

Multiple Comparisons of Means: Dunnett Contrasts


Fit: aov(formula = Value ~ Group, data = data)

Linear Hypotheses:
           Estimate Std. Error t value Pr(>|t|)   
B - A == 0 -0.35990    0.37009  -0.972  0.76545   
C - A == 0 -0.26896    0.37009  -0.727  0.90019   
D - A == 0 -0.09026    0.37009  -0.244  0.99894   
E - A == 0  1.46052    0.40541   3.603  0.01710 * 
F - A == 0  2.02814    0.37009   5.480  0.00104 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1
(Adjusted p values reported -- single-step method)

และนี่คืออีก:

         Simultaneous Tests for General Linear Hypotheses

Multiple Comparisons of Means: Dunnett Contrasts


Fit: aov(formula = Value ~ Group, data = data)

Linear Hypotheses:
           Estimate Std. Error t value Pr(>|t|)    
B - A == 0 -0.35990    0.37009  -0.972   0.7654    
C - A == 0 -0.26896    0.37009  -0.727   0.9001    
D - A == 0 -0.09026    0.37009  -0.244   0.9989    
E - A == 0  1.46052    0.40541   3.603   0.0173 *  
F - A == 0  2.02814    0.37009   5.480   <0.001 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1
(Adjusted p values reported -- single-step method)

อย่างที่คุณเห็นผลลัพธ์ทั้งสองข้างบนแตกต่างกันเล็กน้อย แต่ก็เพียงพอที่จะย้ายกลุ่มสุดท้าย (F) จากสองดาวเป็นสามดาวซึ่งฉันรู้สึกกังวล

ฉันมีคำถามหลายข้อเกี่ยวกับเรื่องนี้:

  1. ทำไมสิ่งนี้ถึงเกิดขึ้น! แน่นอนถ้าคุณใส่ข้อมูลเดิมในแต่ละครั้งคุณควรลบข้อมูลเดิมออกไป
  2. มีการใช้เลขสุ่มในการคำนวณของ Dunnett บ้างไหม?
  3. นี่เป็นความแตกต่างเล็กน้อยทุกครั้งที่เกิดปัญหาหรือไม่?

คำตอบ:


7

ฉันกำลังตอบคำถามสองข้อแรกของคุณด้วยกันผ่านตัวอย่าง

library(multcomp)

Group <- factor(c("A","A","B","B","B","C","C","C","D","D","D","E","E","F","F","F"))
Value <- c(5,5.09901951359278,4.69041575982343,4.58257569495584,4.79583152331272,5,5.09901951359278,4.24264068711928,5.09901951359278,5.19615242270663,4.58257569495584,6.16441400296898,6.85565460040104,7.68114574786861,7.07106781186548,6.48074069840786)
data <- data.frame(Group, Value)

fit <- aov(Value ~ Group, data)

set.seed(20140123)
Dunnet <- glht(fit, linfct=mcp(Group="Dunnett"))
summary(Dunnet)

ผล:

     Simultaneous Tests for General Linear Hypotheses

Multiple Comparisons of Means: Dunnett Contrasts


Fit: aov(formula = Value ~ Group, data = data)

Linear Hypotheses:
           Estimate Std. Error t value Pr(>|t|)   
B - A == 0 -0.35990    0.37009  -0.972  0.76536   
C - A == 0 -0.26896    0.37009  -0.727  0.90012   
D - A == 0 -0.09026    0.37009  -0.244  0.99895   
E - A == 0  1.46052    0.40541   3.603  0.01794 * 
F - A == 0  2.02814    0.37009   5.480  0.00112 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1
(Adjusted p values reported -- single-step method)

ทำงานอีกครั้ง (โดยไม่ต้องตั้งค่าเริ่มต้น):

summary(Dunnet)

ผลลัพธ์ที่แตกต่าง:

     Simultaneous Tests for General Linear Hypotheses

Multiple Comparisons of Means: Dunnett Contrasts


Fit: aov(formula = Value ~ Group, data = data)

Linear Hypotheses:
           Estimate Std. Error t value Pr(>|t|)   
B - A == 0 -0.35990    0.37009  -0.972  0.76535   
C - A == 0 -0.26896    0.37009  -0.727  0.90020   
D - A == 0 -0.09026    0.37009  -0.244  0.99895   
E - A == 0  1.46052    0.40541   3.603  0.01767 * 
F - A == 0  2.02814    0.37009   5.480  0.00105 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1
(Adjusted p values reported -- single-step method)

ทำงานอีกครั้ง (พร้อมชุดเมล็ด):

set.seed(20140123)
Dunnet <- glht(fit, linfct=mcp(Group="Dunnett"))
summary(Dunnet)

ผลลัพธ์เดียวกัน:

     Simultaneous Tests for General Linear Hypotheses

Multiple Comparisons of Means: Dunnett Contrasts


Fit: aov(formula = Value ~ Group, data = data)

Linear Hypotheses:
           Estimate Std. Error t value Pr(>|t|)   
B - A == 0 -0.35990    0.37009  -0.972  0.76536   
C - A == 0 -0.26896    0.37009  -0.727  0.90012   
D - A == 0 -0.09026    0.37009  -0.244  0.99895   
E - A == 0  1.46052    0.40541   3.603  0.01794 * 
F - A == 0  2.02814    0.37009   5.480  0.00112 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1
(Adjusted p values reported -- single-step method)

โดยการตั้งค่าเมล็ดพันธุ์ก่อนการวิ่งแต่ละครั้งคุณจะได้รับผลลัพธ์ที่สอดคล้องกัน ดังนั้นจึงปรากฏว่ามีการใช้ตัวเลขสุ่มในการคำนวณค่า p

ฉันคิดว่าการเปลี่ยนแปลงเล็กน้อยนี้เป็นปัญหาหรือไม่ ฉันไม่ชอบมัน แต่ฉันจะอยู่กับมัน การใช้เมล็ดพันธุ์ชุดจะทำให้ผลลัพธ์ของคุณทำซ้ำได้ ฉันไม่แนะนำให้คิดถึงค่า p ในแง่ของจำนวนดาวที่อยู่ถัดจากพวกเขา - เลือกที่มีความหมายและมีประโยชน์สำหรับคุณ ฉันพยายามที่จะไม่จมอยู่กับสิ่งที่เกิดขึ้น 5 หรือ 6 จุดทศนิยมเว้นแต่ว่าโครงการที่ฉันกำลังทำอยู่นั้นต้องใช้ความแม่นยำระดับนั้นจริงๆ ในกรณีนี้ฉันคิดว่าคนส่วนใหญ่จะยอมรับว่าแม้ว่าการคำนวณค่า p เปลี่ยนแปลงเล็กน้อยการตีความของผลลัพธ์จะเหมือนกันaล.พีชั่วโมงa


ขอบคุณมากสำหรับคำตอบของคุณ ฉันคิดว่าคุณคิดถูกที่ไม่คิดว่าจะมีดาวอยู่กี่ดวง - ผู้คนควรจะดูค่า P ต่อไป ฉันคิดว่าฉันจะต้องตั้งค่าเมล็ดเป็นค่าที่รู้จักแม้ว่าเพราะเพื่อตรวจสอบโปรแกรมของฉัน resuls จะต้องทำซ้ำอย่างแน่นอน อีกหนึ่งคำถาม - คุณรู้ไหมว่าทำไมใช้เมล็ดพันธุ์แบบสุ่ม?
user1578653

1
ดูคำตอบที่เขียนโดย @Aniko ซึ่งให้คำอธิบายโดยละเอียดเพิ่มเติม สังเกตุฉันใช้วันที่วันนี้เป็นเมล็ด
Ellis Valentiner

10

คุณถูกต้องมีการสร้างหมายเลขสุ่มที่เกี่ยวข้องและทำให้การคำนวณแตกต่างจากการเรียกใช้เพื่อเรียกใช้ ผู้ร้ายไม่ใช่กระบวนการของ Dunnett แต่เป็นการกระจายหลายตัวแปรที่จำเป็นสำหรับการปรับขั้นตอนเดียว

รหัสต่อไปนี้แสดงตัวอย่างการคำนวณด้วยเวกเตอร์ 5 มิติมีการแจกแจงหลายตัวแปรที่มีความสัมพันธ์แบบแลกเปลี่ยนได้X T 5P(X<0)XT5

> library(mvtnorm)
> cr2 <- matrix(rep(0.3, 25), nr=5); diag(cr2) <- 1
> cr2
     [,1] [,2] [,3] [,4] [,5]
[1,]  1.0  0.3  0.3  0.3  0.3
[2,]  0.3  1.0  0.3  0.3  0.3
[3,]  0.3  0.3  1.0  0.3  0.3
[4,]  0.3  0.3  0.3  1.0  0.3
[5,]  0.3  0.3  0.3  0.3  1.0
> b <- pmvt(lower=rep(-Inf,5), upper=rep(0,5), delta=rep(0,5), df=5, corr=cr2)
> a <- pmvt(lower=rep(-Inf,5), upper=rep(0,5), delta=rep(0,5), df=5, corr=cr2)
> all.equal(a,b)
[1] "Attributes: < Component 1: Mean relative difference: 0.1527122 >"
[2] "Mean relative difference: 0.0003698006"     

หากเป็นเรื่องที่น่ากังวลให้เรียกset.seedอาร์กิวเมนต์ใด ๆ ก่อนการคำนวณเพื่อให้สามารถทำซ้ำได้อย่างแน่นอน

โดยวิธีการที่มีการรับรู้และปริมาณของข้อผิดพลาดในผลลัพธ์ของglht:

> ss <- summary(glht(aov, linfct=mcp(Group="Dunnett")))
> attr(ss$test$pvalues, "error")
[1] 0.0006597562
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.