【发布时间】:2021-07-21 21:49:57
【问题描述】:
我正在使用 scipy.stats,对于某些分布,我需要 CDF 达到给定值 x,我知道 PDF 可以大于 1,因为它们不是概率而是密度,因此即使特定值,它们也应该积分为 1更大,但 CDF 永远不应大于 1,并且在 scipy.stats 上运行 cdf 函数时,有时我会得到 2.89 之类的值,我完全确定我使用的是 cdf 而不是 pdf(这是我的第一个猜测),这个正在弄乱我的结果和算法,因为我需要累积概率,为什么 scipy.stats cdf 返回的值大于 1 和/或我应该如何着手修复它?
使用样本分布和参数重现问题的代码(但它也发生在其他人身上):
from scipy import stats
distribution = stats.gausshyper
params = [9.482986347673158, 16.65813644507513, -38.11083665959626, 16.08698932118982, -13.387170754433273, 18.352117022674125]
test_val = [-0.512720,1,1]
arg = params[:-2]
loc = params[-2]
scale = params[-1]
print("cdf:",distribution.cdf(test_val,*arg, loc=loc,scale=scale))
print("pdf:",distribution.pdf(test_val,*arg, loc=loc,scale=scale))
cdf: [2.68047481 7.2027761 7.2027761] pdf: [2.76857133 2.23996739 2.23996739]
【问题讨论】:
-
哪个分布,什么参数?请添加复制者
-
如果它是 scipy 中的错误,将它放在 scipy 项目的错误跟踪器上可能更合适。我不知道那可能在哪里。
标签: python scipy probability