首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于scipy.stats的pdf估计

基于scipy.stats的pdf估计
EN

Stack Overflow用户
提问于 2014-02-24 14:48:20
回答 2查看 1.2K关注 0票数 1

假设我计算了Beta(4,8)的密度:

代码语言:javascript
复制
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?

代码语言:javascript
复制
> my_pdf.sum()
199.00000139548044
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-24 15:04:32

pdf上的积分是1。您可以通过使用scipy中的数值积分来看到这一点。

代码语言:javascript
复制
>>> from scipy.integrate import quad
>>> quad(rv.pdf, 0, 1)
(0.9999999999999999, 1.1102230246251564e-14)

或者编写自己的临时集成(在本例中使用梯形规则)

代码语言:javascript
复制
>>> 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
票数 2
EN

Stack Overflow用户

发布于 2014-02-24 15:03:55

rv.pdfx的每个值处返回pdf的值。它并不等于一个,因为你实际上没有计算一个积分。如果您想这样做,您需要除以您的和的间隔数,即len(x) - 1,即199。这会给你一个非常接近1的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21991056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档