理学療法士がまとめたノート

統計学備忘録 since2016

Rを使って統計学を勉強するブログです

二元配置分散分析 分散分析表の理解

投稿日2017.3.8
更新日2017.6.26

繰り返し数がすべて等しい場合 (=5)
水準A1 × 5回 = (A11 ,A12 ,A13 ,A14 ,A15 ) 
水準A2 × 5回 = (A21 ,A22 ,A23 ,A24 ,A25 )
つまり水準B (1,2,3) はA1、A2をそれぞれ5回繰り返したことになります

f:id:yoshida931:20170626180739p:plain
(仮想データ使用)

B1<-c(7,11,8,10,9,23,21,26,27,22)
B2<-c(9,11,10,9,11,12,16,16,17,15)
B3<-c(21,22,19,18,22,9,8,11,10,9)  
dat<-c(B1,B2,B3)
rown<-rep(c("A1","A2"),times=c(5,5))       #行のラベル名
A<-rep(rown,3)
B<-rep(paste0("B",1:3),each=10)
summary ( aov ( dat ~ A * B) )

     Df Sum Sq Mean Sq F value Pr(>F)
A  1   67.5  67.5    21.89    9.40e-05 ***
B  2   73.3  36.6       11.88    0.000259 ***
A:B 2   850.2  425.1    137.87   6.94e-14 ***
Residuals 24 74.0 3.1

分散分析表の計算方法を忘れないように記載しておきます!

f:id:yoshida931:20170626185319p:plain

Fvalue:F値(…の平均平方÷水準内変動の平均平方)
Df:自由度、SumSq:平方和、MeanSq:平均平方(平方和÷自由度)、

(平均平方、F値は平方和から算出可能.よって、平方和を調べるべし!)

 

http://yoshida931.hatenablog.com/entry/2017/02/19/144239

 

A:因子Aの水準間の変動を調べる
B:因子Bの水準間の変動を調べる
A:B:因子Aと因子Bの交互作用の変動を調べる
Residuals:水準内の変動を調べる

(変動:各測定値から平均値へのずれ(バラつき)が、「0」にならないように平均値からの変位の二乗和をとったもの.分散分析では平方和.)

 

Df(自由度)
A:a-1
B:b-1
A:B:(a-1)×(b-1)
Residuals:a×b×(n-1)

因子Aの水準数a、因子Bの水準数b、繰り返し数n、データ総数a*b*n
総数= length(data)、総平均=mean(data)とします
a=2; b=3; n=5; mea<-mean(dat)


因子A
の水準A1・A2間の変動(平方和)
ASumSq      
A1<-c( B1[1:5] , B2[1:5] B3[1:5] ) 
A2<-cB1[6:10] , B2[6:10] B3[6:10] ) 
n*b*( (mean(A1)-mea)^2+(mean(A2)-mea)^2)
=67.5

 

f:id:yoshida931:20170310132759p:plain

 

因子Bの水準B1・B2・B3間の変動(平方和)
B SumSq
n*a*( (mean(B1)-mea )^2+ ( mean (B2) - mea )^2 + (mean ( B3)-mea )^2 )
=73.26667

 

交互作用の変動
inshiA:inshiBのSumSq
水準内平均‐水準A平均-水準B平均+総平均
n*(mean ( B1[1:5] ) - mean(A1) - mean(B1) + mea )^2+
 n*( mean ( B1[6:10] ) - mean(A2) - mean(B1) + mea )^2+
 n*( mean ( B2[1:5] ) - mean(A1) - mean(B2) + mea )^2+
 n*( mean ( B2[6:10] ) - mean(A2) - mean(B2) + mea )^2+
 n*( mean ( B3[1:5] ) - mean(A1) - mean(B3) + mea )^2+
 n*( mean ( B3[6:10] ) - mean(A2) - mean(B3) + mea)^2

=850.2

 

f:id:yoshida931:20170310142941p:plain

 

各水準の平均値をプロットしたグラフ
A1<- c ( mean(B1[1:5] ) , mean ( B2 [1:5] ), mean ( B3[1:5] ) )
A2<- c ( mean(B1[6:10] ) , mean ( B2 [6:10] ), mean ( B3[6:10] ) )
x<- data.frame ( A1 = c(9,10,20.4) , A2 = c (23.8,15.2,9.4) )
plot ( x$A1 , type="o", lty=3, xaxt="n", xlim = c(0.8,3.2), ylim=c(7,25), ylab="", xlab = "", bty = "l" ) 
lines (x$A2, pch=19 , type="o")
axis (side = 1, at =1:3 , labels=c("B1","B2","B3") )
legend ( 2.7 , 25 , legend = colnames(x) , pch = pchs, lty = ltys )

f:id:yoshida931:20170310172329p:plain

 

水準内の変動
ResidualsSumSq
sum( ( B1[1:5] - mean ( B1[1:5] ) ) ^2 )+
 sum( ( B1[6:10] - mean (B1[6:10] ) )^2)+
 sum( ( B2[1:5] - mean (B2[1:5] )^2)+
 sum( ( B2[6:10] - mean ( B2[6:10] ) ) ^2)+
 sum( ( B3[1:5] - mean (B3[1:5] ) ) ^2 )+
 sum( ( B3[6:10] - mean (B3[6:10] ) ) ^2 )
=74

 

f:id:yoshida931:20170310140533p:plain


注意)水準内変動はいわゆる各水準内のバラつきです.
F値は水準内平均平方を分母にとるため、バラつきが
小さいと交互作用や因子内の水準間差が出やすくなります

例)
交互作用の変動:F=交互作用の変動の平均平方 ÷ 水準内変動の平均平方