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

UB3/informatics/r/r_anova


  1. R を使った one-way ANOVA
  2. R を使った post-hoc test
    • Tukey HSD test
    • Dunnett's test

広告


R を使った one-way ANOVA

このページでは、R を使った一元配置分散分析 one-way ANOVA の方法を解説する。少なくとも R version 3.5.1 から 4.0 までは使える方法である。ANOVA および post-hoc テストの原理については、以下のページを参照のこと。

R では、ANOVA に aov および anova 関数を用いる。まずあるオブジェクト (仮に D とする) に aov の結果を格納し、それをさらに anova で解析するという段階を踏む。A を別の関数 TukeyHSD などに入れると post-hoc テストを引き続き行うことができる。


ベクターを使った ANOVA

グループの情報と、数値の情報を含む 2 つのベクターを使って、R で一元配置分散分析を行うことができる。以下のように実行してみる。

最初の 2 行で、グループおよび数値のベクターを作っている。A, B, C の 3 つのグループがあり、A は 1, 2, 1 という数値、B と C にはそれぞれ 7, 8, 6 および 34, 64, 55 というデータである。したがって扱うデータは 9 つであり、平均値 は C > B > A の順に大きい。

数値を test_values というベクターに格納し、グループ分けを test_groups というベクターに格納している。なお、test_groups を作るとき A, B, C は文字列なので、" " で囲む必要がある。

これを aov で解析し、結果を D に保存している。


test_group = c(rep("A", 3), rep("B", 3), rep("C", 3))
test_value = c(1, 2, 1, 7, 8, 6, 34, 64, 55)
D = aov(test_values ~ test_group) # aovで解析
anova(D) # Dをさらに anova で解析

少し方法は異なるが、同じことをやってみた結果のスクリーンショットを貼っておく。


結果として表示されるのは、自由度 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


コメント欄

各ページのコメント欄を復活させました。スパム対策のため、以下の禁止ワードが含まれるコメントは表示されないように設定しています。レイアウトなどは引き続き改善していきます。「管理人への質問」「フォーラム」へのバナーも引き続きご利用下さい。

禁止ワード: http, the, м (ロシア語のフォントです)


このページにコメント

Name:


Comment:



これまでに投稿されたコメント

Date Name Comment
写真素材無料【写真AC】

新しく写真の提供を始めました。どんどん追加していきますので、上のバナーから登録後に Ultrabem の写真 をご覧下さい。登録と 1 日 9 枚までのダウンロードは無料です。

ダウンロード 1 枚につき約 3 円が私たちに入るので、皆様の懐を全く痛めずに当サイトを支援して頂くことができます。どうぞよろしくお願いします。