例えば,A ,B ,C の 3 つの場所のリンゴの葉の長さを調べてみたところ,次のようなデータが得られた.
場所 |
|
葉の長さのデータ |
||||
|
A |
80 |
73 |
80 |
82 |
74 |
|
|
B |
73 |
68 |
81 |
85 |
|
|
|
C |
85 |
93 |
88 |
|
|
|
検定を行うために,上記のデータを R に読み込ませる.
length <- c(80,73,80,82,74,73,68,81,85,85,93,88) # データ group <- c( 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3) # 群 |
各群について,平均値±標準偏差のプロットを行う場合は,パッケージ gplots 中の関数 plotmeans() を用いればよい.
library(gplots) plotmeans(length ~ group) |

この場合はデータが
1 元配置となっているが,データが 2 元配置となっている場合は関数
interaction.plot() で同様のプロットが行える.
attach(ToothGrowth) interaction.plot(dose, supp, len, fixed=TRUE) |

各群の平均値と標準偏差が分かっている場合は,パッケージ gplots 中の関数 plotCI() を用いればよい.
tmp <- split(length, group) means <- sapply(tmp, mean) stdev <- sqrt(sapply(tmp, var)) n <- sapply(tmp, length) # この length は関数の length() である ciw <- qt(0.975, n) * stdev / sqrt(n) plotCI(x=means, uiw=ciw, col="black", barcol="blue", lwd=1) |

場所により葉の長さに差があるかどうかを検定する場合は関数 oneway.test() を用いる.このとき引数はベクトルで与える.
oneway.test(length ~ group, var=T) # 一元配置分散分析
One-way analysis of means
data: length and group
F = 4.7828, num df = 2, denom df = 9, p-value = 0.03845
|
場所により葉の長さに差があるかどうかを検定する場合は関数 kruskal.test() でも検定できる.
kruskal.test(length ~ group) # クラスカル・ウォリス検定
Kruskal-Wallis rank sum test
data: length by group
Kruskal-Wallis chi-squared = 5.8408, df = 2, p-value = 0.05391
|
以下のようにしても良い.
x <- c(80, 73, 80, 82, 74) y <- c(73, 68, 81, 85) z <- c(85, 93, 88) kruskal.test(x, y, z) |
全体で差があるかないかを見るのではなく,各群の平均値の大きさを多重比較することも出来る.例えば,pairwise.t.test() で,検定全体の有意水準が 5% を超えないよう調整した上で,多重比較を行うことが出来る.調整の方法は "holm" や "bonferroni" の方法が選択できる.
pairwise.t.test(length, group, p.adj = "bonf")
Pairwise comparisons using t tests with pooled SD
data: length and group
1 2
2 1.000 -
3 0.074 0.059
P value adjustment method: bonferroni
|
関数 pairwise.wilcox.test() を用いれば,ウイルコクソンの順位和検定で対比較を行うことが出来る.他にもテューキーの方法(関数 TukeyHSD())やウイリアムズ検定(パッケージ multcomp 中の関数 simtest(x ~ b, type="Williams"))が用意されている.
例えば,A ,B ,C の 3 つの場所について,肥料の量を変えてリンゴを育てていき,しばらく育てた後のリンゴの重さを調べてみたところ,次のようなデータが取られた.
|
場所/肥料の量 |
|
10 |
20 |
30 |
40 |
|
A |
180 |
193 |
200 |
201 |
|
|
B |
150 |
189 |
186 |
190 |
|
|
C |
144 |
178 |
166 |
173 |
肥料の効果があるかどうかを検定する場合はフリードマン検定を行う.
x <- matrix(c(180,193,200,201,
150,189,186,190,
144,178,166,173), ncol=4, byrow=T)
friedman.test(x)
Friedman rank sum test
data: x
Friedman chi-squared = 7, df = 3, p-value = 0.0719
|
最後に,ここまでで紹介できなかった関数を挙げる:
ansari.test() :Ansari-Bradley 検定
fligner.test() :Fligner-Killeen 検定
mantelhaen.test() :Cochran-Mantel-Haenszel 検定
mood.test() :Mood 検定
quade.test() :Quade 検定