両側検定と片側検定

帰無仮説に対する対立仮説は大きく分けて3パターンある

 検定の基本的考え方を紹介した時に、帰無仮説は標本の平均値間などに差のない仮説であると紹介した。この帰無仮説を検定によって棄却し、採択されるのが、帰無仮説に対する代わりの仮説、対立仮説alternative hypothesisである。帰無仮説は1つであるが、対立仮説は、検証したい立場によって大きく分けて3パターン存在している。2標本の平均値や分散をmA、mBの大きさの例を考えると、

(1)mA ≠ mB

(2)mA > mB

(3)mA < mB

つまり、2つの標本の統計量は等しくない(1)場合と、どちらかの標本の統計量が大きい((2)と(3))場合が考えられる。帰無仮説に対して、どの対立仮説を持っているかは、解析をしている人が考えている仮説次第である。(1)の場合は、mA > mBの場合とmA < mBの場合の両方が対立仮説に含まれている。このような場合、棄却域に含まれるのは帰無分布の両裾となる。例えば、t検定のいて、mAがmBより非常に大きな値を示す場合は、検定統計量は帰無分布の右側に位置するし、逆にmBのほうが大きい場合は、左側に位置するようになる。このように帰無分布の両裾が棄却域となる検定を両側検定two-sided testと呼ぶ。(2)や(3)の場合は、対立仮説の中に、mA > mBの場合かmA < mBの場合のいずれかしか含まれていない。このような時、例えば、対立仮説を(2)だと考えている場合、仮にmBが非常に大きく、両側検定では左側の棄却域に検定統計量が存在したとしても、帰無仮説を棄却する理由はない。このように、帰無分布の片裾の棄却域しか使わない検定を片側検定one-sided testと呼ぶ。

検定において有意水準を5%と定めることが多いのは、これまでも述べてきたが、両側検定か、片側検定かで、この5%の定め方が異なってくる。両側検定であれば、片裾につき2.5%として合計が5%となるように定めるし、片側検定では片裾で5%となるように定めることが多い。上図に、検定統計量と両側検定、片側検定の関係を示した。ここで重要なのは、考えている対立仮説によって、帰無分布の棄却域やp値の計算方法が変わる点である。そうなれば当然、対立仮説によって、有意水準をどう設定するべきか、有意になるかどうか、も変わるということだ。


両側検定/片側検定のp値

 有意水準と同じく、両側検定と片側検定では、p値の計算方法が異なっている。

まず、両側検定では棄却域が、帰無分布の両裾に設定されている。検定統計量が両裾のいずれかの棄却域に存在すれば、帰無仮説が棄却され、そのときのp値は有意水準を下回るように設定されている。標本から計算した検定統計量が帰無分布の中心から左側にある場合、検定統計量より左側に存在する領域の面積を計算する。逆に右側にある場合は、検定統計量より右側の領域の面積を計算する。これは、標本から得られた検定統計量よりも珍しい現象が起こる確率、という定義もできる。多くの場合は、ここで計算された面積の2倍をp値とする。帰無分布が左右対称分布であれば、帰無分布の中心を対称として、両裾にp値として計算される領域が存在する、と考えられる。ただし、帰無分布は必ずしも左右対称分布となるわけではない(例えば、F分布)ので、帰無分布の中心を対称として射影される、という考え方は、左右対称分布の場合に限られる。

 次に、片側検定では、期待している対立仮説によって、p値の計算が変わる。比較する2標本のうち、(2)のように後者に対して前者が、大きいという対立仮説を考えている場合、検定統計量よりも右側の領域の面積を計算し、p値とする。一方で、(3)のように前者の方が小さいと考えている場合は、検定統計量よりも左側の面積を計算し、p値とする。上記の図でいくと、赤で示される部分が(2)の場合のp値で、青で示される部分が(3)の場合のp値である。ソフトウェアRでは、検定統計量が指定した値よりも大きい(greater)か、小さい(less)か、という形で対立仮説を指定する。例えば、平均値のt検定であれば、検定統計量が0より大きい(つまり、(2)の状況)か、小さい((3)の状況)か、のいずれかを対立仮説を指定する。片側検定の場合、面積を2倍にする、という操作を行わない。


両側検定で(領域面積)× 2 = p値とならない例

 上記で、「多くの場合」は領域面積の2倍をp値とする、と紹介したが、そのように計算しない例もある。例えば、二項検定binomial testがそうである。二項検定は、0 or 1、表 or 裏、Yes or No、1 or それ以外、など、二者択一の値しかとらない標本について、その確率を論じるときに用いられる。まずは二項検定の性質を紹介しよう。

 代表的な使用例としては、コイントスがあげられる。コイントスをしたとき、表裏が出る確率は等しい(1/2)ことが期待され、これが帰無仮説となる。10回コイントスすると、標本{表, 裏, 表, 表, 表, 裏, 表, 表, 裏, 表}が得られた。このときに、このコインは表裏が平等に出現するコインであるかどうか、を判定するときに用いられる。二項検定における検定統計量は、試行回数と注目している状態が出現した回数(しばしば、成功回数などと呼ばれる)である。成功回数/試行回数 = 1/2かどうかを判定するのが二項検定である。今回は、試行回数は10回、注目している状態を表とすれば7回である。今回は、帰無仮説で表裏の出現確率は等しいと考えており、表と裏は対称関係にあるため、注目している状態を裏と考えてもよい。

 コインの表裏のように、出現確率が等しいと考えられる場合でなくても、二者択一の値しかとらない標本であれば二項検定を適用できる。サイコロの出目に注目し、1とそれ以外の値が出る確率を議論する。いかさまのないサイコロなら、1が出現する確率は1/6、それ以外の確率は5/6であり、これが帰無仮説となる。10回サイコロを投げると、標本{2,3,1,6,4,1,5,1,4,6}であった。このサイコロは1の出目に関して、いかさまがないと言えるか、を判定できる。この時の検定統計量は試行回数10、1の成功回数3である。今回は1に注目しているので、成功回数/試行回数 = 1/6かどうかを判定することになる。1以外の値すべて、に注目するのであれば、成功回数は7回となり、成功回数/試行回数 = 5/6かどうかを判定する検定となるので、注意しよう。

 さて、この二項検定における検定統計量は試行回数と成功回数(注目している状態が出現した回数)であり、成功回数は最小の0回から最大の試行回数までの値をとる。試行回数をn、成功回数をk、1回の試行回数における成功確率をp(p値ではない)とすれば、k回成功する確率は、次のように計算できる。

このk回成功する確率f(k)をk = 0, 1, 2, ……, nについて描いたものが、帰無分布となる。この分布は二項分布と呼ばれる。コイントスのようにp = 1/2であれば、左右対称分布になるし、サイコロのようにp = 1/6であれば非対称分布となる。p = 1/6、試行回数10であれば、帰無分布は次のようになる。

図1 試行回数10成功確率1/6の二項分布(帰無分布)。赤で示した部分がk = 3よりも珍しい現象。

帰無分布も検定統計量も与えられたので、ここから本題のp値を計算をすることができる。両側検定において、p値とは標本から得られた検定統計量よりも珍しい現象が起こる確率(二項分布の場合は検定統計量が出現する確率も含む)、と定義したのであった。いま、上記の標本に立ち戻ると、1の出目に注目すれば、成功回数は3であった。上の図を見たときに、赤で示した成功回数3よりも珍しい現象の確率の総和がp値となる。つまり、p = f(3) + f(4) + …… + f(10) = 0.2248となる。t検定ではここで得られた値を2倍してp値としていたが、二項検定では2倍にはせず、これをp値とする。今回の場合は、対立仮説を成功回数/試行回数 > 1/6考えるときのp値と一緒になる。このように二項検定のp値は求めた値の2倍とはならないので注意である。

 もう一つ例を出し、二項検定の両側検定と片側検定のp値が一致しない状況を見てみる。今度は、試行回数20回で、成功回数1回のサイコロだ。

2 試行回数20、成功確率1/6の二項分布(帰無分布)。赤で示した部分がk = 1よりも珍しい現象。

このとき、上の図から、成功回数1よりも珍しい現象はk = 0, 6, ……, 20とわかる。ゆえにp値はp = f(0) + f(1) + f(6) + …… + f(20) = 0.2323となる。p値として計算される領域は「両側検定っぽく」なった。しかし、p値は、f(0) + f(1)を2倍した値でも、f(6) + …… + f(20)を2倍した値でもない。なお、p = 1/2であれば左右対称分布となるので、2倍と計算できることもある。また、f(0) + f(1)は成功回数/試行回数 < 1/6と考えるときの片側検定のp値と一致するが、両側検定のp値とは一致しない。このように、すべての両側検定で(領域面積)× 2 = p値、としているわけではないので注意が必要である。ほかにも、Fisherの正確確率検定なども(領域面積)× 2 = p値とは定義していない検定統計量の対称性(比較する標本を入れ替えて検定統計量を計算してもよいか)や珍しい現象の定義に依存して、p値の計算は変わるので、よく確認しておこう。なお、上記、いずれの状況のサイコロも、有意水準5%としたときに、p > 0.05であるので、帰無仮説、成功回数/試行回数 = 1/6を棄却できない。つまり、いかさまサイコロかどうかの判断はできないということになる。


Rで行う両側検定/片側検定、p値の計算―t検定―

 ではRを使って、両側検定、片側検定、p値の計算を行ってみよう。実際は、コマンド一つで、検定統計量の計算、検定結果、p値の計算などをすべて行ってくれるが、ひとつひとつ手作業で計算することで、検定への理解を深めていこう。次のような標本があるときにt検定で平均値の差があるかを考える。有意水準は5%とする。まずは、両側検定を行うこととする。Rのt.test()はデフォルトで両側検定となっているので、特に何も指定する必要はない。


------------------------------------------------------

library(plotn)


m1 <- c(51, 55, 54, 58, 39, 53, 44, 58, 51, 78,

44, 55, 60, 38, 46, 38, 61, 49, 50, 49)

m2 <- c(58, 46, 64, 71, 57, 59, 68, 64, 46, 64,

54, 60, 52, 60, 55, 46, 59, 49, 43, 64)


t.test(m1, m2, var.equal = T) #Studentのt検定(両側検定)を実行

##

## Two Sample t-test

##

## data: m1 and m2

## t = -1.9677, df = 38, p-value = 0.05643

## alternative hypothesis: true difference in means is not equal to 0

## 95 percent confidence interval:

## -10.9555941 0.1555941

## sample estimates:

## mean of x mean of y

## 51.55 56.95

------------------------------------------------------


t検定の結果の中のうち、alternative hypothesisがnot equal to 0となっていれば両側検定である。では、上記に出てきた値のうち、t(検定統計量)、df(自由度)、p-valueを計算しよう。t検定における各値の計算方法は以前の項を参照してほしい。


------------------------------------------------------

n1 <- length(m1)

n2 <- length(m2)

df <- n1 + n2 - 2 #自由度の計算

df

## [1] 38


u <- ((n1 - 1)*var(m1) + (n2 - 1)*var(m2))/(n1 + n2 - 2) #合併不偏分散の計算

t0 <- (mean(m1) - mean(m2))/sqrt(u*(1/n1 + 1/n2)) #検定統計量tの計算

t0

## [1] -1.967697


if(t0 > 0){ #t0 > 0であればFALSE、t0 < 0であればTRUEを返す。

lower <- F

} else {

lower <- T

}


pt(q = t0, df = df, lower.tail = lower) * 2 #p-valueの計算。lower.tail = TRUEとすると、t0の左側について、FALSEとすると右側について計算する。

## [1] 0.05643284

------------------------------------------------------


上記の計算によって、すべての値を計算できた。両側検定において2標本の平均値が等しいという帰無仮説はぎりぎりであるが棄却されない。t分布において、どの領域がp値として算出されたかを確認しよう。次のコマンドで図示できる。


------------------------------------------------------

fils <- col_genelator(alpha = 0.5)

xx <- seq(-5,5,length = 200)

yy <- dt(xx, df = df)

plotn(xx, yy, type = "l", xlab = "統計量t", ylab = "確率密度") #図3の図示


xx1 <- seq(-5,t0,length = 200)

yy1 <- dt(xx1, df = df)

xx1 <- c(xx1,t0)

yy1 <- c(yy1,0)


xx2 <- seq(-t0,5,length = 200)

yy2 <- dt(xx2, df = df)

xx2 <- c(-t0,xx2)

yy2 <- c(0,yy2)


xx3 <- seq(t0,-t0,length = 200)

yy3 <- dt(xx3, df = df)

xx3 <- c(t0,xx3,-t0)

yy3 <- c(0,yy3,0)

overdraw(polygon(xx1, yy1, col = fils[1], border = NA),

polygon(xx2, yy2, col = fils[2],border = NA),

polygon(xx3, yy3, col = fils[3],border = NA),

abline(v = t0, col = "red", lty = 2),

abline(v = -t0, lty = 2),

text(x = t0, y = 0.35, labels = "x = t0", cex = 1.3),

text(x = -t0, y = 0.35, labels = "x = -t0", cex = 1.3))

------------------------------------------------------

3 自由度38のt分布。t0 = -1.97より小さい値の領域(青)、-t0 = 1.97より大きい値の領域(橙)および、t0 ~ -t0に挟まれる領域(緑)で構成される。

図3において、t0より珍しい現象とはつまり、t0より小さな値となる領域であり、青で示している。この青の面積はpt(q = t0, df = df, lower.tail = lower)で計算される値である。また、-t0より大きい値となる領域は橙で示したが、このとき(青の面積) = (橙の面積)である。t検定の両側検定のp値の考え方からp = 2 ×(青の面積)となる。もちろん、t0 > 0となる場合の珍しい現象とはt0より大きな値が出現する時であり、t0の正負によって計算される領域が異なっていることに注意が必要である(正負に関わらず、-t0側の領域の面積は等しいので、最終的な結果は同じであるが)。

 続いて、片側検定をしてみよう。例えば、平均値がm1 > m2となることを期待している場合は次のようにコマンドを指定する。



------------------------------------------------------

t.test(m1, m2, var.equal = T, alternative = "greater") #Studentのt検定(m1 > m2を期待する片側検定)を実行

##

## Two Sample t-test

##

## data: m1 and m2

## t = -1.9677, df = 38, p-value = 0.9718

## alternative hypothesis: true difference in means is greater than 0

## 95 percent confidence interval:

## -10.02681 Inf

## sample estimates:

## mean of x mean of y

## 51.55 56.95

------------------------------------------------------


tやdfは同じであるが、p値は異なっている。これは次のように計算されるものと同じである。alternative hypothesisはgreater than 0となっており、片側検定であることがわかる。つまり、検定統計量tが0より大きい(m1の平均 - m2の平均 > 0)ことを対立仮説としているということである。


------------------------------------------------------

pt(q = t0, df = df, lower.tail = F) #p-valueの計算。lower.tail = FALSEとしているので検定統計量の右側を計算している

## [1] 0.9717836

------------------------------------------------------


これは図3において、t0より右側の領域、つまり緑の面積と橙の面積を足し合わせた面積を計算していることになる。t.test(alternative = "greater")と指定することで、検定統計量より大きな(greater)領域をp値としている。帰無分布は帰無仮説が正しいときの検定統計量tの分布であるので、検定統計量tが0より大きいとする対立仮説を持っていて、帰無仮説が棄却されるとしたら、t0が帰無分布の右端にいるときである。t0より大きな値が出る確率が非常に小さい、ということは2標本の平均値に差がないと考えるのに無理があるだけならず、m1よりもm2のほうが平均が大きいと考えるのも無理がある、ということになる。このような論法で片側検定は帰無仮説を棄却する。今回は、p > 0.05となっており、帰無仮説は棄却できない。続いて、平均値がm1 < m2となることを期待しているt検定を行おう


------------------------------------------------------

t.test(m1, m2, var.equal = T, alternative = "less") #Studentのt検定(m1 < m2を期待する片側検定)を実行

##

## Two Sample t-test

##

## data: m1 and m2

## t = -1.9677, df = 38, p-value = 0.02822

## alternative hypothesis: true difference in means is less than 0

## 95 percent confidence interval:

## -Inf -0.7731942

## sample estimates:

## mean of x mean of y

## 51.55 56.95

------------------------------------------------------


これは次のように計算されるものと同じである。alternative hypothesisはless than 0となっており、片側検定であることがわかる。つまり、検定統計量tが0より大きい(m1の平均 - m2の平均 < 0)ことを対立仮説としているということである。


------------------------------------------------------

pt(q = t0, df = df, lower.tail = T) #p-valueの計算。lower.tail = TRUEとしているので検定統計量の側を計算している。

## [1] 0.02821642

------------------------------------------------------


これは図3において、t0より側の領域、つまりの面積計算していることになる。t.test(alternative = "less")と指定することで、検定統計量より小さなless)領域をp値としている。この場合、p < 0.05であり、帰無仮説を棄却し、m1 < m2という対立仮説を採択することになる。

 なお、今回、同じ標本に対して異なる検定を3回行った。そしてそれぞれ結果が異なることがわかっただろう。後述もするが、検定を行ってから、対立仮説を帰無仮説が棄却されるものに変える、ということはやってはならない。対立仮説は、検定を行う前から明確に定めておくようにしよう。


Rで行う両側検定/片側検定、p値の計算―二項検定―

 次は、両側検定でp =(領域面積)× 2とならない例として、二項検定を取り扱おう。上記の試行回数20、成功回数1のサイコロの出目について考える。有意水準は5%とする。データとしては以下のように始めは与えよう。


------------------------------------------------------

dice <- c(2, 3, 4, 1, 2, 3, 4, 6, 6, 2,

5, 4, 2, 5, 6, 3, 4, 3, 4, 2)

try <- 1:20


d <- data.frame(try, dice)


d

## try dice

## 1 1 2

## 2 2 3

## 3 3 4

## 4 4 1

## 5 5 2

## 6 6 3

## 7 7 4

## 8 8 6

## 9 9 6

## 10 10 2

## 11 11 5

## 12 12 4

## 13 13 2

## 14 14 5

## 15 15 6

## 16 16 3

## 17 17 4

## 18 18 3

## 19 19 4

## 20 20 2

------------------------------------------------------


20回サイコロを投げたときの、サイコロの出目をまとめている。このような何かの長さとか重さのような量的なデータではなく、出目のような各水準に振り分け可能なカテゴリカルなデータは次のような集計表にまとめられることも多い。


------------------------------------------------------

table(d$dice)

##

## 1 2 3 4 5 6

## 1 5 4 5 2 3

------------------------------------------------------


上記だと1の出目は1回、4の出目は5回、という風に集計されている。どちらの形のデータ形式でもよいが、私は初めは集計表ではなく、各試行で出目は何だったか、を記録することをお勧めする。そのほうが試行回数(測定回数、といってもよい)が明確にわかるし、量的データでも一般的なまとめ方だからだ。それに、集計表にしたければtable()関数で簡単に変換できる。

 さて、今回は1の出目について、(1の出た回数)/試行回数 = 1/6の帰無仮説を棄却できるかを考えてみよう。今回の1の出現確率は1/20で、それ以外の出現確率は19/20である。Rで二項検定を行うときは次のようにする。まずは両側検定である。


------------------------------------------------------

total <- length(dice)


binom.test(x = table(d$dice)[1], n = total, p = 1/6)

#x:注目している現象の出現回数(成功回数)、今回は1。x = 1と指定してもよい。

#n: 試行回数

#p: 帰無仮説で仮定する成功回数/試行回数(成功確率)。今回はサイコロなので1/6

##

## Exact binomial test

##

## data: table(d$dice)[1] and total

## number of successes = 1, number of trials = 20, p-value = 0.2323

## alternative hypothesis: true probability of success is not equal to 0.1666667

## 95 percent confidence interval:

## 0.001265089 0.248732763

## sample estimates:

## probability of success

## 0.05

------------------------------------------------------


number of successは成功回数であり、table(d$dice)[1]で指定した値、すなわち1である。number of trialsは試行回数であり、totalで指定した値、すなわち20である。p-valueは後で計算するとして、alternative hypothesisに注目すると、not equal to 0.1666667となっている。これはすなわち、成功確率が1/6(0.16666667)ではない、両側検定となっていることを示している。probablity of successは観測された成功確率で1/20 = 0.05のことである。では本題のp値の計算であるが、先に帰無分布の形がわかったほうが良いので、描画しよう。次のようにする。


------------------------------------------------------

fils <- c(rep(col_genelator(alpha = 0.5)[1],2),

rep(col_genelator(alpha = 0.5)[3],4),

rep(col_genelator(alpha = 0.5)[2],15))

pos <- barplotn(dbinom(0:20,size = 20,prob = 1/6), #図4の描画

ylab = "確率", xlab = "成功回数k",

mar = c(3.8, 3.8, 1, 1), xaxt = "n",

col.fill = fils)

overdraw(axis(1, at = pos, labels = 0:20, cex.axis = 1.2),

abline(h = dbinom(1,size = 20,prob = 1/6),lty = 2))

------------------------------------------------------

4 試行回数20、成功確率1/6の二項分布(帰無分布)。で示した部分が分布左側の(成功回数)= 1より珍しい現象。橙で示した部分が分布右側の(成功回数)= 1より珍しい現象。緑で示した部分が(成功回数)= 1より頻繁に起こる現象。

4において、(成功回数) = 1より珍しい現象とは、上記で定義したf(1)よりも出現する確率が少ない成功回数のことであり、成功回数が0、1、6、……、20となる、青や橙で示されている確率である。青や橙の確率の総和がp値となるので、次のように計算する。


------------------------------------------------------

#pbinomを使う場合

pbinom(1, size = total, prob = 1/6, lower.tail = T) + pbinom(5, size = total, prob = 1/6, lower.tail = F)

#和の前半で成功回数が1以下となる確率の総和、後半で6以上となる確率の総和を計算。lower.tail = Fとすると、指定した値の確率は含んでくれないので、6以上の確率を計算するときは5を指定する(5の確率は計算されず6から計算される)。

## [1] 0.2322608


#dbinomを使う場合

threshold <- dbinom(table(d$dice)[1], size = total, prob = 1/6) #成功回数が1の時の確率を計算

under <- dbinom(0:20, size = total, prob = 1/6) <= threshold #成功回数が1の時の確率より小さい確率かどうかを判定

sum(dbinom(0:20, size = total, prob = 1/6)[under]) #成功回数が1の時の確率より小さい確率だけを抽出して総和をとる

## [1] 0.2322608

------------------------------------------------------


確かに、p-valueと上記の計算した値は一致する。各自で、pbinom(1, size = total, prob = 1/6, lower.tail = T)*2やpbinom(5, size = total, prob = 1/6, lower.tail = F)*2と一致しないことを確認しよう。次に片側検定を行ってみよう。片側検定は、あまりt検定と発想は変わらない。まずは成功確率が1/6よりも大きいという対立仮説を持っている場合は、次のようにする。


------------------------------------------------------

binom.test(x = table(d$dice)[1], n = total, p = 1/6, alternative = "greater")

##

## Exact binomial test

##

## data: table(d$dice)[1] and total

## number of successes = 1, number of trials = 20, p-value = 0.9739

## alternative hypothesis: true probability of success is greater than 0.1666667

## 95 percent confidence interval:

## 0.002561379 1.000000000

## sample estimates:

## probability of success

## 0.05

------------------------------------------------------


このとき、成功回数が1以上の領域が、p値として計算される。図4で言うならば、緑および橙の確率の総和に加えて、成功回数が1の時の確率も足された値である。次のように計算する。


------------------------------------------------------

pbinom(q = 0, size = total, prob = 1/6, lower.tail = F)

## [1] 0.9739159


sum(dbinom(1:20, size = total, prob = 1/6))

## [1] 0.9739159

------------------------------------------------------


確かにp値は一致する。次は、成功確率が1/6より小さいという対立仮説を持っているときだ。


------------------------------------------------------

binom.test(x = table(d$dice)[1], n = total, p = 1/6, alternative = "less")

##

## Exact binomial test

##

## data: table(d$dice)[1] and total

## number of successes = 1, number of trials = 20, p-value = 0.1304

## alternative hypothesis: true probability of success is less than 0.1666667

## 95 percent confidence interval:

## 0.0000000 0.2161062

## sample estimates:

## probability of success

## 0.05

------------------------------------------------------


このとき、成功回数が1以下の領域が、p値として計算される。図4で言うならば、青の領域の確率の総和である。次のように計算する。


------------------------------------------------------

pbinom(q = 1, size = total, prob = 1/6, lower.tail = T)

## [1] 0.1304203


sum(dbinom(0:1, size = total, prob = 1/6))

## [1] 0.1304203

------------------------------------------------------


同様にp値は一致する。今回の結果だと、いずれの検定においてもp > 0.05であり、(1の出目の回数)/(試行回数)= 1/6という帰無仮説を棄却できず、ゆえにいかさまサイコロかどうかの判断は行えないことになる。もちろん、1以外の出目について検定してみることもできて、もしかすれば他の出目に関しては帰無仮説が棄却されて、いかさまサイコロである可能性が出てくるかもしれない。ただし、発展的な話であるが、同じデータをほかの出目に関して解析しなおす場合、検定多重性の問題が生じるので、有意水準を調整するか、ほかの出目に注目するつもりで20回データを取り直したほうが良いだろう。例えば、20回サイコロを振って2だけに注目して二項検定をする、もう20回サイコロを振って3だけに注目して……、のようにだ。あるいはもっと高度な方法として、2つのカテゴリではなく、複数のカテゴリに拡張した多項検定を行うという手もある。とりあえず、本旨から外れるので、この話はここまでとする。以上が、両側検定および片側検定の基本概念と、p値の計算方法についての解説である。


両側検定片側検定のどちらをするべきか?

 もし、統計量に関して、明確な対立仮説があるとき、片側検定を実行する意味が出てくる。例えば、ある薬剤について、血糖値を下げる効果が期待されるとき(あるいはそちらの効果にしか興味がないとき)、薬剤投与前よりも後のほうが血糖値の平均が小さくなる対立仮説を持ち、片側検定をする、という状況が考えられる。もし、帰無仮説が棄却されれば、投与前と投与後の血糖値は同じである、という帰無仮説を棄却し、投与後には血糖値が下がった、という対立仮説を採用する。例え、投与後のほうが血糖値が上がったとしても、それは偶然であると考え、帰無仮説は棄却しない。しかし、この薬剤がまだ開発段階であり、血糖値を上昇させるのか、減少させるのか、対立仮説を持てないときもあるだろう。このときは両側検定を行い、帰無仮説が棄却されたときに、投与前と投与後で、どちらが血糖値が大きかったのか、を判断する。この薬剤について、もし血糖値を上昇させる効果があるとしても、それは薬剤開発のうえで極めて重要な情報だろう。

 私を含めた多くの生態学者が実験データを得るとき、必ずしも明確な対立仮説があるとは限らない。そもそも、私たちの多くは、実験がどんな結末になるかに関して、強い予想を持てるほどのデータがないことが多い。そんなときは、両側検定を行うことになる。そして、帰無仮説が棄却された場合に、平均値が上がったり、下がったりした理由を考察することになる。万一、自分の予想とそぐわない結果になっても、それは予想できるほどのデータを手元に持っていなかったのであり、それを受け入れたうえで、次に進むのが科学者としてあるべき姿だ。片側検定を行うと、想定していない対立仮説が採択されうるときに、それ見逃すことになる。よほど、対立仮説に強い根拠がない限りは、まずは両側検定を行い(あるいは検定ではなく平均値をみて)、データの傾向を確認することをお勧めする。

 なお、前述したが、検定結果あるいは平均などの統計量を見てから対立仮説を変更するのは、全く褒められた態度ではないので注意しよう。対立仮説は、実験に対する自分の立場の表明であり、検定結果によって曲げていいものではない。例えば、平均値がm1 > m2とわかっているデータがあるときに、両側検定よりもm1 > m2を対立仮説とする片側検定のほうが帰無仮説を棄却しやすい。もともと、m1 > m2となるはずだ、という対立仮説を持っているのであれば片側検定をする意味があるが、どちらが大きくなるかわからないという立場から両側検定をしようと思っていたのに平均値を見てから片側検定にする、というのは良くない、ということだ。このようなことをしていると、第1種の過誤を犯しやすくなる。もちろん、帰無仮説を棄却されると、自分の予想に反する、と考えて逆にm1 < m2を対立仮説とする片側検定を行うのも、ダメである。自分がどんな対立仮説を持っているか、よく考えて検定を行おう。