有没有相当于R的qchisq函数的python?

时间:2013-08-06 01:13:46

标签: python r statistics scipy chi-squared

R qchisq函数将p值和自由度数转换为相应的卡方值。是否有一个具有等效的Python库?

我在没有找到任何东西的情况下环顾了SciPy。

2 个答案:

答案 0 :(得分:9)

它是scipy.stats.chi2.ppf - 百分点函数(cdf的倒数)。 例如,在R:

> qchisq(0.05,5)
[1] 1.145476
Python中的

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

答案 1 :(得分:0)

正如@VadimKhotilovich在答案中指出的那样,你可以使用scipy.stats.chi2.ppf。您也可以使用chdtri中的scipy.special函数,但使用1-p作为参数。

R:

> 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