Dunnett'in R'deki testi her seferinde farklı değerler döndürüyor


13

Dunnett testini hesaplamak için R 'multcomp' kütüphanesini ( http://cran.r-project.org/web/packages/multcomp/ ) kullanıyorum. Aşağıdaki komut dosyasını kullanıyorum:

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")))

Şimdi bu komut dosyasını R Konsolu üzerinden birden çok kez çalıştırırsam, her seferinde çok farklı sonuçlar elde ederim. İşte bir örnek:

         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)

Ve işte bir başka:

         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)

Gördüğünüz gibi, yukarıdaki iki sonuç çok az farklıdır, ancak son grubu (F) endişe duyduğum iki yıldızdan üç yıldıza taşımak yeterlidir.

Bununla ilgili birkaç sorum var:

  1. Bu neden oluyor?! Elbette her defasında aynı verileri koyarsanız, aynı verileri çıkarmanız gerekir.
  2. Dunnett'in hesaplamasında bir tür rasgele sayı kullanılıyor mu?
  3. Bu, her seferinde bir sorun olduğunda küçük bir değişiklik mi?

Yanıtlar:


7

İlk iki sorunuzu örnek olarak birlikte cevaplıyorum.

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)

Sonuçlar:

     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)

Tekrar çalıştırın (tohumu ayarlamadan):

summary(Dunnet)

Farklı sonuçlar:

     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)

Tekrar koş (ayarlanmış bir tohumla):

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

Aynı sonuçlar:

     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)

Her koşudan önce tohumu ayarlayarak tutarlı sonuçlar elde edersiniz. Bu nedenle, p-değerlerinin hesaplanmasında rasgele bir sayı kullanılıyor gibi görünmektedir.

Bu küçük varyasyonun bir sorun olduğunu düşünüyor muyum? Gerçekten hoşlanmıyorum, ama onunla yaşıyorum. Ayarlanmış bir tohum kullanılması sonuçlarınızın tekrarlanabilir olmasını sağlayacaktır. Yanlarında kaç yıldız olduğu konusunda p-değerlerini düşünmemeyi tavsiye ederim - sizin için anlamlı ve yararlı bir seçin . Üzerinde çalıştığım proje gerçekten bu düzeyde bir hassasiyet gerektirmedikçe, 5 ya da 6 ondalık basamağa ne olduğuna kapılmamaya çalışıyorum. Bu durumda, çoğu insan p-değeri hesaplaması biraz değişse bile sonuçların yorumunun aynı olacağını kabul edecektir.alpha


Cevabınız için çok teşekkürler. Sanırım kaç tane yıldız olduğunu düşünmemek konusunda haklısın - insanlar yine de P-değerine bakmalı. Sanırım tohumu bilinen bir değere ayarlamam gerekecek, çünkü programımı doğrulamak için sonuçların tam olarak tekrar üretilebilir olması gerekiyor. Sadece bir soru daha - rastgele tohumun neden kullanıldığını biliyor musunuz ?
user1578653

1
Daha ayrıntılı bir açıklama sağlayan @Aniko tarafından yazılan cevaba bakınız. Bugünün tarihini tohum olarak kullandığımı fark ettim.
Ellis Valentiner

10

Haklısın, rastgele bir sayı oluşturma işlemi var ve hesaplamaları çalıştırmadan çalışmaya değişir. Suçlu aslında Dunnett'in prosedürü değil, tek adımlı ayarlama için gereken çok değişkenli t dağılımıdır.

Aşağıdaki kod, değiştirilebilir korelasyonlu çok değişkenli dağılımına sahip 5 boyutlu vektör ile hesaplayan bir örneği göstermektedir: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"     

Bu endişe verici ise, set.seedtam olarak tekrarlanabilir hale getirmek için hesaplamadan önce herhangi bir argümanla arayın .

Bu arada, aşağıdakilerin çıktısında hatanın bir kabulü ve niceliği vardır glht:

> ss <- summary(glht(aov, linfct=mcp(Group="Dunnett")))
> attr(ss$test$pvalues, "error")
[1] 0.0006597562
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.