Chi2cdf上层python

Chi2cdf上层python,python,matlab,chi-squared,cdf,Python,Matlab,Chi Squared,Cdf,所以我把Matlab翻译成python代码,遇到了这一行 Pv = chi2cdf(Devk,Md,'upper'); 其中,Devk是一个三维矩阵,Md是df=10 我在寻找Python中的等价物。 我发现: from scipy.stats import chi2 Pv = chi2.cdf(Devk,Md) 然而,这并没有给出类似的结果,我猜是因为Matlab的“上限”参数。有人知道如何在Python中实现这一点吗 有人要求制作一些玩具数据来说明问题: Matlab: Devk = [

所以我把Matlab翻译成python代码,遇到了这一行

Pv = chi2cdf(Devk,Md,'upper');
其中,Devk是一个三维矩阵,Md是df=10

我在寻找Python中的等价物。 我发现:

from scipy.stats import chi2
Pv = chi2.cdf(Devk,Md)
然而,这并没有给出类似的结果,我猜是因为Matlab的“上限”参数。有人知道如何在Python中实现这一点吗

有人要求制作一些玩具数据来说明问题:

Matlab:

Devk = [1,2,3,4,5]
Md = 10
Pv = chi2cdf(Devk,Md,'upper')
Pv =
0.9998    0.9963    0.9814    0.9473    0.8912
Python:

from scipy.stats import chi2
Devk = np.array([1,2,3,4,5])
Md = 10
Pv = chi2.cdf(Devk,Md)
Pv
Out[125]: array([0.00017212, 0.00365985, 0.01857594, 0.05265302, 0.10882198])

我认为以下观点是正确的:

chi2cdf(..., 'upper') == (1 .- chi2cdf(...))
因此,在Python代码中,您可能必须执行以下操作:

from scipy.stats import chi2

Pv = 1 - chi2.cdf(Devk, Md)
编辑: 更好地使用:

Pv = chi2.sf(Devk, Md)

因为,根据,生存函数
sf()
(也被定义为
1-cdf()
)有时更精确

我会把MATLAB和Python的输出添加到你的问题中,用于toy
Devk
Md
输入。Devk是一个非常大的矩阵,由500x8x8组成,其中的数字变化很大。但是对于Matlab和Python都是类似的。Md只是两者的数字10。好的,但是你能用玩具数据重现意外的行为吗?啊,注意并添加