Z分数的概率,反之亦然


72

如何计算z scorea的p-value反之亦然?

例如,如果我的p值为0.95I ,我应该得到1.96回报。

我在scipy中看到了一些函数,但是它们仅在数组上运行z测试。

我可以访问numpy,statsmodel,pandas和scipy(我认为)。

Answers:


137
>>> import scipy.stats as st
>>> st.norm.ppf(.95)
1.6448536269514722
>>> st.norm.cdf(1.64)
0.94949741652589625

默认Python概率

正如其他用户指出的那样,Python默认会计算左/下尾概率。如果要确定包含95%分布的密度点,则必须采取另一种方法:

>>>st.norm.ppf(.975)
1.959963984540054
>>>st.norm.ppf(.025)
-1.960063984540054

两点之间的密度


29
对于像我这样的其他人,他对返回1.96的函数的请求感到困惑,但返回的答案为1.64,不同之处在于1.96是zscore,其中的zscore是数据的95%(忽略尾巴) ),但st.norm.ppf()给出了zscore,该zscore包含其下面95%的数据(仅忽略了上尾)。
RM

40
(续)如果您希望0.95等于1.96,则必须利用正态分布是对称的这一事实,将要忽略的量除以一半,以忽略上尾:st.norm.ppf(1-(1-0.95)/2) == 1.959963984540054-基本统计信息,是的,但是我只是想让它明确。
RM

1
谁能说出使用什么python代码绘制上述图表?
bobthebuilder

1
@bobthebuilder哇!该图表实际上是使用R(特别是pnormGC)的tigerstats包生成的。
迈尔斯·贝克

9

从开始Python 3.8,标准库将NormalDist对象作为statistics模块的一部分提供。

可以用来获取zscore法线下x%的区域所在(忽略两条尾巴)。

我们可以使用标准正态分布上的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)的说明。公式可以在此Wikipedia部分中找到。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.