我如何计算 p值
的 z分数
,反之亦然?
例如,如果我的 p 值为 0.95
,则应返回 1.96
。
我在 scipy 中看到了一些函数,但它们仅对数组运行 z 测试。
我可以访问 numpy、statsmodel、pandas 和 scipy(我想)。
我如何计算 p值
的 z分数
,反之亦然?
例如,如果我的 p 值为 0.95
,则应返回 1.96
。
我在 scipy 中看到了一些函数,但它们仅对数组运行 z 测试。
我可以访问 numpy、statsmodel、pandas 和 scipy(我想)。
从Python 3.8开始,标准库提供了NormalDist
对象作为statistics
模块的一部分。
它可用于获取正态曲线下x%面积(忽略两个尾部)所对应的zscore
。
我们可以在标准正态分布上使用inv_cdf
(反累积分布函数)和cdf
(累积分布函数)相互转换:
from statistics import NormalDist
NormalDist().inv_cdf((1 + 0.95) / 2.)
# 1.9599639845400536
NormalDist().cdf(1.9599639845400536) * 2 - 1
# 0.95
在此维基百科部分可找到“(1 + 0.95) / 2.”公式的解释。
Python百分点函数被用来计算特定置信水平下的临界值:
= stats.norm.ppf(1 - alpha) (使用alpha=alpha/2适用于双侧)
= stats.t.ppf(alpha/numOfTails, ddof)
import numpy as np
from scipy import stats
# alpha to critical
alpha = 0.05
n_sided = 2 # 2-sided test
z_crit = stats.norm.ppf(1-alpha/n_sided)
print(z_crit) # 1.959963984540054
# critical to alpha
alpha = stats.norm.sf(z_crit) * n_sided
print(alpha) # 0.05
import numpy as np
from scipy.stats import norm
norm(0, 1).cdf(-np.absolute(zscore)) * 2
参考资料:https://mathbitsnotebook.com/Algebra2/Statistics/STzScores.html
st.norm.ppf(1-(1-0.95)/2) == 1.959963984540054
- 这是基本统计知识,但我只是想让它更加明确。 - R.M.