你如何使用scipy.stats.rv_continuous?

Pin*_*hio 9 python numpy scipy

我一直在寻找一个很好的教程或如何使用的例子,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为我们提供的每个方法.喜欢expect并且fit应该现在可用.

然而,对我来说真正神秘的是,如果我们没有明确告诉rv_continuous指定概率分布的参数是什么,它是否真的能够正确地完成所有这些方法?它甚至只用_pdf或_cdf来做到这一点?

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

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

提前致谢.

ev-*_*-br 8

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

基本上,rv_continuous是为子类化.如果您需要未在scipy.stats中定义的分发(其中有超过70个),请使用它.

重新如何运作.简而言之,它使用通用代码路径:如果您的子类定义_pdf和未定义_logpdf,则它继承

def _logpdf(self, x, *args):
    return log(self._pdf(x, *args))
Run Code Online (Sandbox Code Playgroud)

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

Re参数.你可能意味着形状参数,对吗?它们是通过or inspect的签名自动推断出来的,请参阅https://github.com/scipy/scipy/blob/master/scipy/stats/_distn_infrastructure.py#L617.如果要绕过检查,请为实例的构造函数提供参数:_pdf_cdfshapes

class Mydist(stats.rv_continuous):
    def _pdf(self, x, a, b, c, d):
       return 42
mydist = Mydist(shapes='a, b, c, d')
Run Code Online (Sandbox Code Playgroud)

[严格来说,这仅适用于scipy 0.13及以上.早期版本使用不同的机制并需要该shapes属性.]

  • 原则上,是的.假设你真的想要它,而不仅仅是为了熵或你所追求的任何期望值的积分. (3认同)
  • 因此,例如,如果我使用KDE(内核密度估计)拟合一些数据并且我想计算其预期值或熵或其他东西,我是否只创建一个rv_continuous类,将my_kde_pdf作为_pdf提供,然后只调用方法expect会产生相应的期望吗? (2认同)