こんにちは。ほしのはやしです。
二元配置分散分析(Two-way ANOVA)を使うべきなのか、他の統計手法を使うべきなのか、わからなくて困ることありますよね。
このページではTwo-way ANOVAの具体的な使い方と実際には別の解析をした方がよいケースについて説明します!
Two-way ANOVA(二元配置分散分析)
いつ使う?two-way ANOVAの使い道
2つの独立した要因(カテゴリー変数)が従属変数(連続変数)に与える影響を分析する統計手法です
血圧の数値に3種類の降圧薬(薬A、薬B、薬C)の効果を比較する研究が計画され、患者の性別(男性、女性)が薬の効果に影響を与えるかどうかを調べたい。
このようなときに使います。
使える前提条件
全ての群が正規性かつ等分散性を満たす場合のみ使用できます。
検定方法についてはこちらを参照してください!
どれか一つでも非正規や非等分散であれば、Scheirer-Ray-Hare testを使うことになります!
Scheirer-Ray-Hare testの具体的な使い方はページ下部で説明します。
Two-way ANOVAのよくある間違い
例:糖尿病患者に2種類の薬(薬A、薬B)が投与され、時系列(治療前、Day 15、Day 30、Day 90)での血糖値に統計的に差があるかを評価したい場合
このデータには繰り返し測定の性質があります。
そのため、通常のTwo-way ANOVAを使用するのではなく、以下の手法が適切となります。
このように、時系列データを含む場合はTwo-way ANOVAではなく、繰り返し測定に適した手法を選択することが重要です。
具体的なコード(R studio)
高血圧患者の治療に3種類の薬:Drug(薬A、薬B、薬C)の効果を比較する研究が計画され、患者の性別:Sex(男性、女性)が薬の効果に影響を与えるかどうかを調べたい。
テーブル名:datasheet
Drug | Sex | BP |
---|---|---|
A | M | 120 |
B | M | 140 |
B | F | 105 |
C | M | 118 |
A | F | 130 |
C | F | 95 |
… | … |
res2 <- aov(BP ~ Drug + Sex, data = datasheet)
summary(res2)
これでP値【Pr(>F)】が算出されました!
結果からは薬剤の種類も性別も血圧に影響するかどうかは不明という結論になりますね。
もし、薬剤と性別の組わせによってシナジー効果があるという既報があった場合、その影響を考慮して計算することができます。
この状況のことを交互作用(Interaction)といいます。
その場合は下記のように『Drug + Sex』⇨『Drug * Sex』とするとよいでしょう。
res3 <- aov(BP ~ Drug * Sex, data = datasheet)
summary(res3)
この結果にあるように、『Drug:Sex』のP値:0.420と有意差がなかった場合は、交互作用を考慮したモデルではなく『Drug + Sex』のモデルでP値を算出するとよいでしょう。
Post hoc analysis(事後解析)
さて、今回は差がありませんでしたが、差があった場合のPost hoc analysisについて解説します。
仮に先程の結果で、DrugのP値が0.004、SexのP値が0.002と統計的に有意な結果が出たとしましょう。
この場合注目すべきは、Drugは3群、Sexは2群であることです。
DrugではA vs. B、B vs. C、C vs. Aのどれに差があるのかPost hoc analysisが必要ですが、Sexではすでに求めたいP値が結果に出ているのでPost hoc analysisをする必要はありません。
以下スクリプトになります。
res2 <- aov(BP ~ Drug + Sex, data = datasheet)
TukeyHSD(res2, which = "Drug")
このようにtwo-way ANOVAの構文とPost hoc analysisをしたい群を『which = “事後解析したい列名”』で選べば大丈夫です!
Two-way ANOVAのPost hoc analysisはTukeyHSDを基本的に使うと覚えておけばいいのだ
Scheirer–Ray–Hare test (Two-way ANOVAのノンパラメトリック版)
まずはrcompanionパッケージをインストールし、使用できるようにlibraryで展開します。
install.packages("rcompanion")
library(rcompanion)
Two-way ANOVAの構文と同じような形で、以下のように書きます。
scheirerRayHare(BP ~ Drug + Sex, data = datasheet)
このテストは必ず交互作用がある前提で統計結果が算出されます。
Non parametricの交互作用がないtwo-way ANOVAのような統計手法はないのでご注意ください。
Post hoc analysisはDunn testを用います。
Dunn testを使用するため、FSAというパッケージをインストールして呼び出します。
install.packages("FSA")
library(FSA)
dunnTest(BP ~ Drug, data = datasheet, method="holm")
『method=””』のところで多重検定の調整を行いますが、holm法以外に以下の選択肢があります。
“bonferroni” (Bonferroni adjustment)
“sidak” (Sidak adjustment)
“holm” (Holm Adjustment)
“hs” (Holm-Sidak Adjustment)
“bs” (Bonferroni-Sidak Adjustment)
“by” (Benjamini-Yekuteili Adjustment)
“bh” (Benjamini-Hochberg procedure) Bonferroni
実験などでN数が少ない場合には、Holm法またはSidak法で大きく問題ないです。
まとめ
Two-way ANOVAの前提・使い方などについて解説しました!
少しでもお役に立てれば幸いです!!
コメント