매번 다른 값을 반환하는 R의 Dunnett 테스트


13

Dunnett의 테스트를 계산하기 위해 R 'multcomp'라이브러리 ( 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. 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- 값 계산이 약간 변경 되더라도 결과의 해석은 동일하다는 데 대부분의 사람들이 동의 할 것이라고 생각합니다.alpha


답변 주셔서 대단히 감사합니다. 나는 당신이 얼마나 많은 별들이 있는지 생각하지 않는 것이 옳다고 생각합니다. 사람들은 어쨌든 P- 값을보고 있어야합니다. 내 프로그램을 확인하려면 resuls를 정확하게 재현 할 수 있어야하기 때문에 씨앗을 알려진 값으로 설정해야한다고 생각합니다. 질문 하나만 더 – 랜덤 시드가 사용 되는지 아십니까 ?
user1578653

1
더 자세한 설명을 제공하는 @Aniko의 답변을 참조하십시오. 오늘 날짜를 씨앗으로 사용했습니다.
Ellis Valentiner

10

맞습니다. 난수 생성이 포함되어 있으며 계산은 실행마다 다릅니다. 범인은 실제로 Dunnett의 절차는 아니지만 단일 단계 조정에 필요한 다변량 t 분포입니다.

다음 코드는 교환 가능한 상관 관계를 갖는 다변량 분포를 갖는 5 차원 벡터 을 계산하는 예를 보여줍니다 .P(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.