- 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()













