python - chi2cdf上python
问题描述
所以我将 Matlab 翻译成 python 代码并遇到了这一行
Pv = chi2cdf(Devk,Md,'upper');
其中 Devk 是 3D 矩阵,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()
)有时更准确。
推荐阅读
- python - 如何找到与值的相关性
- python - 如何在没有专用 .json URL 的情况下从网页中检索 JSON?
- drupal - 如何在没有特定模块参考的情况下在 Drupal 8 中记录错误
- regex - 正则表达式仅捕获每行的第一个时间戳
- java - 如何用 JAXB 替换编组中的 CCH(取消字符)
- r - lpSolve - 将函数优化为特定值 + 向量的 10%
- java - 比较两个列表中的元素
- javascript - Mcqs 使用 vue.js 和 vuetify 突出显示错误和正确的答案
- java - 关于 santuario (Java) 的示例或教程?
- python - 使用自动微分库计算任意张量的偏导数