R で三元配置分散分析を実行する方法
三元配置分散分析は、 3 つの因子に分散された 3 つ以上の独立したグループの平均間に統計的に有意な差があるかどうかを判断するために使用されます。
次の例は、R で 3 元配置分散分析を実行する方法を示しています。
例: R での 3 元配置分散分析
研究者が、2 つのトレーニング プログラムが大学のバスケットボール選手の間でジャンプの高さの平均高さの異なる向上につながるかどうかを判断したいとします。
研究者は、性別と部門 (部門 I または II) もジャンプの高さに影響を与えるのではないかと考えており、これらの要因に関するデータも収集しています。
彼の目標は、三元配置分散分析を実行して、トレーニング プログラム、性別、部門がジャンプの高さにどのような影響を与えるかを判断することです。
R でこの 3 元配置分散分析を実行するには、次の手順に従います。
ステップ 1: データを作成する
まず、データを保持するデータ フレームを作成しましょう。
#create dataset df <- data. frame (program=rep(c(1, 2), each= 20 ), gender=rep(c(' M ', ' F '), each= 10 , times= 2 ), division=rep(c(1, 2), each= 5 , times= 4 ), height=c(7, 7, 8, 8, 7, 6, 6, 5, 6, 5, 5, 5, 4, 5, 4, 3, 3, 4, 3, 3, 6, 6, 5, 4, 5, 4, 5, 4, 4, 3, 2, 2, 1, 4, 4, 2, 1, 1, 2, 1)) #view first six rows of dataset head(df) program gender division height 1 1 M 1 7 2 1 M 1 7 3 1 M 1 8 4 1 M 1 8 5 1 M 1 7 6 1 M 2 6
ステップ 2: 記述統計を表示する
三元配置分散分析を実行する前に、 dplyrを使用して、トレーニング プログラム、性別、部門ごとにグループ化された平均ジャンプ高さの増加を簡単に要約できます。
library (dplyr) #calculate mean jumping height increase grouped by program, gender, and division df %>% group_by(program, gender, division) %>% summarize(mean_height = mean(height)) # A tibble: 8 x 4 # Groups: program, gender [4] program gender division mean_height 1 1 F 1 4.6 2 1 F 2 3.2 3 1 M 1 7.4 4 1 M 2 5.6 5 2 F 1 2.6 6 2 F 2 1.4 7 2 M 1 5.2 8 2 M 2 4
結果を解釈する方法は次のとおりです。
- トレーニング プログラム 1 を使用したディビジョン I 女子のジャンプ高さの平均増加は4.6 インチでした。
- トレーニング プログラム 1 を使用したディビジョン II 女子選手のジャンプ高さの平均増加は3.2 インチでした。
- トレーニング プログラム 1 を使用したディビジョン I 男子のジャンプ高さの平均増加は7.4 インチでした。
等々。
ステップ 3: 三元配置分散分析を実行する
次に、 aov()関数を使用して三元分散分析を実行できます。
#perform three-way ANOVA model <- aov(height ~ program * gender * division, data=df) #view summary of three-way ANOVA summary(model) Df Sum Sq Mean Sq F value Pr(>F) program 1 36.1 36.10 65.636 2.98e-09 *** gender 1 67.6 67.60 122.909 1.71e-12 *** division 1 19.6 19.60 35.636 1.19e-06 *** program:gender 1 0.0 0.00 0.000 1.000 program:division 1 0.4 0.40 0.727 0.400 gender:division 1 0.1 0.10 0.182 0.673 program:gender:division 1 0.1 0.10 0.182 0.673 Residuals 32 17.6 0.55 --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Pr(>F)列には、個々の因子の p 値と因子間の交互作用が表示されます。
結果から、3 つの因子間の相互作用はどれも統計的に有意ではなかったことがわかります。
また、プログラム、性別、部門の 3 つの要素のそれぞれが統計的に有意であることもわかります。
ここで、再び dplyr を使用して、プログラム、性別、部門の平均ジャンプ高さの増加を個別に見つけることができます。
library (dplyr) #find mean jumping increase by program df %>% group_by(program) %>% summarize(mean_height = mean(height)) # A tibble: 2 x 2 program mean_height 1 1 5.2 2 2 3.3 #find mean jumping increase by gender df %>% group_by(gender) %>% summarize(mean_height = mean(height)) # A tibble: 2 x 2 gender mean_height 1 F 2.95 2M 5.55 #find mean jumping increase by division df %>% group_by(division) %>% summarize(mean_height = mean(height)) # A tibble: 2 x 2 division mean_height 1 1 4.95 2 2 3.55
結果から次のことがわかります。
- トレーニング プログラム 1 を使用した個人のジャンプ高さの平均増加 ( 5.2 インチ) は、トレーニング プログラム 2 を使用した個人の平均ジャンプ高さの増加(3.3 インチ) よりも大きかった。
- 男性のジャンプ高さの平均増加 ( 5.55 インチ) は、女性の平均増加(2.95 インチ) よりも大きかった。
- ディビジョン 1 プレーヤーのジャンプ高さの平均増加 ( 4.95 インチ) は、ディビジョン 2 プレーヤーの平均ジャンプ高さの増加(3.55 インチ) よりも大きかった。
結論として、トレーニング プログラム、性別、部門はすべて、選手のジャンプ高さの向上を示す重要な指標であると言えます。
また、これら 3 つの要素の間には有意な相互作用効果はないと言えます。
追加リソース
次のチュートリアルでは、R で他の ANOVA モデルを近似する方法について説明します。