Python 如何计算抛硬币的p值?

Python 如何计算抛硬币的p值?,python,statistics,p-value,Python,Statistics,P Value,我试图计算以下抛硬币示例的p值: n = 5 h = 4 # out of 5 toss 4 are head # calculate pvalue using equal or more extreme cases pval = P(4H1T) + P(4T1H) + P(5H) + P(5T) = 5/32 + 5/32 + 1/32 + 1/32 = 12/32 = 0.375 但当我尝试标准方法时: from scipy import s

我试图计算以下抛硬币示例的p值:

n = 5
h = 4  # out of 5 toss 4 are head

# calculate pvalue using equal or more extreme cases
pval = P(4H1T) + P(4T1H) + P(5H) + P(5T)
     = 5/32    + 5/32    + 1/32  + 1/32
     = 12/32
     = 0.375
但当我尝试标准方法时:

from scipy import stats

phat = h / n
p0 = 0.5  # for unbiased coin
q0 = 1 - p0
z = (phat - p0) / sqrt(p0q0/n)      

pval = 1 - stats.norm.cdf(z)
我得到:

0.08985624743949994.
问题1 如何使用pythonscipystats(answer=0.375)获得类似的结果

工具书类 在这个statquest视频中,作者解释了如何使用相等或更多的极值获得pvalue,我们得到了0.375

但是在这里

使用给出的公式,我们得到另一个答案

问题2
哪种方法好,我们可以比较pvalue和alpha?

z值是正态分布的标准值,而不是概率。此外,连续分布中精确值的概率有点棘手。这种情况听起来最适合二项分布

from scipy.stats import binom
binom.pmf(4,5,0.5)
哪些产出:

0.15625

z值是正态分布的标准值,不是概率。此外,连续分布中精确值的概率有点棘手。这种情况听起来最适合二项分布

from scipy.stats import binom
binom.pmf(4,5,0.5)
哪些产出:

0.15625

这是一个二项分布的情况。遵循
scipy.stats.binom\u测试中的官方示例:

将numpy导入为np
从scipy导入统计信息
α=0.05
pval=stats.binom_检验(4,n=5,p=0.5,可选='双面')
打印('pvalue=',pval)
如果pval
输出
这是一个二项分布的情况。遵循
scipy.stats.binom\u测试中的官方示例:

将numpy导入为np
从scipy导入统计信息
α=0.05
pval=stats.binom_检验(4,n=5,p=0.5,可选='双面')
打印('pvalue=',pval)
如果pval
输出