R에서 bonferroni 보정을 수행하는 방법


일원 분산 분석은 3개 이상의 독립 그룹 평균 간에 통계적으로 유의한 차이가 있는지 여부를 확인하는 데 사용됩니다.

ANOVA 테이블의 전체 p-값이 특정 유의 수준보다 낮으면 그룹 평균 중 하나 이상이 다른 평균과 다르다고 말할 수 있는 충분한 증거가 있는 것입니다.

그러나 이는 어떤 그룹이 서로 다른지는 알려주지 않습니다. 이는 단순히 모든 그룹 평균이 동일하지는 않다는 것을 알려줍니다.

어떤 그룹이 서로 다른지 정확히 알기 위해서는 familywise 오류율을 제어하면서 각 그룹 간에 pairwise t-test를 수행해야 합니다.

이를 달성하는 가장 일반적인 방법 중 하나는 각 쌍별 t-검정에 대한 p-값을 계산할 때 Bonferroni 보정을 사용하는 것입니다.

이 튜토리얼에서는 R에서 Bonferroni 수정을 수행하는 방법을 설명합니다.

예: R의 Bonferroni 수정

교사가 세 가지 다른 학습 방법이 학생들 사이에 다른 시험 점수로 이어지는지 여부를 알고 싶어한다고 가정해 보겠습니다.

이를 테스트하기 위해 그녀는 각 학습 기술을 사용하도록 10명의 학생을 무작위로 할당합니다. 일주일 동안 할당된 학습 방법을 사용한 후 각 학생은 동일한 시험을 치릅니다.

R에서 다음 단계를 사용하여 일원 분산 분석을 적용하고 Bonferroni 수정을 사용하여 각 그룹의 시험 결과 간의 쌍별 차이를 계산할 수 있습니다.

1단계: 데이터세트를 만듭니다.

다음 코드는 학생 30명 모두의 시험 결과가 포함된 데이터 세트를 생성하는 방법을 보여줍니다.

 #create data frame
data <- data.frame(technique = rep (c("tech1", "tech2", "tech3"), each = 10 ),
                   score = c(76, 77, 77, 81, 82, 82, 83, 84, 85, 89,
                             81, 82, 83, 83, 83, 84, 87, 90, 92, 93,
                             77, 78, 79, 88, 89, 90, 91, 95, 95, 98))

#view first six rows of data frame
head(data)

  technical score
1 tech1 76
2 tech1 77
3 tech1 77
4 tech1 81
5 tech1 82
6 tech1 82

2단계: 각 그룹의 시험 결과를 봅니다.

다음 코드는 각 그룹의 시험 결과 분포를 시각화하기 위해 상자 그림을 생성하는 방법을 보여줍니다.

 boxplot(score ~ technique,
        data = data,
        main = "Exam Scores by Studying Technique",
        xlab = "Studying Technique",
        ylab = "Exam Scores",
        col = "steelblue",
        border = "black")

R의 Bonferroni 수정

3단계: 일원 분산 분석을 수행합니다.

다음 코드는 일원 분산 분석을 수행하여 각 그룹의 평균 시험 점수 간의 차이를 테스트하는 방법을 보여줍니다.

 #fit the one-way ANOVA model
model <- aov(score ~ technique, data = data)

#view model output
summary(model)

            Df Sum Sq Mean Sq F value Pr(>F)  
technical 2 211.5 105.73 3.415 0.0476 *
Residuals 27 836.0 30.96                 
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

전체 p-값( 0.0476 )이 0.05보다 작으므로 이는 각 그룹의 평균 시험 점수가 동일하지 않음을 나타냅니다.

다음으로, p-값에 대한 Bonferroni 보정을 사용하여 쌍별 t-검정을 수행하여 각 그룹의 시험 결과 간의 쌍별 차이를 계산하겠습니다.

4단계: 쌍별 t-검정을 수행합니다.

R에서 Bonferroni 수정을 사용하여 쌍별 t-검정을 수행하려면 다음 구문을 사용하는 pairwise.t.test() 함수를 사용할 수 있습니다.

pairwise.t.test(x, g, p.adjust.method=”bonferroni”)

금:

  • x: 반응 값의 수치 벡터
  • g: 그룹의 이름을 지정하는 벡터(예: 연구 기법)

다음 코드는 예제에서 이 함수를 사용하는 방법을 보여줍니다.

 #perform pairwise t-tests with Bonferroni's correction
pairwise.t.test(data$score, data$technique, p.adjust.method=" bonferroni ")

	Pairwise comparisons using t tests with pooled SD 

data: data$score and data$technique 

      tech1 tech2
tech2 0.309 -    
tech3 0.048 1.000

P value adjustment method: bonferroni

결과를 해석하는 방법은 다음과 같습니다.

  • 기법 1과 기법 2 사이의 시험 점수 평균 차이에 대한 수정된 p-값은 0.309 입니다.
  • 기술 1과 기술 3 간의 시험 점수 평균 차이에 대한 수정된 p-값은 0.048 입니다.
  • 기법 2와 기법 3 간의 시험 점수 평균 차이에 대한 수정된 p-값은 1000 입니다.

결과를 바탕으로 기술 1과 기술 3 사이에 유일하게 중요한 차이점이 있음을 알 수 있습니다.

추가 리소스

일원 분산 분석 소개
R에서 일원 분산 분석을 수행하는 방법
R에서 Tukey 테스트를 수행하는 방법
R에서 Dunnett의 테스트를 수행하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다