python - 二项分布:如何计算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 库有解决方案吗?
解决方案
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 分布的置信区间
推荐阅读
- javascript - backgridjs中的上下文菜单
- sql - Postgres:如何在日期范围内为用户分组状态
- php - 如何向 JavaScript 中的回调函数添加参数?
- javascript - TypeError:无法使用 Image-Slider 读取未定义的属性“classList”
- javascript - 使用 Stripe 运行订阅付款而不创建订阅
- go - x509 证书 (pkcs#7) 扩展:为什么 *.SF 与 *.p7b 不同?
- slack - 在 SLACK 中收听消息
- flutter - Flutter - 用于浮动反应的插件,如 Facebook
- html - 如何将它与 Flexbox 对齐?
- oracle - ORACLE 10G,我是 oracle 10g 的新手。如何在没有联合的情况下对查询进行语法并并排查看列