我知道scipy.stats
中有一个名为chi2.isf
的函数。因此,我们可以通过调用具有书写自由度和显著性水平参数的函数来计算临界卡方。
示例:
from scipy.stats import chi2
print(chi2.isf(df=15, q=0.05))
输出:
24.99579013972863
然而,我想计算下面网站中描述的临界卡方值。
来源:https://www.danielsoper.com/statcalc/formulas.aspx?id=12
当我试图将公式转换为Python代码时,我编写了如下代码:
from numpy import e, inf
from scipy.integrate import quad
def lower_incomplete_gamma_function(s: float = .0, x: float = .0):
return quad(lambda t: (t ** (s - 1)) * (e ** (-t)), 0, x)[0]
def gamma_function(z: float = .0):
return quad(lambda t: (t ** (z - 1)) * (e ** (-t)), 0, inf)[0]
我想知道的是,如何将F(x; k)
转换为Python代码,然后才能找到临界卡方值?在最后一步之后,我应该遵循什么步骤?你能帮我吗?
提前谢谢。
问题是,实际上这不是一个chi2.isf
代码。参考scipy的文档,isf
是sf
的反转版本,可以表示为ppf(1-alpha)
,对它来说,这是一个反转的cdf
函数。cdf
可以被认为是较低的gamma,而在scipy中,较低的gamma已经包含了除以gamma,所以您的输出看起来很像cdf
,直到第14位。因此,为了计算临界卡方值,你应该使用倒置的下不完全伽马函数,比如:
CCD_ 11。