如何解决如何计算抛硬币的p值?
我试图计算以下抛硬币示例的 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
如何使用 python scipy stats 得到类似的结果(答案 = 0.375)?
参考文献
在这个 statquest 视频中,作者解释了如何使用相等或更多的极值获得 pvalue,我们得到 0.375
但是在这里,
使用给定的公式,我们得到另一个答案。
问题 2
哪种方法好以便我们可以将 pvalue 与 alpha 进行比较?
解决方法
z 值是正态分布的标准化值,不是概率。此外,连续分布中精确值的概率有点棘手。这种情况听起来最适合二项式分布。
from scipy.stats import binom
binom.pmf(4,5,0.5)
输出:
0.15625
,
这是一个二项分布情况。按照 scipy.stats.binom_test
中的官方示例进行操作:
import numpy as np
from scipy import stats
alpha = 0.05
pval = stats.binom_test(4,n=5,p=0.5,alternative='two-sided')
print('pvalue = ',pval)
if pval< alpha:
print("We Reject the Null Hypothesis.")
else:
print("We Accept the Null Hypothesis.")
输出
pvalue = 0.375
We Accept the Null Hypothesis.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。