Python で二項テストを実行する方法
二項検定では、サンプルの割合と仮説の割合を比較します。
たとえば、6 面体のサイコロがあるとします。 12 回投げると、「3」という数字が 1/6 の確率で出現すると予想され、12 * (1/6) = 2 回となります。
実際に「3」という数字が 4 回出現した場合、これはサイコロの目が「3」という数字に有利に偏っているという証拠でしょうか?この質問に答えるために二項検定を実行できます。
Python では、scipy.stats ライブラリのbinom_test() 関数を使用して二項テストを実行できます。この関数は次の構文を使用します。
binom_test(x, n=なし、p=0.5、alternative=’2 つの顔’)
金:
- x: 「成功」の数
- n:試行の総数
- p:各試行の成功確率
- 代替:対立仮説。デフォルトは「両面」ですが、「より高い」または「より少ない」を指定することもできます。
この関数は検定の p 値を返します。次の構文を使用してこの関数をロードできます。
from scipy.stats import binom_test
次の例は、Python で二項テストを実行する方法を示しています。
例 1: 6 面体のサイコロを 24 回投げ、ちょうど 6 回「3」の数字に当たります。二項テストを実行して、サイコロが数字「3」に偏っているかどうかを判断します。
私たちの検定の帰無仮説と対立仮説は次のとおりです。
H 0 : π ≤ 1/6 (サイコロは数字「3」に偏りません)
H A : π > 1/6
※πは人口比率を表す記号です。
Python に次の数式を入力します。
binom_test(x= 6 , n= 24 , p= 1/6 , alternative=' greater ') 0.1995295129479586
この p 値 (0.1995) は 0.05 未満ではないため、帰無仮説を棄却できません。サイコロが数字の「3」に偏っていると言える十分な証拠はありません。
例 2: コインを 30 回投げると、ちょうど 19 回表が出ます。二項テストを実行して、コインが表に偏っているかどうかを判断します。
私たちの検定の帰無仮説と対立仮説は次のとおりです。
H 0 : π ≤ 1/2 (コインが表に偏らない)
H A : π > 1/2
Python に次の数式を入力します。
binom_test(x= 19 , n= 30 , p= 1/2 , alternative=' greater ') 0.10024421103298661
この p 値 (0.10024) は 0.05 未満ではないため、帰無仮説を棄却できません。コインが表に有利に偏っていると言える十分な証拠はありません。
例 3: ストアは 80% の効率でウィジェットを作成します。彼らは効率の向上を期待して新しいシステムを導入しています。最近の制作物から 50 個のウィジェットをランダムに選択し、そのうち 47 個が効果的であることがわかりました。二項テストを実行して、新しいシステムが効率の向上につながるかどうかを判断します。
私たちの検定の帰無仮説と対立仮説は次のとおりです。
H 0 : π ≤ 0.80 (新しいシステムは効率の向上につながりません)
H A : π > 0.80
Python に次の数式を入力します。
binom_test(x= 47 , n= 50 , p= 0.8 , alternative=' greater ') 0.005656361012155314
この p 値 (0.00565) は 0.05 未満であるため、帰無仮説は棄却されます。新しいシステムにより効率が向上すると言える十分な証拠があります。