Chi2cdf 上 python
Chi2cdf upper python
所以我将 Matlab 翻译成 python 代码并遇到了这一行
Pv = chi2cdf(Devk,Md,'upper');
其中 Devk 是 3D 矩阵,Md 是 df=10。
我在 Python 中寻找等效项。
我发现了这个:
from scipy.stats import chi2
Pv = chi2.cdf(Devk,Md)
然而,这并没有给出类似的结果,我猜是因为 "upper" 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)
因为根据 documentation,生存函数 sf()
(也定义为 1 - cdf()
)有时更准确。
所以我将 Matlab 翻译成 python 代码并遇到了这一行
Pv = chi2cdf(Devk,Md,'upper');
其中 Devk 是 3D 矩阵,Md 是 df=10。
我在 Python 中寻找等效项。 我发现了这个:
from scipy.stats import chi2
Pv = chi2.cdf(Devk,Md)
然而,这并没有给出类似的结果,我猜是因为 "upper" 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)
因为根据 documentation,生存函数 sf()
(也定义为 1 - cdf()
)有时更准确。