#2要因の分散分析(2要因とも被験者間要因)
data.ex=read.csv("Table821.csv",header=T)
data.ex
attach(data.ex)
#要因(独立変数)として指定
fm <- factor(method)
fa <- factor(anxiety)
#関数 aov(従属変数~要因1*要因2,データ)
aov.ex=aov(score~fm*fa,data.ex)
summary(aov.ex)
#要因の組み合わせの各平均値とSDを求めるtapply(score,list(fm,fa),mean)
tapply(score,list(fm,fa),sd)
#図示 算出しておいた平均値を使う
data <- cbind(
m1=c(28.2,47.0),
m2=c(33.6,36.6),
m3=c(34.2,28.2)
)
#棒グラフを並べる
barplot(data,beside=TRUE)
#効果量の計算 分散分析の結果を利用
Df Sum Sq Mean Sq F value Pr(>F)
fm 2 208.1 104.0 6.557 0.00535 **
fa 1 208.0 208.0 13.111 0.00136 **
fm:fa 2 788.1 394.0 24.834 1.43e-06 ***
Residuals 24 380.8 15.9
#教授法fm eta2
208.1/(208.1+208.0+788.1+380.0)
#不安 fa eta2
208.0/(208.1+208.0+788.1+380.0)
#交互作用 fm *fa eta2
788.1/(208.1+208.0+788.1+380.0)
#-交互作用が有意な場合の単純効果 -----
#教授法(fm)の効果を、不安(fa)の水準ごとに分散分析
#不安(fa)の効果を、教授法(fm)の水準ごとに分散分析
# 高不安群のみ取り出して検定(一要因分散分析)
# data.ex から 変数anxietyの値が"H"の行のみ取り出す
#行のみの指定 [変数=="条件の値",] 最後の ,を忘れずに
#新たなデータ dataHを作る
dataH <- data.ex[data.ex$anxiety=="H",]
#独立変数を、改めて新しいデータセットの中で指定する
aovH=aov(score~factor(dataH$method),dataH)
summary(aovH)
#F値の計算
#:誤差(Residuals)のMSに、元の分散分析のMS=15.9を使う
54.6/15.9
#p値 自由度(2,24)
# 1-pf(F値,分子の自由度,分母の自由度)
1-pf(54.6/15.9,2,24)
#次に低不安群で検定
dataL <- data.ex[data.ex$anxiety=="L",]
dataL
aovL=aov(score~factor(dataL$method),dataL)
summary(aovL)
#F値の計算
#:誤差(Residuals)のMSに、元の分散分析のMS=15.9を使う
443.5/15.9
#p値
1-pf(443.5/15.9,2,24)
#低不安群の多重比較
# Holmの方法による多重比較の場合
pairwise.t.test(score,method,data=dataL,p.adj = "holm")
#教授法1における不安の単純効果
data1 <- data.ex[data.ex$method=="1",]
aov1=aov(score~factor(data1$anxiety),data1)
summary(aov1)
#:誤差(Residuals)のMSに、元の分散分析のMS=15.9を使う
883.6/15.9
1-pf(883.6/15.9,1,24)
#効果量
883.6/(208.1+208.0+788.1+380.0)
#教授法2における不安の単純効果
data2 <- data.ex[data.ex$method=="2",]
aov2=aov(score~factor(data2$anxiety),data2)
summary(aov2)
#:誤差(Residuals)のMSに、元の分散分析のMS=15.9を使う
22.50/15.9
1-pf(22.5/15.9,1,24)
#効果量
22.5/(208.1+208.0+788.1+380.0)
#教授法3における不安の単純効果
data3 <- data.ex[data.ex$method=="3",]
aov3=aov(score~factor(data3$anxiety),data3)
summary(aov3)
#:誤差(Residuals)のMSに、元の分散分析のMS=15.9を使う
90.0/15.9
1-pf(90.0/15.9,1,24)
#効果量
90.0/(208.1+208.0+788.1+380.0)
#-----作図 応用 -----
#標準誤差を使ってエラーバーをつける準備
datase <- cbind(
m1se=c(3.35/sqrt(5),4.64/sqrt(5)),
m2se=c(5.18/sqrt(5),2.70/sqrt(5)),
m3se=c(4.76/sqrt(5),2.39/sqrt(5))
)
barx <- barplot(data,beside=TRUE)
#軸のラベルなどを追加
barplot(
data,
names.arg=c("1","2", "3"),
ylim=c(0, 50),xlab="Teaching Method", ylab="Score",legend.text=paste(c("High","Low")),
beside=TRUE)
#エラーバーをつける ±SE
arrows(barx,data,barx,data+datase,angle=90, length=0.1)
arrows(barx,data,barx,data-datase,angle=90, length=0.1)