Last updated: December 2012 -January 2010. Kajiyama                    [ 目次に戻る ]

datasets"weightgain: HSAUR"による,ラットの餌と体重増加の分析: 二元配置の分散分析と多重比較

(交互作用なし・因子Aに対応なしX因子Bに対応なし・標本数は同じ)(多重比較・交互作用なし)


  1. 「くり返しがあり標本数は同じ」場合の課題

    くり返しがある二元配置のデータを分散分析することは,

    総変動から,因子A,因子Bによる変動と交互作用AXBによる変動と誤差変動を分離して,測定値への影響を検討することである.



    タンパク質の組み合わせの違いによる体重増加の違いを検討するために,タンパク質の原料(因子A)として牛肉とシリアルの2水準を取り上げた.

    またタンパク質の量(因子B)として高タンパク質の餌と低タンパク質の餌を2水準用意した.

    2因子を組み合わせたした4つの条件の餌でラットを飼育しラットの体重増加を測定した,

    タンパク質の原料や量の違いで体重増加に違いがあるか,2因子の交互作用はあるかを検討する.



    表1 タンパク質の原料2種類,タンパク質の量2種類でのラットの体重増加(g)を検討する実験計画

    基本インストールではこのデータセットは準備されていないので,データセットのパッケージ「HSAUR」を新規にインストール.

    library("HSAUR") # でRに読み込む.
    data() # で確認.
    ? weightgain # でデータの解説が読める
    weightgain # でデータを読み込む.


    原料2種類(因子A・2水準),タンパク質の量2種類(因子B・2水準)の組み合わせ,2x2=4の実験条件を考える.

    それぞれの枠の実験に10匹のラットを使用する.2x2x10=40 サンプル

     
    因子A (タンパク質の原料)
    因子B (タンパク質の量) 水準A1(Beef) 水準A2(Cereal)
    水準B1(Heigh) 実験01
    10例
    実験03
    10例
    水準B2(Low) 実験02
    10例
    実験04
    10例


    表2 タンパク質の原料2種類,タンパク質の量2種類でのラットの体重増加(g)を検討する実験計画

    因子A(タンパク質の原料) 水準A1(Beef) 水準A2(Cereal)
    因子B (タンパク質の量) 水準B1(Heigh) 水準B2(Low) 水準B1(Heigh) 水準B2(Low)
    サンプル1 実験01-1 実験02-1 実験03-1 実験04-1
    サンプル2 実験01-2 実験02-2 実験03-2 実験04-2
    ・・ ・・ ・・ ・・ ・・
    サンプル9 実験01-9 実験02-9 実験03-9 実験04-9
    サンプル10 実験01-10 実験02-10 実験03-10 実験04-10


    表3 タンパク質の原料2種類,タンパク質の量2種類でのラットの体重増加(g)「スタック形式」

    データは「表シート」をマウスでコピーし入力する.

    2変数の「タンパク質の原料と量」のデータ形式は factorである.

       source type weightgain
    1    Beef  Low         90
    2    Beef  Low         76
    3    Beef  Low         90
    4    Beef  Low         64
    5    Beef  Low         86
    6    Beef  Low         51
    7    Beef  Low         72
    8    Beef  Low         90
    9    Beef  Low         95
    10   Beef  Low         78
    11   Beef High         73
    12   Beef High        102
    13   Beef High        118
    14   Beef High        104
    15   Beef High         81
    16   Beef High        107
    17   Beef High        100
    18   Beef High         87
    19   Beef High        117
    20   Beef High        111
    21 Cereal  Low        107
    22 Cereal  Low         95
    23 Cereal  Low         97
    24 Cereal  Low         80
    25 Cereal  Low         98
    26 Cereal  Low         74
    27 Cereal  Low         74
    28 Cereal  Low         67
    29 Cereal  Low         89
    30 Cereal  Low         58
    31 Cereal High         98
    32 Cereal High         74
    33 Cereal High         56
    34 Cereal High        111
    35 Cereal High         95
    36 Cereal High         88
    37 Cereal High         82
    38 Cereal High         77
    39 Cereal High         86
    40 Cereal High         92
    



  2. ラットの体重 Rに「スタック形式」のデータを読み込み,データの確認を行う


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

    > x <- read.table ("clipboard", header=TRUE )
    > x 
       source type weightgain
    1    Beef  Low         90
    2    Beef  Low         76
    3    Beef  Low         90
    4    Beef  Low         64
       ・・・・・・・・
       ・・・・・・・・
    37 Cereal High         82
    38 Cereal High         77
    39 Cereal High         86
    40 Cereal High         92
    
    > str (x) 
    'data.frame':   40 obs. of  3 variables:
     $ source    : Factor w/ 2 levels "Beef","Cereal": 1 1 1 1 1 1 1 1 1 1 ...
     $ type      : Factor w/ 2 levels "High","Low": 2 2 2 2 2 2 2 2 2 2 ...
     $ weightgain: int  90 76 90 64 86 51 72 90 95 78 ...
    


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

    > library("HSAUR")

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

    表3 タンパク質の原料2種類,タンパク質の量2種類でのラットの体重増加(g)「スタック形式」 の緑の部分をマウスで選択し,これをコピーする.

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

    x <- read.table ("clipboard", header=TRUE

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

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

    ) #    データをコピーした後で,カッコを入力する.ENTERーキーを押す.


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

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


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

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

    Rが理解した,サンプル・分析値・水準の3変数名のリストと変数ごとのカテゴリの数とカテゴリ名が示される.

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


    注意: 因子の原料とタンパク質の量のデータ形式が [Factor] 形式でないときは,

    x$source <- factor( x$source )

    x$type <- factor( x$type )   と記述し,データフレームの水準の変数を[Facter]形式に変更する.


  3. 1因子ごとの基礎統計


    a. 因子AB別の基礎統計量

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

    by ( x$weightgain, x$source, summary)

    by ( x$weightgain, x$type, summary)   と記述し,「スタック形式」のデータで,群別の基礎統計利用を計算する.


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

    plot.design(x) # 因子水準ごとの平均値のプロット図

    plotMeans( x$weightgain, x$source, error.bars="se")

    plotMeans( x$weightgain, x$type, error.bars="se") #  と記述し,因子(タンパク質の原料, タンパク質の量)ごとの強度の平均値の推移図を表示する.

    c. グラフの観察

    sourceは平均値の差がなさそうである.typeには平均値の差がありそうである.と想像できる.

    これらの想像が可能かを分散分析で検定する.



  4. 2因子間の基礎統計 2因子間AXBの交互作用の可能性検討


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

    どの因子間の水準の組み合わせの時に,重いかがわかる.

    plotMeans( x$weightgain, x$source, x$type, error.bars="se")

    plotMeans( x$weightgain, x$type, x$source, error.bars="se") # 軸を変えてみる


    b. グラフの観察

    これらのグラフより,どの因子との組み合わせの時に,体重の増加が高いかが想像できる.

    2本の線が互いに交差するsourceXtypeのグラフからは因子間の交互作用があると想像できる.

    これらの想像が可能かを分散分析で検定する.



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


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

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

    2つの因子,タンパク質の原料と量のそれぞれの水準の分散が等しいか,あるいは等しくないかを検定する.2水準のデータの分散は等質であるとの帰無仮説を立てる.

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

    bartlett.test ( x$weightgain ~ x$source )

    bartlett.test ( x$weightgain ~ x$type )

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

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

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


    > bartlett.test ( x$weightgain ~ x$source )
    > bartlett.test ( x$weightgain ~ x$source )
    
            Bartlett test of homogeneity of variances
    
    data:  x$weightgain by x$source 
    Bartlett's K-squared = 0.5114, df = 1, p-value = 0.4745
    
    > 
    > bartlett.test ( x$weightgain ~ x$type )
    
            Bartlett test of homogeneity of variances
    
    data:  x$weightgain by x$type 
    Bartlett's K-squared = 0.2313, df = 1, p-value = 0.6306
    

    分析結果

    2つの因子,タンパク質の原料と量は,ともに,p値>.05なので帰無仮説が採択され,因子AとBの各水準の分散は等しいとする.



  6. ラットの体重 「因子Aに対応なしX因子Bに対応なし・標本数は同じ」 aov関数による二元配置分散分析


    2種類のタンパク質の原料(因子A)でラットの体重増加に差があるか,また,2種類のタンパク質の量(因子B)で体重増加に差があるか,

    そして,因子間の交互作用AXBがあるかを有意水準5%で検討する.

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

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



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

    summary ( aov ( weightgain ~ source * type, data=x ) )

    と記述し,「スタック形式」のデータで,「繰り返しがある二元配置の分散分析」を行う.

    > summary ( aov ( weightgain ~ source * type, data=x ) )
                Df Sum Sq Mean Sq F value  Pr(>F)  
    source       1  220.9   220.9  0.9879 0.32688  
    type         1 1299.6  1299.6  5.8123 0.02114 *
    source:type  1  883.6   883.6  3.9518 0.05447 .
    Residuals   36 8049.4   223.6                  
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
    
    
    分散分析表が表示される.これを整形すると,以下のようになる.
    -----------------------------------------------------------------            (変動) (不偏分散) (分散比) 変動要因   自由度 平方和 平均平方和 F値 P値 ----------------------------------------------------------------- タンパク質の原料 1 220.9 220.9 0.9879 0.327 タンパク質の量 1 1299.6 1299.6 5.8123 0.021 * 原料]量 1 883.6 883.6 3.9518 0.054 . 誤差 36 8049.4 223.6 ----------------------------------------------------------------- * p<.05 . p<.1
    分析結果

    有意水準5%で検定を行ったところ,

    (1) タンパク質の原料の差においてはP値>.05であるから,帰無仮説を採択する..すなわ原料による差はないとする.

    (2) タンパク質の量の差においてはP値<.05であるから帰無仮説を棄却する.すなわち量による差はあるとする.

    (3) タンパク質の原料X量の交互作用はP値>.05であるから帰無仮説を採択する.すなわち交互作用があるとはいえない.

    以上より,ラットの体重増加に因子Bの低タンパク質より高タンパク質の餌が効果がある.

    (交互作用が有意であれば,因子の組み合わせに言及でき,

    高タンパク質ではBeefが体重増加に有利な餌であり,低タンパク質ではCerealが体重増加に有利な餌である.と判断したい.)



  7. ラットの体重 「交互作用なし・因子Aに対応なしX因子Bに対応なし・標本数は同じ」の二元配置の多重比較


    二元配置で交互作用がなければ,因子A・因子Bについて多重比較を検討すればよい.交互作用があれば,因子A・因子B の多重比較は不要になる.

    有意水準5%で交互作用はなかった.

    原料]量の P値=.054 であり,有意水準10%で交互作用ありと判断できるので,交互作用ありで多重比較を行ってみる.

    表2を表4のように読み替え,一元配置の分散分析として多重比較をおこなう.

    表2 タンパク質の原料2種類,タンパク質の量2種類での
    ラットの体重増加(g)を検討する実験計画


    因子A
    タンパク質の原料
    水準A1(Beef) 水準A2(Cereal)
    因子B
    タンパク質の量
    水準B1
    (Heigh)
    水準B2
    (Low)
    水準B1
    (Heigh)
    水準B2
    (Low)
    サンプル1 実験01-1 実験02-1 実験03-1 実験04-1
    サンプル2 実験01-2 実験02-2 実験03-2 実験04-2
    ・・ ・・ ・・ ・・ ・・
    サンプル9 実験01-9 実験02-9 実験03-9 実験04-9
    サンプル10 実験01-10 実験02-10 実験03-10 実験04-10
    表4 タンパク質の原料2種類,タンパク質の量2種類での
    ラットの体重増加(g)を検討する実験計画


     
    因子C
    タンパク質の
    原料X量
     
    水準C1
    (Beef
    Heigh)
     
    水準C2
    (Beef
    Low)
     
    水準C3
    (Cereal
    Heigh)
     
    水準C4
    (Cereal
    Low)
    サンプル1 実験01-1 実験02-1 実験03-1 実験04-1
    サンプル2 実験01-2 実験02-2 実験03-2 実験04-2
    ・・ ・・ ・・ ・・ ・・
    サンプル9 実験01-9 実験02-9 実験03-9 実験04-9
    サンプル10 実験01-10 実験02-10 実験03-10 実験04-10


    (1) データフレームの作成

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

    c1 <- paste( x$A, x$B, step="" ) # 表4の2つの文字列の変数x$Aとx$Bを変数c1として合成する
    c2 <- gsub( " ", "", c1 ) # c1の文字列の変数から半角の空白をすべて除く
    y <- transform( x, C=c2 ) # 合成した2つの文字列の変数を「C」の名前をつけ列に加え,これを新しいデータフレームyとする

    y

    str (y) #     と記述し,作成したデータフレーム y を,表示しデータ構造を確認する.

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

    plotMeans( y$測定値, y$C, error.bars="se") #  と記述し,因子Cの測定値の平均値の推移図を表示する.


    表3 ラットの体重増加
    「スタック形式」

       source type weightgain
    1    Beef  Low         90
    2    Beef  Low         76
    3    Beef  Low         90
    4    Beef  Low         64
    5    Beef  Low         86
    6    Beef  Low         51
    7    Beef  Low         72
    8    Beef  Low         90
    9    Beef  Low         95
    10   Beef  Low         78
    11   Beef High         73
    12   Beef High        102
    13   Beef High        118
    14   Beef High        104
    15   Beef High         81
    16   Beef High        107
    17   Beef High        100
    18   Beef High         87
    19   Beef High        117
    20   Beef High        111
    21 Cereal  Low        107
    22 Cereal  Low         95
    23 Cereal  Low         97
    24 Cereal  Low         80
    25 Cereal  Low         98
    26 Cereal  Low         74
    27 Cereal  Low         74
    28 Cereal  Low         67
    29 Cereal  Low         89
    30 Cereal  Low         58
    31 Cereal High         98
    32 Cereal High         74
    33 Cereal High         56
    34 Cereal High        111
    35 Cereal High         95
    36 Cereal High         88
    37 Cereal High         82
    38 Cereal High         77
    39 Cereal High         86
    40 Cereal High         92
    
    表6 ラットの体重増加
    「スタック形式」

       source type weightgain          C
    1    Beef  Low         90    BeefLow
    2    Beef  Low         76    BeefLow
    3    Beef  Low         90    BeefLow
    4    Beef  Low         64    BeefLow
    5    Beef  Low         86    BeefLow
    6    Beef  Low         51    BeefLow
    7    Beef  Low         72    BeefLow
    8    Beef  Low         90    BeefLow
    9    Beef  Low         95    BeefLow
    10   Beef  Low         78    BeefLow
    11   Beef High         73   BeefHigh
    12   Beef High        102   BeefHigh
    13   Beef High        118   BeefHigh
    14   Beef High        104   BeefHigh
    15   Beef High         81   BeefHigh
    16   Beef High        107   BeefHigh
    17   Beef High        100   BeefHigh
    18   Beef High         87   BeefHigh
    19   Beef High        117   BeefHigh
    20   Beef High        111   BeefHigh
    21 Cereal  Low        107  CerealLow
    22 Cereal  Low         95  CerealLow
    23 Cereal  Low         97  CerealLow
    24 Cereal  Low         80  CerealLow
    25 Cereal  Low         98  CerealLow
    26 Cereal  Low         74  CerealLow
    27 Cereal  Low         74  CerealLow
    28 Cereal  Low         67  CerealLow
    29 Cereal  Low         89  CerealLow
    30 Cereal  Low         58  CerealLow
    31 Cereal High         98 CerealHigh
    32 Cereal High         74 CerealHigh
    33 Cereal High         56 CerealHigh
    34 Cereal High        111 CerealHigh
    35 Cereal High         95 CerealHigh
    36 Cereal High         88 CerealHigh
    37 Cereal High         82 CerealHigh
    38 Cereal High         77 CerealHigh
    39 Cereal High         86 CerealHigh
    40 Cereal High         92 CerealHigh 
    
    (2) 操作

    > c1 <- paste( x$source, x$type, step="" )
     # 表4の2つの文字列の変数x$Aとx$Bを変数c1として合成する
    > c2 <- gsub( " ", "", c1 ) 
     # c1の文字列の変数から半角の空白をすべて除く
    > y <- transform( x, C=c2 )
     # 合成した2つの文字列の変数c2を「C」の名前をつけ列に加える
    > y 
       source type weightgain          C
    1    Beef  Low         90    BeefLow
    2    Beef  Low         76    BeefLow
    3    Beef  Low         90    BeefLow
    4    Beef  Low         64    BeefLow
      ・・・・・・
    37 Cereal High         82 CerealHigh
    38 Cereal High         77 CerealHigh
    39 Cereal High         86 CerealHigh
    40 Cereal High         92 CerealHigh
    
    > str (y)
    'data.frame':   40 obs. of  4 variables:
     $ source    : Factor w/ 2 levels "Beef","Cereal": 1 1 1 1 1 1...
     $ type      : Factor w/ 2 levels "High","Low": 2 2 2 2 2 2 2 2 ...
     $ weightgain: int  90 76 90 64 86 51 72 90 95 78 ...
     $ C         : Factor w/ 4 levels "BeefHigh","BeefLow",..: 2 2...
    
    > plotMeans( y$weightgain, y$C, error.bars="se") 
    



    1.  交互作用 因子A(タンパク質の原料) X (因子Bタンパク質の量)


      (1) テューキー(Tukey HSD)の方法による多重比較

      TukeyHSD(aov ( weightgain ~ C, data=y ), "C", ordered = TRUE) # テューキー(Tukey HSD)の方法

      plot(TukeyHSD(aov ( weightgain ~ C, data=y ), "C") ) # 組み合わせの多重比較のグラフ作成

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

      > summary(aov ( weightgain ~ C, data=y )) # 一元配置の分散分析
                  Df Sum Sq Mean Sq F value  Pr(>F)  
      C            3 2404.1   801.4   3.584 0.02297 *
      Residuals   36 8049.4   223.6                  
      ---
      Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 
      
      >  TukeyHSD(aov ( weightgain ~ C, data=y ), "C", ordered = TRUE)
        Tukey multiple comparisons of means
          95% family-wise confidence level
          factor levels have been ordered
      
      Fit: aov(formula = weightgain ~ C, data = y)
      
      $C
                           diff        lwr     upr     p adj
      CerealLow-BeefLow     4.7 -13.310198 22.7102 0.8952934
      CerealHigh-BeefLow    6.7 -11.310198 24.7102 0.7492577
      BeefHigh-BeefLow     20.8   2.789802 38.8102 0.0182745
      CerealHigh-CerealLow  2.0 -16.010198 20.0102 0.9905411
      BeefHigh-CerealLow   16.1  -1.910198 34.1102 0.0936982
      BeefHigh-CerealHigh  14.1  -3.910198 32.1102 0.1697711
      

      分析結果

      多重比較の帰無仮説は二群間の平均値には差が無いである.水準C1〜BC間で有意水準5%以下を探すと,

      [BeefHigh-BeefLow p=0.0182745] に有意な差がある.Beef-High>Beef-Low

      (1) 高タンパクの餌として与えた牛肉は,低タンパクの餌として与えた牛肉より,体重増加に効果的である.

      分散分析では有意水準5%で交互作用は有意ではなかったが,多重比較では有意な結果となる.


      (2) ボンフェローニ(Bonferroni)法

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

      pairwise.t.test( y$weightgain, y$C, p.adjust.method="bonferroni" ) #  と記述し,Bonferroni法で多重比較を行う.

      > pairwise.t.test( y$weightgain, y$C, p.adjust.method="bonferroni" )
      
              Pairwise comparisons using t tests with pooled SD 
      
      data:  y$weightgain and y$C 
      
                 BeefHigh BeefLow CerealHigh
      BeefLow    0.022    -       -         
      CerealHigh 0.252    1.000   -         
      CerealLow  0.128    1.000   1.000     
      
      P value adjustment method: bonferroni 
      

      分析結果

      多重比較の帰無仮説は二群間の平均値には差が無いである.水準C1〜BC間で有意水準5%以下を探すと,

      [BeefHigh-BeefLow p=0.022] に有意な差がある.Beef-High>Beef-Low

      (1) 高タンパクの餌として与えた牛肉は,低タンパクの餌として与えた牛肉より,体重増加に効果的である.


      (3) Holm法

      pairwise.t.test( y$weightgain, y$C, p.adjust.method="holm" ) #  と記述し,Holm法で多重比較を行う.

      >  pairwise.t.test( y$weightgain, y$C, p.adjust.method="holm" )
      > pairwise.t.test( y$weightgain, y$C, p.adjust.method="holm" ) #
      
              Pairwise comparisons using t tests with pooled SD 
      
      data:  y$weightgain and y$C 
      
                 BeefHigh BeefLow CerealHigh
      BeefLow    0.022    -       -         
      CerealHigh 0.168    0.969   -         
      CerealLow  0.107    0.973   0.973     
      
      P value adjustment method: holm 
      

      分析結果

      多重比較の帰無仮説は二群間の平均値には差が無いである.水準C1〜BC間で有意水準5%以下を探すと,

      [BeefHigh-BeefLow p=0.022] に有意な差がある.Beef-High>Beef-Low

      (1) 高タンパクの餌として与えた牛肉は,低タンパクの餌として与えた牛肉より,体重増加に効果的である.



    2.  まとめ


      高タンパクの餌として与えた牛肉は,低タンパクの餌として与えた牛肉より,体重増加に効果的である.

      分散分析では有意水準5%で交互作用は有意ではなかったが,多重比較では有意な結果となる.

くり返しのある二元配置分散分析 (対応なしX対応なし・標本数は同じ)     [ 目次に戻る ]