【第14回】仮説検定の考え方
本記事は高等学校学習指導要領(平成30年告示)において、数学Iで学ぶことになる「仮説検定の考え方」を情報Iの授業で導入から扱ってみるという試みについてまとめています。
このようなことを考えた経緯などは、下記記事にまとめておりますので、よろしければご覧ください。
前回の復習
前回の記事より、次のような問題を考え始めました。
あるサイコロを100回投げたところ、1の目が35回出た。このサイコロは1の目が出やすいような歪みがあると判断してもよいだろうか?
下記が前回の記事です。
この問題を次の流れで考えていくことにし、前回は 3. までの流れをまとめました。
サイコロを100回投げる試行のシミュレーションをPythonを利用して行い、サイコロを100回投げて35回以上1の目が出ることがどれくらい起こりにくいことなのかを直観的に捉える。
「1の目が100回中ちょうど35回出る確率」を求める式を考え、それを求める。これは数学Aで学習する反復試行の確率であり、それをPythonを使って実際に計算してみる。
100回サイコロを投げたときの1の目が出る回数を横軸に、ちょうどその回数だけ1の目が出る確率を縦軸にとった棒グラフをPythonを使ってグラフ描画する。ここで二項分布について簡単にまとめる。
ここまでの状況把握をもとに、仮説検定の考え方を整理する。最後に、1の目が100回中35回以上出る確率をPythonを使って計算し、それをもとに仮説に対してどのような判断ができるかという結論を出す。
今回は最後の 4. について、つまり仮説検定の考え方の導入部分について掘り下げて考えて参りたいと思います。
前回の最後で考えました、100回サイコロを投げたときの1の目が出る回数を横軸に、ちょうどその回数だけ1の目が出る確率を縦軸にとった棒グラフを描画したものをこちらに再掲します。
仮説検定の考え方
それでは、問題を考えていきましょう。
1の目が35回出ることはきわめて珍しいという予測が立ちました。ただ、世の中、そんなに珍しいことは起こるものではありません。めったに起こらないことが起きたときはそれが単なる偶然ではなく、何か他の要因があるのではと考える方が自然な場合が多くあります。そこで今回、1の目が出やすいような歪みがあるのではないかと考えているわけです。
このように、正しいかどうかを判断したい主張を仮説といい、それを統計的な手法を用いて正しいかどうかを判断することを仮説検定といいます。
帰無仮説と対立仮説
今回、判断したい主張は下記のものでした。
[仮説$${ H_1 }$$]
このサイコロは1の目が出やすいような歪みがある。
仮説検定では、正しいことを判断したい主張に反する主張を立て、これが正しくないと判断することで元の主張が正しいことを主張します。
これは、数学で学習した背理法に近い考え方です。$${ \sqrt{2} }$$が無理数であることを示すのに、これが有理数であると仮定して矛盾を導いて結論が正しいと主張した証明法とよく似ています。
今回主張したいのは「1の目が出やすいような歪みがあること」でしたので、それに反する主張は「公正なサイコロであること」です。つまり次のような主張に言い換えられます。
[仮説$${ H_0 }$$]
このサイコロの1の目が出る確率は$${ \frac{1}{6} }$$である。
こちら仮説$${ H_0 }$$が正しくないと判断することで、元の主張が正しいという判断します。
最初に立てた仮説$${ H_1 }$$の主張に反する仮説$${ H_0 }$$を帰無仮説といい、それに対して仮説$${ H_1 }$$を対立仮説といいます。
仮説検定は帰無仮説が正しくないと判断することで、対立仮説の主張が正しいと判断することが目標とも言えます。帰無仮説は正に「無に帰す」ことを目指して立てられた仮説ということです。
有意水準
それでは、何をもって帰無仮説が正しくないと判断するのでしょうか。
帰無仮説の仮定のもとでは、現在観測されているようなことがめったに起こらないことであることを主張することで、このようなことが起こるのは不自然であり、むしろ前提としていた帰無仮説が正しくないと判断することが妥当と判断します。
その「めったに起こらない」の基準(確率)をあらかじめ定めておき、「その基準よりも確率が低いことが起こっている場合には、帰無仮説が正しくないと判断しましょう」という取り決めをしておくという意味です。
帰無仮説を正しくないと判断することを「帰無仮説を棄却する」といい、帰無仮説を棄却する基準となるような「めったに起こらない」の基準を有意水準といいます。これはよく5%や1%などに設定されます。
これは、帰無仮説を棄却する基準であり、その検定を行うときのルールのようなものですから、検定を行う前にきちんと決めておく必要があります。そうしないと後からいくらでも恣意的に判断を変えられてしまいます。
今回の問題の捉え直し
それでは今回考えている問題を有意水準を決めて、きちんとした仮説検定の問題として捉え直しましょう。今回は有意水準を1%とします。
あるサイコロを100回投げたところ、1の目が35回出た。このサイコロは1の目が出やすいような歪みがあると判断してもよいか。有意水準1%で検定しなさい。
これで統計学の仮説検定の問題として、確率を使って判断ができる問題になりました。
p値
帰無仮説の主張を正しいと仮定したときに、現在観測されていること以上に帰無仮説から外れていることが起こる確率をp値といいます。この問題の場合は「1の目が35回以上出る確率」がそれにあたります。「p値が有意水準の1%よりも低ければ帰無仮説を棄却します」という取り決めをしているというのが上の問題の「有意水準1%で検定する」の意味です。
仮説検定へ
それでは、サイコロを100回投げて1の目が35回以上出る確率を求めてみましょう。前回に引き続き、Pythonを利用して調べてみます。scipy.statsモジュールのbinom_testメソッドを利用します。
from scipy import stats
stats.binom_test(35, 100, 1/6, alternative="greater")
これを実行すると、次の値が出力されます。
7.025087033741793e-06 (約 0.0007%)
これは明らかに有意水準の1%より低い確率ですので、取り決めに従って帰無仮説を棄却します。従って、対立仮説である「1の目が出やすいような歪みがある」が正しいと判断できるという結論になりました。
以上が仮説検定の基本的な考え方です。
検定における誤り
仮説検定により、「1の目が出やすいような歪みがある」と判断をしましたが、これは当然ながら低い確率で誤っている可能性もあります。たまたま約0.0007%の確率であることが実際に起きただけということも考えられるからです。このように帰無仮説が正しいにもかかわらず誤って棄却してしまうことを第1種の誤りといいます。有意水準はこの誤りを犯す確率をどこまで許容できるかというのに他なりません。
それでは、有意水準が低いほど正確な判断ができるのでしょうか。それは違います。有意水準が低いと、帰無仮説が誤っているのにも関わらず、棄却できないという誤りを犯してしまう確率が高まります。この誤りを第2種の誤りといいます。
このように第1種の誤りと第2種の誤りはトレードオフの関係にあります。
これはよく火災報知器に例えられます。「誤作動もあるが、火事の時にはほとんど鳴る」と「誤作動は少ないが、火事の時に鳴らないこともある」のバランスをとるようなものです。判断したい事柄によって適切な有意水準を設定するというのが求められるというわけです。
まとめ
前回と今回の記事では、数学Bで確率変数や確率分布を本格的に学ぶ前に情報Iの授業で仮説検定の考え方を初めて学ぶことを想定してまとめてみました。ここは具体的な例を通して直観的に捉えられるような工夫が求められるところだと思われます。前回の記事で行ったように、Pythonを使ってサイコロを100回投げるシミュレーションを行ったり、確率分布を表すグラフを描いたりしながらイメージをつかんでいくことは意義があると思われます。
考え方自体がきちんとつかめれば、あとはscipy.statsモジュールのbinom_testメソッドを使ったコード1行でp値を容易に求めることができ、判断をすることができます。これはコンピュータを利活用することの良さでもあります。一方で、何をコンピュータに計算をさせればよいのか、コンピュータが算出した値をどのように解釈すればよいのかという部分が私たちに正に求められていることも併せて学びたいところです。
今回の内容は以上になります。p値の話をしていたら、何だか桃が食べたくなってきました。
・・・。
最後までお読みいただき、ありがとうございました!