首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用scipy.stats.rv_continuous?

如何使用scipy.stats.rv_continuous?
EN

Stack Overflow用户
提问于 2014-03-17 13:52:52
回答 1查看 10K关注 0票数 11

我一直在寻找如何使用rv_continuous的好教程或示例,但一直找不到。

我读到:

http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.rv_continuous.html#scipy.stats.rv_continuous

但它实际上并没有那么有帮助(而且它缺乏任何如何使用它的示例)。

我想要做的事情的一个例子是,指定任何概率分布,然后能够调用fit,然后简单地拥有我想要的pdf,并且能够调用expect并获得所需的期望值。

到目前为止,我所理解的是,要创建任何可能的发行版,我们需要为它创建我们自己的类,然后是rv_continuous的子类。然后,通过指定自定义的_pdf_cdf,我们应该能够简单地使用rv_continuous为我们提供的所有方法。像expectfit现在应该可以使用了。

然而,对我来说真正神秘的是,如果我们不明确地告诉rv_continuous,指定概率分布的参数是什么,它真的能够正确地执行所有这些方法吗?仅仅使用_pdf或_cdf,它是怎么做到的呢?

或者我只是误解了它是如何工作的?

此外,如果你能提供一个简单的例子,说明它是如何工作的,以及如何使用expect和/或fit,那就太棒了!或者一个更好的教程或链接会更酷。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-03-17 23:00:52

这里有一个教程:http://docs.scipy.org/doc/scipy/reference/tutorial/stats.html

基本上,rv_continuous是用来实现子类化的。如果你需要一个没有在scipy.stats中定义的发行版(超过70个),可以使用它。

它是如何工作的。简而言之,它使用泛型代码路径:如果您的子类定义了_pdf而没有定义_logpdf,那么它将继承

代码语言:javascript
复制
def _logpdf(self, x, *args):
    return log(self._pdf(x, *args))

还有一堆类似的方法(有关详细信息,请参阅https://github.com/scipy/scipy/blob/master/scipy/stats/_distn_infrastructure.py )。

Re参数。你可能指的是形状参数,是吗?它们是通过inspect _pdf_cdf的签名自动推断出来的,参见https://github.com/scipy/scipy/blob/master/scipy/stats/_distn_infrastructure.py#L617。如果您想绕过检查,请将shapes参数提供给实例的构造函数:

代码语言:javascript
复制
class Mydist(stats.rv_continuous):
    def _pdf(self, x, a, b, c, d):
       return 42
mydist = Mydist(shapes='a, b, c, d')

严格地说,这只适用于scipy 0.13及更高版本。早期版本使用不同的机制,需要shapes属性。

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

https://stackoverflow.com/questions/22447797

复制
相关文章

相似问题

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