हर बार अलग-अलग मान लौटाने वाले आर में डननेट की परीक्षा


13

मैं डननेट के परीक्षण की गणना करने के लिए आर 'मल्टीकैम' लाइब्रेरी ( http://cran.r-project.org/web/packages/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)
aov <- aov(Value ~ Group, data)
summary(glht(aov, linfct=mcp(Group="Dunnett")))

अब अगर मैं इस स्क्रिप्ट को R कंसोल के माध्यम से कई बार चलाता हूं तो मुझे हर बार बहुत थोड़े अलग परिणाम मिलते हैं। यहाँ एक उदाहरण है:

         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. क्या ड्यूनेट की गणना में कहीं यादृच्छिक संख्या का उपयोग किया जा रहा है?
  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)

प्रत्येक रन से पहले बीज को सेट करके, आपको लगातार परिणाम मिलते हैं। इसलिए ऐसा प्रतीत होता है कि पी-मानों की गणना में एक यादृच्छिक संख्या का उपयोग किया जा रहा है।

क्या मुझे लगता है कि यह मामूली बदलाव एक समस्या है? मैं वास्तव में इसे पसंद नहीं करता, लेकिन मैं इसके साथ रहता हूँ। एक निर्धारित बीज का उपयोग करने से आपके परिणाम प्रजनन योग्य हो जाएंगे। मैं पी-वैल्यूज़ के बारे में नहीं सोचने की सलाह दूंगा कि उनके आगे कितने सितारे हैं - बल्कि एक ऐसा चुनें जो आपके लिए सार्थक और उपयोगी हो। मैं कोशिश करता हूं कि जब तक मैं जिस प्रोजेक्ट पर काम कर रहा हूं, उसमें 5 या 6 दशमलव अंक न मिलें, तो वास्तव में सटीक स्तर की आवश्यकता होती है। इस मामले में मुझे लगता है कि ज्यादातर लोग इस बात से सहमत होंगे कि भले ही पी-वैल्यू की गणना में बदलाव हो, नतीजों की व्याख्या समान होगी।alpha


आपके उत्तर के लिए बहुत बहुत धन्यवाद। मुझे लगता है कि आप यह सोचने के बारे में सही हैं कि कितने सितारे हैं - लोगों को वैसे भी पी-मूल्य को देखना चाहिए। मुझे लगता है कि मुझे बीज को एक ज्ञात मूल्य पर सेट करना होगा, क्योंकि मेरे कार्यक्रम को मान्य करने के लिए रीसस को बिल्कुल पुन: पेश करना होगा। बस एक और सवाल - क्या आप जानते हैं कि यादृच्छिक बीज का उपयोग क्यों किया जाता है?
user1578653

1
@Aniko द्वारा लिखित उत्तर देखें जो अधिक विस्तृत विवरण प्रदान करता है। ध्यान दें मैंने आज की तारीख को बीज के रूप में इस्तेमाल किया।
एलिस वैलेंटाइनर

10

आप सही हैं, इसमें एक यादृच्छिक संख्या पीढ़ी शामिल है, और यह गणना को रन-टू-रन से भिन्न बनाती है। अपराधी वास्तव में डननेट की प्रक्रिया नहीं है, लेकिन एकल-चरण समायोजन के लिए आवश्यक बहुभिन्नरूपी वितरण है।

निम्नलिखित कोड गणना करने वाला एक उदाहरण दिखाता है जिसमें 5-आयामी वेक्टर जिसमें विनिमेय सहसंबंध के साथ बहुभिन्नरूपी वितरण है:एक्स टी 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.