pandas中等价于R的qnorm()函数是什么?

5
我正在将一些代码从R转移到Anaconda Python。R代码使用的是qnorm,文档中描述它是“平均值为mean,标准差为sd的正态分布的分位数函数”。
调用和参数如下:
   qnorm(p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
   p           vector of probabilities.
   mean        vector of means.
   sd          vector of standard deviations.
   log.p       logical; if TRUE, probabilities p are given as log(p).
   lower.tail  logical; if TRUE (default), probabilities are
                            P[X≤x] otherwise, P[X].

我在pandas.Series中没有看到相应的内容。我是不是漏看了它,它是否在另一个对象上,或者在其他库中有相应的内容?

2个回答

12
很多类似的功能可以在scipy.stats中找到。在这种情况下,您需要查找scipy.stats.norm.ppfqnorm(p, mean = 0, sd = 1)相当于scipy.stats.norm.ppf(q, loc=0, scale=1)
import scipy.stats as st

>>> st.norm.ppf([0.01, 0.99])
array([-2.32634787,  2.32634787])

>>> st.norm.ppf([0.01, 0.99], loc=10, scale=0.1)
array([  9.76736521,  10.23263479])

1
我该如何获得 lower.tail=FALSE?谢谢 :) - The Unfun Cat
@TheUnfunCat 我猜你的意思是 st.norm.ppf(0.99) - miradulo
不,R有一个名为lower.tail的参数,用于qnorm函数,这会使结果略有不同。对于我第一次提问时的不准确表示,我感到抱歉 :) - The Unfun Cat
哦等等,qnorm(0.1)qnorm(.9, lower.tail=FALSE)是一样的。 - The Unfun Cat
没问题 - 是的,下尾参数只是指定您是否正在获取左侧或右侧概率。 - miradulo

1

为了扩展@miradulo的答案。如果你想得到qnorm(lower.tail=FALSE),你可以乘以-1:

在R中:

qnorm(0.8, lower.tail = F)
-0.8416212

在Python中:
from scipy.stats import norm

norm.ppf(0.8) * -1
-0.8416212

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接