- Step3. 実践編
- 2. 推定と検定
2-6. 二元配置分散分析
次のデータは、「Step1. 基礎編 30-1. 二元配置分散分析の分散分析表1」で用いたデータです。このデータを使って、各因子(肥料の量、および土の種類)の水準間で収量の平均値に差があるかどうかを二元配置分散分析で検定してみまず。
ファイルのダウンロードはこちらから
- (日本語)two_way_ANOVA.csv
- (英語)two_way_ANOVA_eng.csv
■Excelによる解析例
- データ > データ分析 > 分散分析: 繰り返しのある二元配置を選択 > [OK]をクリック
- 「入力元」と「出力オプション」を図のように設定
- 二元配置分散分析の結果が出力される
※「データ分析」が見当たらない方はこちらを参考に設定を行ってください。
※この結果を見ると、標本(土の種類)はP=4.21E-6、列(肥料の量)はP=9.4E-7、交互作用はP=0.024であり、いずれの要因も有意であることが分かります。
■Rによる解析例
dat <- read.csv("two_way_ANOVA_eng.csv", header=T) #二元配置分散分析(交互作用なし) res <- aov(Yield ~ factor(Soil) + factor(Fertilizer), data = dat) summary(res) #二元配置分散分析(交互作用あり) res2 <- aov(Yield ~ factor(Soil) * factor(Fertilizer), data = dat) summary(res2) #交互作用プロット interaction.plot(dat$Fertilizer, #x軸のデータ dat$Soil, #層別するデータ dat$Yield, #y軸のデータ col = c("red", "blue"), #グラフの色を設定 type = "b", #グラフの線のスタイルを設定 pch = 21, #グラフの点のスタイルの設定 xlab = "Fertilizer", #x軸タイトル ylab = "Mean of yield", #y軸タイトル trace.label = "Soil") #凡例のタイトル
■Pythonによる解析例
import pandas as pd import statsmodels import statsmodels.api as sm import statsmodels.formula.api as smf from statsmodels.graphics.factorplots import interaction_plot import matplotlib.pyplot as plt dat = pd.read_csv("two_way_ANOVA_eng.csv") #二元配置分散分析(交互作用なし) anova_mod = smf.ols('Yield ~ Soil + Fertilizer', data=dat).fit() sm.stats.anova_lm(anova_mod, type=2) #二元配置分散分析(交互作用あり) anova_mod = smf.ols('Yield ~ Soil + Fertilizer + Soil:Fertilizer', data=dat).fit() sm.stats.anova_lm(anova_mod, type=2) #交互作用プロット fig = interaction_plot(dat['Fertilizer'], #x軸のデータ dat['Soil'], #層別するデータ dat['Yield'], #y軸のデータ colors=['red', 'blue'], #グラフの色を設定 ms=15) #グラフの点の大きさの設定 plt.show()