スポンサーリンク

【Python】母比率の検定

記事内に広告が含まれています。

Pythonを利用して、1標本の母比率の検定を行ってみます。

スポンサーリンク

母比率の検定

母集団からランダムにnのサンプルを抽出し、条件Aに該当するサンプルの数xの分布は二項分布B(n, p)と考えることができます。pは母集団における条件Aに該当する比率です。

条件Aは例えば、「車を所有している」、「選挙で投票した」など、該当、非該当のどちらかとなる条件です。

二項分布は正規分布で近似できるため、正規分布による検定を考えることができます。帰無仮説(p = p0)の下で、以下のzは近似的に標準正規分布に従います。

$$ z=\frac{\hat{p} – p_{0}}{\sqrt{p_{0}(1 – p_{0})/n}}$$

ただし

$$ \hat{p}=\frac{x}{n} $$

です。

スポンサーリンク

例題

全国の20代~60代の人の中からランダムに1000人抽出し、「海外に行ったことはありますか」という質問をしたところ535人が「行ったことがある」と答えました。

「全国の20代~60代の半数以上が海外に行ったことがある」といえるかどうか考えます。

帰無仮説p = 0.5の下で、有意水準5%で片側検定を行います。

Python実装

動作確認したpython、モジュールのバージョンは以下のとおりです。

python 3.6.0
scipy 1.2.0

以下のとおり実装することで、正規分布による検定が可能です。

from scipy import stats
import math

x = 535 #該当数
n = 1000 #標本サイズ
p = x/n  #標本比率
p0 = 0.5 #母比率

z_value = (p - p0) / math.sqrt(p0 * (1 - p0) / n)

alpha = 0.05 #有意水準

border = stats.norm.ppf(1 - alpha)
p_value = 1 - stats.norm.cdf(z_value)

print("検定統計量z値", ":", z_value)
print("境界値", ":", border)
print("p値", ":", p_value)

実行結果は以下のとおりです。

検定統計量z値 : 2.2135943621178678
境界値 : 1.6448536269514722
p値 : 0.013428347753762115

片側5%の検定においては、z値>境界値のため、帰無仮説が棄却され、「全国の20代~60代の半数以上が海外に行ったことがある」といえます。p値は1.34%という結果でした。

まとめ

正規分布による検定をPythonで行う場合は、検定統計量を計算する必要があるようですが、本記事の方法でできました。

スポンサーリンク
Python
著者SNS
タイトルとURLをコピーしました