Up

2項分布の信頼区間

 

2項分布

のパラメータについて、信頼係数の信頼区間を求める。

N回の試行においてk回当該の事象が生起したときの信頼区間は、次式

で与えられる(岡本、1998pp. 176-179)。

 上記の方法で与えられる信頼区間と確率との関係は、「芝・南風原(1990)、pp. 90-92」で論じられている。

 上記の信頼区間を算出するプログラムをリストのように用意した。圧縮ファイルprgfile.zipとして用意したので、ダウンロード展開すれば自由に利用できる。

リスト1のスクリプトを実行すると、Nとk、および信頼区間のaの値が求められるので、以下のように入力する。

 

N = 20

k = 8

a = 0.05

 

aの値まで入力すると計算が始まり、以下のように信頼区間が出力される。

 

95.0%信頼区間 = [0.19119, 0.63946]

 

 

リスト1 2項分布の信頼区間

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)「行動科学における統計解析法」東京大学出版会

 

Up