【R】평균치의 차이를 비교하는 방법(일원 배치 분산 분석)

9394 단어 R통계

중앙 집중식 분산 분석이란?


  • 3군 이상의 표본의 평균값을 비교할 때 사용되는 검정 방법.
  • 2군의 표본의 평균값을 비교한다면 t검정 을 사용할 수 있다.


  • 테스트 데이터


  • 다음 데이터는 문자열 조인의 속도 비교 에서 얻은 문자열 조인 기법별 처리 시간(ms)입니다.
  • plus: "+"로 문자열 결합.
  • concat : String.concat() 에 의한 문자열 결합.
  • builder:StringBuilder를 사용한 문자열 조인.
  • buffer:StringBuffer를 사용한 문자열 조인.


  • string_concat.csv
    method,time
    plus,11729
    plus,11563
    plus,11592
    plus,11639
    plus,11575
    plus,11688
    plus,11603
    plus,11597
    plus,11651
    plus,11575
    concat,4985
    concat,4994
    concat,4977
    concat,5011
    concat,5043
    concat,4992
    concat,5113
    concat,5088
    concat,4979
    concat,4998
    builder,1
    builder,1
    builder,1
    builder,1
    builder,1
    builder,1
    builder,1
    builder,1
    builder,2
    builder,1
    buffer,2
    buffer,1
    buffer,1
    buffer,2
    buffer,1
    buffer,1
    buffer,1
    buffer,1
    buffer,1
    buffer,2
    

    상자 수염 다이어그램 만들기


  • 데이터 추세를 파악하기 위해 분산 분석에 앞서 상자 수염 다이어그램을 작성했습니다.
  • 해석 데이터의 형편상 어쩔 수 없는 것이지만, 상자 수염의 "상자"가 부서진 것처럼 플롯 되어 버렸습니다...


  • R 콘솔
    > string_concat <- read.table("C:\\string_concat.csv", header=TRUE, encoding="CP932", sep=",")
    > boxplot(string_concat$time ~ string_concat$method, ylab="処理時間(ms)", main="文字列結合の手法ごとの処理時間")
    



    중앙 집중식 분산 분석 수행


  • 여기에서는, 등분산성을 가정하지 않는 「웰치의 방법의 확장」을 사용하고 있습니다.
  • 등분산성을 가정하는 경우는, 인수로서 "var.equal=TRUE"를 지정합니다.

  • 결과를 보면, p값(p-value)이 2.2e-16(※0.01 미만)이 되어 있으므로, 「문자열 결합의 수법에 의해 처리 속도가 다르다」라고 하게 됩니다.
  • 일반적으로, p값이 0.05 혹은 0.01 미만이면, 통계학적으로 유의차가 있다고 되어 있습니다.


  • R 콘솔
    > string_concat <- read.table("C:\\string_concat.csv", header=TRUE, encoding="CP932", sep=",")
    > oneway.test(string_concat$time ~ string_concat$method)
    
            One-way analysis of means (not assuming equal variances)
    
    data:  string_concat$time and string_concat$method
    F = 175010, num df = 3.000, denom df = 17.442, p-value < 2.2e-16
    

    다중 비교 수행


  • 중앙 집중식 분산 분석은 "n 그룹의 전체 데이터에서 평균값 비교"방법이지만 다중 비교를 사용하면 "각 그룹의 평균값 비교"를 수행할 수 있습니다.
  • 다음은 pairwise.t.test() 함수를 사용하여 bonferroni 방식으로 다중 비교를 수행합니다.
  • Tukey의 방법으로 다중 비교를 할 때는 TukeyHSD()라는 함수를 사용한다고 합니다.

  • 다중 비교 결과(※ 매트릭스가 되어 있는 부분)는 다음과 같습니다.
  • plus는 buffer/builder/concat에 대해서도 유의한 차이가 있었다.
  • concat은 buffer/builder에 유의미한 차이가 있었다.
  • builder와 buffer 사이에는 유의미한 차이가 없었다.


  • R 콘솔
    > pairwise.t.test(string_concat$time, string_concat$method, p.adj="bonf")
    
            Pairwise comparisons using t tests with pooled SD 
    
    data:  string_concat$time and string_concat$method 
    
            buffer builder concat
    builder 1      -       -     
    concat  <2e-16 <2e-16  -     
    plus    <2e-16 <2e-16  <2e-16
    
    P value adjustment method: bonferroni 
    

    관련 URL


  • 【R】평균값의 차이를 비교하는 방법(t 검정)
  • 좋은 웹페이지 즐겨찾기