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

三教科の試験の平均値の検定: 一元配置の分散分析と多重比較

(対応あり・標本数が同じ)


  1. 「対応あり・標本数が同じ」場合の課題

    五人の学生が,三科目の試験を受けた.その成績を表1に示す. 科目による難しさがあるか.

    「三科目(A1〜A3)の母集団の平均値に差があるといえるか」,有意水準5%で検討する.



    表1 五人の学生の三科目の試験結果 「アンスタック形式」仮想データ

    サンプル 線形代数 微分積分 確率統計
    田中 7 5 8
    8 4 6
    大引 9 7 7
    吉川 5 1 2
    萩野 6 3 5
    平均値 7 4 5.6



  2. 分散分析の関数は「スタック形式」のデータで処理する. 「スタック形式」のデータにRで変換


  3. Rに「スタック形式」のデータを読み込み,データの確認を行う


    表2 五人の学生の三科目の試験結果 「スタック形式」

    サンプル 分析値 水準
    田中 7 線形代数
    8 線形代数
    大引 9 線形代数
    吉川 5 線形代数
    萩野 6 線形代数
    田中 5 微分積分
    4 微分積分
    大引 7 微分積分
    吉川 1 微分積分
    萩野 3 微分積分
    田中 8 確率統計
    6 確率統計
    大引 7 確率統計
    吉川 2 確率統計
    萩野 5 確率統計


    (1) 「スタック形式」での操作の手順




    (2) データフレームの読み込み

    ここでは,表シートあるいはエクセルの表計算シートからクリップボード経由で読み込む操作を行う.

    表1 五人の学生の三科目の試験結果「アンスタック形式」の緑の部分をマウスで選択し,これをコピーする.

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

    y <- read.table ("clipboard", header=TRUE ) # と記述し,

    コピーした[clipboard]データファイルを,Rの内部のデータフレーム,ファイル名 y に直接読み込む.

    header=TRUE は第1行が列の変数名になっていることを指示している.


    (3) 読み込んだデータフレームの確認

    y #     と記述し,Rの内部に作成したデータフレーム y を,表示し確認する.


    (4) データフレームの構造確認

    str (y) #  と記述し,Rの内部のデータフレーム y の変数の内容を表示確認する.

    Rが理解した,変数名のリストと変数ごとのカテゴリの数とカテゴリ名が示される.

    ・分析で使用する変数名とカテゴリ名はRが理解した名前を使用する.


    注意: 水準A1〜A4を含む因子Aとサンプルのデータ形式が [Factor] 形式でないときは,正しい統計処理ができなくなる.

    y$水準 <- factor( y$水準 )

    y$サンプル <- factor( y$サンプル ) #  と記述し,データフレームの因子を[Facter]形式に変更する.



  4. 1因子Aの基礎統計


    a. 因子Aの基礎統計量

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

    by ( y$分析値, y$水準, summary) #   と記述し,「スタック形式」のデータで,群別の基礎統計利用を計算する.


    > by ( y$分析値, y$水準, summary)
    y$水準: 確率統計
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
        2.0     5.0     6.0     5.6     7.0     8.0 
    ------------------------------------------------------------------------ 
    y$水準: 線形代数
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
          5       6       7       7       8       9 
    ------------------------------------------------------------------------ 
    y$水準: 微分積分
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
          1       3       4       4       5       7 
    


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

    boxplot (y$分析値 ~ y$水準) #  と記述し,箱ひげグラフを表示する.

    plotMeans ( y$分析値, y$水準, error.bars="se") #  と記述し,平均値の推移図を表示する.
     
    c. グラフの観察




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


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

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

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


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

    bartlett.test ( y$分析値 ~ y$水準 ) # と記述し,「スタック形式」のデータで,分散の等質性の検定を行う.

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

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


    >  bartlett.test ( y$分析値 ~ y$水準 )
    
            Bartlett test of homogeneity of variances
    
    data:  y$分析値 by y$水準 
    Bartlett's K-squared = 0.5726, df = 2, p-value = 0.751
    

    結果

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


  6. 参考のために,

    まず,「対応のない・標本数が同じ」一元配置・分散分析を検討する



    「3科目(A1〜A3)の母集団の平均値に差があるといえるか」,有意水準5%で検討する.

    帰無仮説は「各群の母集団の平均値は等しい」.

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



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

    summary ( aov ( y$分析値 ~ y$水準 ) ) # と記述し,「スタック形式」のデータで,分散分析を行う.

    > summary ( aov ( y$分析値 ~ y$水準 ) )
                Df Sum Sq  Mean Sq   F value   Pr(>F)
    y$水準       2 22.533   11.267    2.6406   0.1121
    Residuals   12 51.200    4.267   
    有意性の記号 :    ***  (0.1%で有意)  **  (1%で有意)   *  (5%で有意)
    

    分析結果

    F値 2.6406=(因子Aの平均平方和)/(誤差Eの平均平方和)=11.267/4.267であり,対応のあるサンプルの誤差が考慮されない.

    aov関数に直接,因子Aに対応したサンプルの誤差を指定して計算を行わせる.

    summary ( aov ( y$分析値 ~ y$水準 + Error( y$サンプル ) ) )

    # あるいは

    summary ( aov ( y$分析値 ~ y$水準 + Error( y$サンプル/y$水準 ) ) )

    結果は,次に述べる記述と同じ結果になる.

    > summary ( aov ( y$分析値 ~ y$水準 + Error( y$サンプル ) ) )
    
    Error: y$サンプル
              Df Sum Sq Mean Sq F value Pr(>F)
    Residuals  4 45.067  11.267               
    
    Error: Within
              Df  Sum Sq Mean Sq F value   Pr(>F)   
    y$水準     2 22.5333 11.2667  14.696 0.002095 **
    Residuals  8  6.1333  0.7667                    
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
    



  7. 「対応あり・標本数が同じ」一元配置・分散分析では


    「3科目(A1〜A3)の母集団の平均値に差があるといえるか」,有意水準5%で検討する.

    帰無仮説は「各群の母集団の平均値は等しい」.

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



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

    summary ( aov ( y$分析値 ~ y$水準 + y$サンプル ) ) # と記述し,「スタック形式」のデータで,分散分析を行う.

    > summary ( aov ( y$分析値 ~ y$水準 + y$サンプル ) )
                 Df  Sum Sq   Mean Sq  F value   Pr(>F)    
    y$水準       2   22.533   11.267   14.696    0.002095 ** 
    y$サンプル   4   45.067   11.267   14.696    0.000931 ***
    Residuals    8    6.133    0.767                     
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
    有意性の記号 :    ***  (0.1%で有意)  **  (1%で有意)   *  (5%で有意)
    
    
    分散分析表が表示される.これを整形すると,以下のようになる.
    --------------------------------------------------------------          (変動) (不偏分散)  (分散比) 変動要因 自由度 平方和 平均平方和 F値 P値 -------------------------------------------------------------- 因子A 2 22.533 11.267 14.696 0.002095 ** サンプル 4 45.067 11.267 14.696 0.000931 *** 誤差E 8 6.133 0.767 -------------------------------------------------------------- ** p<.01 *** p<.001
    対応のある分析結果は有意になる場合が多い

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

    サンプル間の変動も0.1%の水準で有意な差があるが,個人間の差は分析の対象ではないので無視する.

    3科目の平均値は1%で有意差が認められる.3科目(A1〜A3)の値には差があるといえる.



  8. 「対応あり・標本数が同じ」の多重比較


    どの水準の科目が点が取りやすいか.あるいはとりにくいか.

    分散分析では,どの水準とどの水準に差があるかは,明らかにしてくれない.このため多重比較の事後検定(下位検定)を行う.

    Tukey(テューキー)の方法は,「対応あり」のデータに適用するのは問題があると指摘されている.

    このため「Bonferroni法」とこの改善型の「Holm法」を使用する.



    1. 「対応ありpaired=TRUE・標本数が同じ」の場合の ボンフェローニ(Bonferroni)法

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

      pairwise.t.test(y$分析値 , y$水準, p.adjust.method="bonferroni", paired=TRUE) # と記述し,Bonferroni法で多重比較を行う.

      > pairwise.t.test(y$分析値 , y$水準, p.adjust.method="bonferroni", paired=TRUE)
      
              Pairwise comparisons using paired t tests 
      
      data:  y$分析値 and y$水準 
      
               確率統計 線形代数
      線形代数 0.3238   -       
      微分積分 0.1048   0.0077  
      
      P value adjustment method: bonferroni
      


      分析結果

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

      有意水準5%(0.05)以下を探すと,[微分積分-線形代数 p=0.0077]で有意差がある.

      [微分積分-線形代数]の科目間には有意水準1%で差がある.微分積分の先生の採点は辛いと疑いを持ってみる.


    2. 「対応ありpaired=TRUE・標本数が同じ」の場合の Holm法

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

      pairwise.t.test(y$分析値 , y$水準, p.adjust.method="holm", paired=TRUE) # と記述し,Holm法で多重比較を行う.

      > pairwise.t.test(y$分析値 , y$水準, p.adjust.method="holm", paired=TRUE)
      
              Pairwise comparisons using paired t tests 
      
      data:  y$分析値 and y$水準 
      
               確率統計 線形代数
      線形代数 0.1079   -       
      微分積分 0.0698   0.0077 
      
      P value adjustment method: holm 
      


      分析結果

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

      有意水準5%(0.05)以下を探すと,[微分積分-線形代数 p=0.0077]で有意差がある.

      [微分積分-線形代数]の科目間には有意水準1%で差がある.微分積分の先生の採点は辛いと疑いを持ってみる.

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