假设我计算了Beta(4,8)的密度:
from scipy.stats import beta
rv = beta(4, 8)
x = np.linspace(start=0, stop=1, num=200)
my_pdf = rv.pdf(x)为什么pdf的积分不等于1?
> my_pdf.sum()
199.00000139548044发布于 2014-02-24 15:04:32
pdf上的积分是1。您可以通过使用scipy中的数值积分来看到这一点。
>>> from scipy.integrate import quad
>>> quad(rv.pdf, 0, 1)
(0.9999999999999999, 1.1102230246251564e-14)或者编写自己的临时集成(在本例中使用梯形规则)
>>> x = numpy.linspace(start=0, stop=1, num=201)
>>> (0.5 * rv.pdf(x[0]) + rv.pdf(x[1:-1]).sum() + 0.5 * rv.pdf(x[-1])) / 200.0
1.0000000068732813发布于 2014-02-24 15:03:55
rv.pdf在x的每个值处返回pdf的值。它并不等于一个,因为你实际上没有计算一个积分。如果您想这样做,您需要除以您的和的间隔数,即len(x) - 1,即199。这会给你一个非常接近1的结果。
https://stackoverflow.com/questions/21991056
复制相似问题