一要因の分散分析(補足)

分散分析を厳密に行う場合、正規分布に各群が従うかを調べて、正規分布に従えば分散分析、従わなければノンパラメトリックの多群検定であるクラスカル- ウォリス検定を使用しなくてはならない。

1
2
3
4
5
6
7
A<-c(5,4,5,3,4,2,5,4,4,3)
B<-c(3,5,1,3,2,1,3,4,2,1)
C<-c(3,4,2,2,4,3,3,2,4,3)
D<-c(5,5,4,5,3,4,4,5,4,5)
d<-data.frame(A,B,C,D)
d1<-stack(d)
tapply(d1$values,d1$ind,shapiro.test)

$A

Shapiro-Wilk normality test

data: X[[1L]]
W = 0.8858, p-value = 0.152

$B

Shapiro-Wilk normality test

data: X[[2L]]
W = 0.9093, p-value = 0.276

$C

Shapiro-Wilk normality test

data: X[[3L]]
W = 0.8318, p-value = 0.03521

$D

Shapiro-Wilk normality test

data: X[[4L]]
W = 0.7809, p-value = 0.008489

群CとDが正規分布に従っているとはいえない(有意水準5%)

クラスカルウォリス検定においても厳密にはフリグナー= キリーンの検定により「ばらつきの同等性」を検定しておく必要がある。

1
fligner.test(values~ind,data=d1)

Fligner-Killeen test of homogeneity of variances

data: values by ind
Fligner-Killeen:med chi-squared = 4.9286, df = 3, p-value = 0.1771

Rコマンダーのメニューで行う
アクティブデータセットをd1にする
統計量~ノンパラメトリック検定~クラスカル- ウォリス検定

1
2
tapply(d1$values, d1$ind, median, na.rm=TRUE)
kruskal.test(values ~ ind, data=d1)

Kruskal-Wallis rank sum test

data: values by ind
Kruskal-Wallis chi-squared = 14.8817, df = 3, p-value = 0.001921

有意差あり(有意水準5%)

多重比較 bonferroniの方法

1
pairwise.wilcox.test(d1$values, d1$ind, data.name="d1", p.adjust.method="bonferroni")

Pairwise comparisons using Wilcoxon rank sum test

data: d1$values and d1$ind

A B C
B 0.150 - -
C 0.294 1.000 -
D 1.000 0.022 0.015

P value adjustment method: bonferroni