首页 > 解决方案 > 二项分布:如何计算Alpha,使概率被置信区间覆盖?

问题描述

所以,我有代码,计算置信区间的界限

import statsmodels.api as sm
from statsmodels.stats.proportion import proportion_confint   
    
def bin_conf (k, n, a):
    alpha, count, nobs = a, k, n
    return proportion_confint(count, nobs, alpha, method='normal')

bin_conf(75, 300, 0.05)
>>> (0.20100090038649865, 0.29899909961350135)

但是我需要计算 alpha,以便已经定义的概率也被已经定义的置信区间覆盖?

例如:试验规模 (n) = 500。成功试验 = 200。CI = [0,35 ; 0,45]。阿尔法 = ?

'statsmodels' 或任何其他 Python 库有解决方案吗?

标签: pythonstatisticsprobabilityconfidence-interval

解决方案


statsmodels 没有为此提供帮助函数,因为它不是一个常见的用例。

但是,基于正态分布的置信区间可以很容易地反转。置信区间的宽度是临界值乘以平均值的标准差的两倍。

from scipy import stats

ci = [0.35, 0.45]
count, nobs = 200, 500

p = count / nobs
std = np.sqrt(p * (1 - p) / nobs)
critval = (ci[1] - ci[0]) / std / 2
alpha = stats.norm.sf(critval) * 2  # two-sided
alpha

0.02247887336612522

检查它是否与“正常”的 ratio_confint 相同

proportion_confint(count, nobs, alpha, method='normal')
(0.35, 0.45000000000000007)

stats.norm通过替换stats.t和使用适当的自由度,同样可以用于基于 t 分布的置信区间


推荐阅读