2項分布の信頼区間
2項分布
のパラメータについて、信頼係数の信頼区間を求める。
N回の試行においてk回当該の事象が生起したときの信頼区間は、次式
で与えられる(岡本、1998、pp.
176-179)。
上記の方法で与えられる信頼区間と確率との関係は、「芝・南風原(1990)、pp. 90-92」で論じられている。
上記の信頼区間を算出するプログラムをリスト1のように用意した。圧縮ファイルprgfile.zipとして用意したので、ダウンロード展開すれば自由に利用できる。
リスト1のスクリプトを実行すると、Nとk、および信頼区間のaの値が求められるので、以下のように入力する。
N = 20
k = 8
a = 0.05
aの値まで入力すると計算が始まり、以下のように信頼区間が出力される。
95.0%信頼区間 = [0.19119, 0.63946]
import numpy
as np
import scipy.stats
as ss
import scipy.optimize
as so
class U_cum_bin():
def
__init__(self, N, k, a):
self.N = N
self.k = k
self.a = a
def f(self, p):
return ss.binom.cdf(self.k,
self.N, p) - self.a/2
def U_boundary(N,
k, a):
if k == N:
v =
1.0
else:
func = U_cum_bin(N, k, a).f
v = so.bisect(func, 0, 1)
return v
class L_cum_bin():
def
__init__(self, N, k, a):
self.N = N
self.k = k
self.a = a
def
f(self, p):
return 1.0 - ss.binom.cdf(self.k
- 1, self.N, p) - self.a/2
def L_boundary(N,
k, a):
if k == 0:
v =
0.0
else:
func = L_cum_bin(N, k, a).f
v = so.bisect(func, 0, 1)
return v
N = int(input('N
= '))
k = int(input('k
= '))
a = float(input('a = '))
Lb = L_boundary(N,
k, a)
Ub = U_boundary(N,
k, a)
print(f'{(1-a)*100}%信頼区間 = [{Lb:.5}, {Ub:.5}]')
参考文献
岡本安晴(1998)「Delphiで学ぶデータ分析法」CQ出版
芝 祐順・南風原朝和(1990)「行動科学における統計解析法」東京大学出版会