Jos*_*sef 42

我喜欢正态分布的生存函数(上尾概率)好一点,因为函数名称更具信息性:

p_values = scipy.stats.norm.sf(abs(z_scores)) #one-sided

p_values = scipy.stats.norm.sf(abs(z_scores))*2 #twosided
Run Code Online (Sandbox Code Playgroud)

正态分布"norm"是scipy.stats中大约90个发行版之一

norm.sf也调用scipy.special中的相应函数,如gotgenes示例中所示

生存函数的小优势,sf:对于接近1的分位数,数值精度应该比使用cdf更好


Myl*_*ker 26

我认为累积分布函数(cdf)比幸存者函数更受欢迎.幸存者函数被定义为1-cdf,并且可能不正确地传达语言模型用于方向百分位数的假设.此外,百分点函数(ppf)是cdf的倒数,这非常方便.

>>> import scipy.stats as st
>>> st.norm.ppf(.95)
1.6448536269514722
>>> st.norm.cdf(1.64)
0.94949741652589625
Run Code Online (Sandbox Code Playgroud)


got*_*nes 10

啊哈!我找到了:scipy.special.ndtr!这也似乎也在下面scipy.stats.stats.zprob(这只是一个指针ndtr).

具体地,给定一维numpy.array实例z_scores,可以获得p值

p_values = 1 - scipy.special.ndtr(z_scores)
Run Code Online (Sandbox Code Playgroud)

或者

p_values = scipy.special.ndtr(-z_scores)
Run Code Online (Sandbox Code Playgroud)


Xav*_*hot 5

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

它可用于应用逆累积分布函数inv_cdf,也称为分位数函数百分点函数)和累积分布函数cdf):

NormalDist().inv_cdf(0.95)
# 1.6448536269514715
NormalDist().cdf(1.64)
# 0.9494974165258963
Run Code Online (Sandbox Code Playgroud)