P値または有意確率の簡単な定義
定義 1
仮設検定で帰無仮説を棄却する確率を有意確率p-valueと言う。
説明
有意確率が有意水準より小さい場合、帰無仮説が棄却されたと見なされる。帰無仮説の下で有意確率が小さいとは、「その程度で"たまたま"と言うには帰無仮説が間違っている証拠の強度が強い」と理解できる。
ここで検定力曲線power curveや棄却域rejection regionなどの言葉が出ると学習が難しくなり、一生懸命勉強しても帰無か対立かで揺れるから誰でも混乱する。だから、核心的な概念だけきちんと理解することが効率的だ。そういうものは、統計学の長く険しい道のりではそこまで重要ではない。
実際に、大学1~2年生のレベルで、どれだけ説明して真面目に勉強しても、感覚がつかみにくいのは正常だ。上級生になり、実際の分析に触れるようになると、嫌でもp値に精通するようになる。だから、理解できないとか混同するとかであまり失望しなくてもいい。p値は学ぶものではなく、慣れるものだ。
p値は確率だ。
つまり$0 \le p \le 1$である。この事実を理解できない場合、十中八九、p値の定義を理解しておらず、他の科学分野の何らかの係数のように考えている。p値は結局のところ、仮設検定も絶対的なものではないので、確率的にどれくらい信じるべきかを言うために導入された。
p値が低いほど強く棄却するわけではない
重要な事実だ。有意水準 $\alpha$ で $p \le \alpha$ でさえあれば帰無仮説は棄却される。
p値について最も一般的な誤解の一つは、p値が小さいほど、より強く帰無仮説を棄却するとする信念である。もちろん、p値が小さい場合、より低い有意水準で帰無仮説を棄却できるのは事実だが、その「程度」は関係ない。$0.001$であれ$10^{-8}$であれ、非常に小さい正の$\varepsilon >0$でさえ、有意水準より小さければ、同じ棄却だ。
帰無仮説が棄却されることに良し悪しがない
つまり、p値が高いとか低いとかに良し悪しはない。この場合、普段から勉強せずに急に詰め込みする学生が最も疑問に思うが、その答えはない。何が良くて何が悪いかは、結果で自分で判断するだけで、データを扱う人はそんな判断をする必要もなく、してはいけない。
例えば、t検定やz検定の検定統計量は、両側の尾で起こりにくくなるため、絶対値が大きいと棄却される。ロジスティック回帰のホスマー-レムショウ適合度検定では、検定統計量はカイ二乗分布に従い、$0$に近いほど良く適合したという意味なので、値が大きいと棄却される。
上の二つの例で、何が帰無仮説だと明言せずに、何が棄却されたか感じがしたなら、p値を理解したとみなしてもよい。少なくとも仮設検定では、検定統計量の分布に基づいて帰無仮説と対立仮説はこのように決定される。棄却域を決める時は棄却域を最大にするという原則のもとで決定されるので、この「起こりにくいこと」という説明が成り立つ。与えられた有意水準でどのように棄却域を決定するかを想像してみれば納得するだろう。
上の棄却域は分布関数の下の面積が同じだが、$x$軸上の長さは明らかに異なる。誰でも、両側検定の棄却域を常識的に一つ選ぶとすれば、最初のものを選ぶだろう。
関連項目
コード
以下は、上の図を描くためのRコードだ。
win.graph(9,3)
par(mfrow=c(1,3))
plot(0,0,type='n',xlim=c(-4,4),ylim=c(-0.08,0.4),xlab=NA,ylab=NA)
polygon(c(seq(qt(0.975,14),5,0.01),qt(0.975,14)),
c(dt(seq(qt(0.975,14),5,0.01),df=14),0),
col='yellow',lty=0)
polygon(c(seq(-5,qt(0.025,14),0.01),qt(0.025,14)),
c(dt(seq(-5,qt(0.025,14),0.01),df=14),0),
col='yellow',lty=0)
abline(h=0)
lines(seq(-5,5,0.01),dt(seq(-5,5,0.01),df=14))
plot(0,0,type='n',xlim=c(-4,4),ylim=c(-0.08,0.4),xlab=NA,ylab=NA)
polygon(c(seq(qt(0.95,14),5,0.01),qt(0.95,14)),
c(dt(seq(qt(0.95,14),5,0.01),df=14),0),
col='yellow',lty=0)
abline(h=0)
lines(seq(-5,5,0.01),dt(seq(-5,5,0.01),df=14))
plot(0,0,type='n',xlim=c(-4,4),ylim=c(-0.08,0.4),xlab=NA,ylab=NA)
x<-c(seq(qt(0.50,14),qt(0.55,14),0.01))
y<-c(dt(seq(qt(0.50,14),qt(0.55,14),0.01),df=14))
x<-c(x[1],x,x[length(x)])
y<-c(0,y,0)
polygon(x,
y,
col='yellow',lty=0)
abline(h=0)
lines(seq(-5,5,0.01),dt(seq(-5,5,0.01),df=14))
경북대학교 통계학과. (2008). 엑셀을 이용한 통계학: p203. ↩︎