Last updated: October 2009. Kajiyama                    [ 目次に戻る ]

datasets"InsectSprays"による,殺虫剤スプレーの効果分析

くり返しのある一元配置分散分析と多重比較 (対応なし・標本数は同じ)


  1. 「対応なし・標本数が同じ」場合の練習課題

    六種類の殺虫剤スプレーA〜F(因子A 6水準)の効果を検討する.

    各スプレー12箇所の区画を設け,殺虫剤を噴霧し,その区画で殺虫剤により亡くなった虫(count 測定値)を数えた.

    六種類の殺虫剤スプレーに違いがあるか,どのスプレーが効果的かを知りたい.有意水準5%で検討する.


    表1  殺虫剤スプレーの効果 「アンスタック形式」

    このデータセット"InsectSprays"はすでにRに組み込まれている.

    > ? InsectSprays
    # データセット解説

    A data frame with 72 observations on 2 variables.
    count: numeric Insect count
    spray: factor The type of spray


    実験区画
    サンプル
    01
    02
    ・・
    12
    平均値
    水準A1
    A
    水準A2
    B
    水準A3
    C
    水準A4
    D
    水準A5
    E
    水準A6
    F
               
               
               
               
    14.5 15.3 2.08 4.92 3.50 6.59
        A  B C  D E  F
    1  10 11 0  3 3 11
    2   7 17 1  5 5  9
    3  20 21 7 12 3 15
    4  14 11 2  6 5 22
    5  14 16 3  4 3 15
    6  12 14 1  3 6 16
    7  10 17 2  5 1 13
    8  23 17 1  5 1 10
    9  17 19 3  5 3 26
    10 20 21 0  5 2 26
    11 14  7 1  2 6 24
    12 13 13 4  4 4 13
    

    表2  殺虫剤スプレーの効果 「スタック形式」

       count spray
    1     10     A
    2      7     A
    3     20     A
    4     14     A
    5     14     A
    6     12     A
    7     10     A
    8     23     A
    9     17     A
    10    20     A
    11    14     A
    12    13     A
    13    11     B
    14    17     B
    15    21     B
    16    11     B
    17    16     B
    18    14     B
    19    17     B
    20    17     B
    21    19     B
    22    21     B
    23     7     B
    24    13     B
    25     0     C
    26     1     C
    27     7     C
    28     2     C
    29     3     C
    30     1     C
    31     2     C
    32     1     C
    33     3     C
    34     0     C
    35     1     C
    36     4     C
    37     3     D
    38     5     D
    39    12     D
    40     6     D
    41     4     D
    42     3     D
    43     5     D
    44     5     D
    45     5     D
    46     5     D
    47     2     D
    48     4     D
    49     3     E
    50     5     E
    51     3     E
    52     5     E
    53     3     E
    54     6     E
    55     1     E
    56     1     E
    57     3     E
    58     2     E
    59     6     E
    60     4     E
    61    11     F
    62     9     F
    63    15     F
    64    22     F
    65    15     F
    66    16     F
    67    13     F
    68    10     F
    69    26     F
    70    26     F
    71    24     F
    72    13     F
    


  2. 使用する「InsectSprays」のデータ構造の確認


    (1) 「InsectSprays」データ (スタック形式)のデータリスト

    ・「コンソール」 画面に,

    InsectSprays #   と記述すると,InsectSpraysはRに組み込みこまれていて 2変数72サンプルが表示される.

    str ( InsectSprays) #   と記述し,データ構造を確認する.

    > InsectSprays
       count spray
    1     10     A
    2      7     A
    3     20     A
    4     14     A
    5     14     A
    ・・・・・・・
    69    26     F
    70    26     F
    71    24     F
    72    13     F
    
    > str ( InsectSprays)
    'data.frame':   72 obs. of  2 variables:
     $ count: num  10 7 20 14 14 12 10 23 17 20 ...
     $ spray: Factor w/ 6 levels "A","B","C","D",..: 1 1 1 1 1 1 1 1 1 1 ...
    



  3. 1因子Aの基礎統計


    a. 因子Aの基礎統計量  種別(spray)に死んだ虫の総数(count)についての基礎統計量

    Rの「コンソール」画面に,

    by ( InsectSprays$count, InsectSprays$spray, summary) #   と記述し,spray別の基礎統計利用を計算する.

    > by ( InsectSprays$count, InsectSprays$spray, summary)
    InsectSprays$spray: A
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
       7.00   11.50   14.00   14.50   17.75   23.00 
    -------------------------------------------------------------- 
    InsectSprays$spray: B
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
       7.00   12.50   16.50   15.33   17.50   21.00 
    -------------------------------------------------------------- 
    InsectSprays$spray: C
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      0.000   1.000   1.500   2.083   3.000   7.000 
    -------------------------------------------------------------- 
    InsectSprays$spray: D
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      2.000   3.750   5.000   4.917   5.000  12.000 
    -------------------------------------------------------------- 
    InsectSprays$spray: E
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
       1.00    2.75    3.00    3.50    5.00    6.00 
    -------------------------------------------------------------- 
    InsectSprays$spray: F
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
       9.00   12.50   15.00   16.67   22.50   26.00 
      4.900   6.225   6.500   6.588   6.900   7.900 
    


    b. 因子AB別の平均値の推移図   # plotMeans関数を使用するにはパッケージ 「Rcmdr」を読み込んでおくこと

    種別(spray)に死んだ虫の総数(count)の「箱ひげグラフ」と「平均値の推移図を作成する.

    boxplot (InsectSprays$count ~ InsectSprays$spray ) #  と記述し,箱ひげグラフを表示する.

    plotMeans ( InsectSprays$count, InsectSprays$spray, error.bars="se") #  と記述し,平均値の推移図を表示する.


    c. グラフの観察

    効き目の強いスプレーABFと効き目の劣るスプレーCDEに分かれることが観察できる.



  4.  バートレット(Bartlett)の検定--分散の等質性(等分散性)の検定


    6水準(6群)の分散が等しいか,あるいは等しくないかを検定する.6水準のデータの分散は等質であるとの帰無仮説を立てる.

    分散分析は,分散が等しいという仮定の上で構築されているので標本の測定値にもとづいて分散が一様であるか検討する.

    ただし,分散分析のF検定はその前提条件が崩れても,検定結果は信頼できるといわれている.


    Rの「コンソール」画面に,

    bartlett.test ( InsectSprays$count ~ InsectSprays$spray )

    と記述し,「スタック形式」のデータで,分散の等質性の検定を行う.

    バートレットの検定は水準ごとの標本の数が同じでない場合も使用できる.

    p値が0.05以下のときに水準の分散は等しくないと結論する.


    >  bartlett.test ( InsectSprays$count ~ InsectSprays$spray )
    
            Bartlett test of homogeneity of variances
    
    data:  InsectSprays$count by InsectSprays$spray 
    Bartlett's K-squared = 25.9598, df = 5, p-value = 9.085e-05
    

    分析結果

    p値が0.00005であり,p値<0.05であるので各水準の分散は等しくないと結論する.

    分散の等質性(等分散性)が成り立たない場合,oneway.test関数で分散分析に進む.

    分散の等質性(等分散性)が成り立たない場合,設定した水準の見直,水準を増やしたり統合したりすることも必要かもしれません.



  5. 等分散性を仮定しない,種別(spray)に殺した虫の数(count)を,「対応なし」で一元配置・分散分析する oneway.test ()


    (1) 等分散性を仮定しない平均値の差の検定としてoneway.test関数がある.これはWelchの方法を拡張した検定法で,

    oneway.test( InsectSprays$count ~ InsectSprays$spray )
    # と記述する.

    > oneway.test( InsectSprays$count ~ InsectSprays$spray )
    
             One-way analysis of means (not assuming equal variances)
    
    data:  InsectSprays$count and InsectSprays$spray 
    F = 36.0654, num df = 5.000, denom df = 30.043, p-value = 8e-12
    

    結果は,p値=8e-12 < 0.05 であり,対立仮説が採択され,

    種別(spray)に殺した虫の数(count)の平均値には差があるといえる.殺虫剤スプレーの効能は異なる.


    (2) oneway.test関数で分散性が等しい( var.equal=TRUE )と仮定した場合の平均値の差の検定では,

    oneway.test( InsectSprays$count ~ InsectSprays$spray, var.equal=TRUE ) # と記述する.

    > oneway.test( InsectSprays$count ~ InsectSprays$spray, var.equal=TRUE )
    
                    One-way analysis of means
    
    data:  InsectSprays$count and InsectSprays$spray 
    F = 34.7023, num df = 5, denom df = 66, p-value < 2.2e-16
    

    結果は,p値=2.2e-16 < 0.05 であり,対立仮説が採択され,

    種別(spray)に殺した虫の数(count)の平均値には差があるといえる.殺虫剤スプレーの効能は異なる.

    次の,aov ( InsectSprays$count ~ InsectSprays$spray ) 関数と同じ結果になる.



  6. 練習で,分散性が等しいと仮定した場合,

    種別(spray)に殺した虫の数(count)を,「対応なし」で一元配置・分散分析する aov ()



    仮に,各水準の分散は等しいとして,分散分析に進む場合は.

    調べた12X6=72標本の「区画」どれひとつ同じものでは無いので,「対応なし」で一因子6水準の分散分析を行う.

    「6種別(spray)に殺した虫の数(count)の母集団の平均値に差があるか」,有意水準5%で検討する.

    帰無仮説は「6水準(6種類の殺虫剤スプレー)の母集団の虫の数の平均値は等しい」.

    対立仮説は,「全ての水準の組み合わせに平均値の差がある」のでなく,「6水準の少なくとも一組に平均値の差がある」.



    Rの「コンソール」画面に,

    summary ( aov ( InsectSprays$count ~ InsectSprays$spray) )

    と記述し,「スタック形式」のデータで,「対応なし」分散分析を行う.

    > summary ( aov ( InsectSprays$count ~ InsectSprays$spray) )
                                    Df  Sum Sq Mean Sq F value    Pr(>F)    
    InsectSprays$spray  5 2668.83  533.77  34.702 < 2.2e-16 ***
    Residuals          66 1015.17   15.38                      
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
    有意性の記号 :    ***  (0.1%で有意)  **  (1%で有意)   *  (5%で有意)
    

    
    分散分析表が表示される.これを整形すると,以下のようになる.
    
    -----------------------------------------------------------
                (変動) (不偏分散) (分散比)
    変動要因    自由度  平方和  平均平方和   F値    P値    
    -----------------------------------------------------------
    因子A         5    2668.83   533.77   34.702  < 2.2e-16 ***
    誤差E        66    1015.17    15.38                     
    -----------------------------------------------------------
    *** p<.001
    
    分析結果

    因子AのA1〜A6の水準間の変動について,P値<0.001であることから,帰無仮説は0.5%の水準で棄却され,対立仮説が採択される.

    3水準の平均値は0.5%で有意差が認められる.六種類のスプレーの殺虫力は異なるといえる.


  7. 「対応なし・標本数が同じ」場合の多重比較


    分散分析では,どのスプレーとどのスプレーに(どの水準とどの水準に)差があるかは,明らかにしてくれない.

    このため多重比較の事後検定(下位検定)を行う.


    1. 「対応なし・標本数が同じ」場合の テューキー(Tukey)の方法

      Rの「コンソール」画面に,

      TukeyHSD ( aov ( InsectSprays$count ~ InsectSprays$spray ) )

      と記述し,Tukey(テューキー)の方法で多重比較を行う.

      > TukeyHSD ( aov ( InsectSprays$count ~ InsectSprays$spray ) )
        Tukey multiple comparisons of means
          95% family-wise confidence level
      
      Fit: aov(formula = InsectSprays$count ~ InsectSprays$spray)
      
      $`InsectSprays$spray`
                 diff        lwr       upr     p adj
      B-A   0.8333333  -3.866075  5.532742 0.9951810
      C-A -12.4166667 -17.116075 -7.717258 0.0000000
      D-A  -9.5833333 -14.282742 -4.883925 0.0000014
      E-A -11.0000000 -15.699409 -6.300591 0.0000000
      F-A   2.1666667  -2.532742  6.866075 0.7542147
      C-B -13.2500000 -17.949409 -8.550591 0.0000000
      D-B -10.4166667 -15.116075 -5.717258 0.0000002
      E-B -11.8333333 -16.532742 -7.133925 0.0000000
      F-B   1.3333333  -3.366075  6.032742 0.9603075
      D-C   2.8333333  -1.866075  7.532742 0.4920707
      E-C   1.4166667  -3.282742  6.116075 0.9488669
      F-C  14.5833333   9.883925 19.282742 0.0000000
      E-D  -1.4166667  -6.116075  3.282742 0.9488669
      F-D  11.7500000   7.050591 16.449409 0.0000000
      F-E  13.1666667   8.467258 17.866075 0.0000000
      


      分析結果

      多重比較の帰無仮説は二群間の平均値には差が無いである.

      [p adj]の欄で有意水準5%以下を捜すと,9個の水準間でp値=0である.9個の水準間に有意な差があることがわかる.

      C,D,Eグループ < A,B,Fグループの順序で殺虫力に違いがある.虫の事を考慮して,C,D,Eグループを使用するように進言する.



    2. 「対応なし・標本数が同じ」場合の ボンフェローニ(Bonferroni)法

      Rの「コンソール」画面に,

      pairwise.t.test( InsectSprays$count, InsectSprays$spray, p.adjust.method="bonferroni")

      と記述し,Bonferroni法で多重比較を行う.

      >  pairwise.t.test( InsectSprays$count, InsectSprays$spray, p.adjust.method="bonferroni")
      
              Pairwise comparisons using t tests with pooled SD 
      
      data:  InsectSprays$count and InsectSprays$spray 
      
        A       B       C       D       E      
      B 1       -       -       -       -      
      C 1.1e-09 1.3e-10 -       -       -      
      D 1.5e-06 1.8e-07 1       -       -      
      E 4.1e-08 4.9e-09 1       1       -      
      F 1       1       4.2e-12 6.1e-09 1.6e-10
      
      P value adjustment method: bonferroni 
      

      分析結果

      多重比較の帰無仮説は二群間の平均値には差が無いである.

      有意水準5%以下を捜すと,9個の水準間で限りなく0.0である.

      C,D,Eグループ < A,B,Fグループの順序で殺虫力に違いがある.


    3. 「対応なし・標本数が同じ」場合の Holm法

      Rの「コンソール」画面に,

      pairwise.t.test( InsectSprays$count, InsectSprays$spray, p.adjust.method="holm")

      と記述し,Holm法で多重比較を行う.

      >  pairwise.t.test( InsectSprays$count, InsectSprays$spray, p.adjust.method="holm")
      
              Pairwise comparisons using t tests with pooled SD 
      
      data:  InsectSprays$count and InsectSprays$spray 
      
        A       B       C       D       E      
      B 1.00    -       -       -       -      
      C 8.7e-10 1.2e-10 -       -       -      
      D 6.9e-07 9.7e-08 0.49    -       -      
      E 2.5e-08 3.6e-09 1.00    1.00    -      
      F 0.90    1.00    4.2e-12 4.0e-09 1.4e-10
      
      P value adjustment method: holm 
      

      分析結果

      多重比較の帰無仮説は二群間の平均値には差が無いである.

      有意水準5%以下を捜すと,9個の水準間で限りなく0.0である.

      C,D,Eグループ < A,B,Fグループの順序で殺虫力に違いがある.


    4. 「対応なし・標本数が同じ」場合の Hシェフェの方法(Scheffe's test)


一元配置分散分析と多重比較 (対応なし・標本数が同じ)     [ 目次に戻る ]