母比率の差の検定
母比率の差の検定は、2つの独立した母集団の比率が等しいかどうかを検定するための手法です。
データ上の差が有意差(意味のある差)であるかを統計的に調べることができます。
例えば、ある治療法を受けたグループと受けていないグループの治療成功率の差が有意かどうかを調べる場合に使用されます。
具体的には、次のような仮説を検定します。
- 帰無仮説 𝐻0: 2つの母比率は等しい (𝑝1=𝑝2)
- 対立仮説 𝐻1: 2つの母比率は等しくない (𝑝1≠𝑝2)
この検定には、以下の手順を用います。
- 2つのサンプルの比率を計算する。
- 比率の差の標準誤差を計算する。
- Z検定統計量を計算する。
- p値を計算し、所定の有意水準と比較する。
Pythonでの実装
以下は、Pythonで母比率の差の検定を行うためのサンプルコードです。
statsmodels
ライブラリを使用します。
ライブラリのインストール
pip install statsmodels
サンプルコード
import numpy as np
import statsmodels.api as sm
# サンプルデータ
# グループ1:成功数とサンプルサイズ
success_a = 45
nobs_a = 100
# グループ2:成功数とサンプルサイズ
success_b = 30
nobs_b = 100
# 比率の差の検定
count = np.array([success_a, success_b])
nobs = np.array([nobs_a, nobs_b])
# z検定を実行
z_stat, p_value = sm.stats.proportions_ztest(count, nobs)
print(f"Z検定統計量: {z_stat}")
print(f"p値: {p_value}")
# 結果の解釈
alpha = 0.05
if p_value < alpha:
print("帰無仮説を棄却します。2つの母比率は有意に異なります。")
else:
print("帰無仮説を棄却できません。2つの母比率に有意な差はありません。")
コードの説明
success_a
とsuccess_b
はそれぞれのグループで成功した数です。nobs_a
とnobs_b
はそれぞれのグループのサンプルサイズです。np.array
を使って、成功数とサンプルサイズを配列に格納します。sm.stats.proportions_ztest
関数を使って、z検定を実行します。- 結果として得られるz検定統計量とp値を表示します。
- p値が有意水準(ここでは0.05)より小さい場合、帰無仮説を棄却し、2つの母比率が有意に異なると判断します。
実行結果
サンプルコードの実行結果は以下のとおりとなります。
Z検定統計量: 2.1908902300206647
p値: 0.02845973691631055
帰無仮説を棄却します。2つの母比率は有意に異なります。
サンプルコードの活用
記載したサンプルコードを使えば、簡単に2つの母比率の差の検定をPythonで実行できます。
サンプルコードの「成功数」は、アンケートに「はい」と答えた人数でも、WEBサイトにアクセスした人数でも、色々なデータに置き換えることができます。