R を使った one-way ANOVA および post-hoc test

informatics/r/r_anova
2018/12/08 更新

  1. R を使った one-way ANOVA
  2. R を使った post-hoc test

広告


R を使った one-way ANOVA

R を使って ANOVA をする場合は、まず次のような形式でデータを用意する。ただし、もちろんこれが唯一の方法ではない。R についての詳細は、R のリンク先を参照のこと。2018 年 12 月の実行記録。R version 3.5.1, Mac OS 10.14.



この例では、A, B, C の 3 つの群があり、それぞれが 3 つのデータをもっている。したがって扱うデータは 9 つである。これを test_values というベクトルに格納し、グループ分けを test_groups というベクトルに格納している。

test_groups を作るとき、A, B, C は文字列なので、" " で囲む必要がある。

グループと数値の変数ができたら、ANOVA を実行する関数は anova(aov(数値 ~ グループ)) である。上の例では数値とグループのベクトルを指定している。

結果として表示されるのは、自由度 Df、偏差平方和、平均平方、F および P 値であり、P 値が有意水準以下であるかどうかを判断する。

統計表現のページ にあるように、F 値、P 値および自由度を論文に記載するとよい。


広告

R を使った post-hoc test


Tukey HSD test

Tukey HSD は R にもともと含まれているようで、単に aov の結果を TukeyHSD という関数に入れるだけでよい。以下の例では、まず aov を AResults という変数に格納している。




Dunnett's test

Dunnett's test は、対照群とその他の群を比較する際に使われる post-hoc test である。まず、この関数が含まれているパッケージをインストールする必要がある。2018 年 12 月の実行記録、R version 3.5.1, Mac OS 10.14.

このページ から multcomp というパッケージを .tar file としてダウンロードし、ダウンロードフォルダで R CMD INSTALL ”.tarファイル名" でインストール。さらに library(multicomp) で読み込もうとすると、package ‘mvtnorm’ required by ‘multcomp’ could not be found というエラーになった。mvtnorm というパッケージが必要なようだ。

そこで、ここ から mvnorm をダウンロード、同様の方法でインストールするが、何かが not found というエラーに。

別の方法として、このページ にあるように

> install.packages("multcomp", repos="http://cran.ism.ac.jp/")

として URL 指定すると、なぜか library(multicomp) もエラーが出ずに成功する。この際、次のようなメッセージが出る。

Loading required package: mvtnorm
Loading required package: survival
Loading required package: TH.data
Loading required package: MASS

multcomp_1.4-8, TH.data_1.0-9, MASS_7.3-50, survival_2.42-3, mvtnorm_1.0-8 がインストールされた模様。コンピューターによっては、

> install.packages("mvtnorm", repos="http://cran.ism.ac.jp/")

として mvtnorm パッケージを別にインストールしないと library(multcomp) が成功しなかった。

あとは、このページの通り summary(glht(aov(vx~fx),linfct=mcp(fx="Dunnett"))) で OK だった。vx は従属変数 (つまり数値)、fx は独立変数 (つまりグループ) である。


広告

コメント欄

フォーラムを作ったので、各ページにあるコメント欄のうち、コメントがついていないものは順次消していきます。今後はフォーラムをご利用下さい。管理人に直接質問したい場合は、下のバナーからブログへ移動してコメントをお願いします。


References