Python是否有类似于R中qchisq函数的等价函数?

10

R语言的qchisq函数可以将p值和自由度转换为相应的卡方值。是否有Python库具有相同功能?

我已在SciPy中查找,但未找到相应的函数。


@mnel:那个问题涉及从卡方值计算p值。我正试图朝另一个方向前进。 - jveldridge
确实。撤销关闭投票(应该更仔细地阅读!) - mnel
https://dev59.com/8Wgt5IYBdhLWcg3w5xg_ - IRTFM
@Dwin:那个问题涉及从卡方值计算p值。我正试图朝另一个方向前进。 - jveldridge
3个回答

23

这是 scipy.stats.chi2.ppf - 百分点函数(累积分布函数的反函数)。

例如,在R中:

> qchisq(0.05,5)
[1] 1.145476

在 Python 中:

In [8]: scipy.stats.chi2.ppf(0.05, 5)
Out[8]: 1.1454762260617695

3
如@VadimKhotilovich在他的回答中所指出的,您可以使用scipy.stats.chi2.ppf。您还可以使用scipy.special中的chdtri函数,但将1-p用作参数。
> qchisq(0.01, 7)
[1] 1.239042
> qchisq(0.05, 7)
[1] 2.16735

scipy:

In [16]: from scipy.special import chdtri

In [17]: chdtri(7, 1 - 0.01)
Out[17]: 1.2390423055679316

In [18]: chdtri(7, 1 - 0.05)
Out[18]: 2.1673499092980579

使用chdtri而不是scipy.stats.chi2.ppf的唯一优势在于它更快:

In [30]: from scipy.stats import chi2

In [31]: %timeit chi2.ppf(0.05, 7)
10000 loops, best of 3: 135 us per loop

In [32]: %timeit chdtri(7, 1 - 0.05)
100000 loops, best of 3: 3.67 us per loop

0

同样在R

qchisq(0.05, 9, lower.tail=FALSE)

Python中则为

chi2.ppf(q= 0.95, df = 9) #q = (1-0.05)


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