如何使用scipy.stats.rv_continuous?

2024-05-14 00:51:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在寻找如何使用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为我们提供的每个方法。Likeexpectfit现在应该可用。

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

或者我只是误解了它的工作原理?

另外,如果你能提供一个简单的例子来说明它是如何工作的,以及如何使用expect和/或fit,那将是非常棒的!或者也许一个更好的教程或链接会很酷。

提前谢谢。


Tags: 方法http示例docspdfstats教程scipy
2条回答

这里有一个教程: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))

以及一系列类似的方法(请参见https://github.com/scipy/scipy/blob/master/scipy/stats/_distn_infrastructure.py以获得精确的详细信息)。

重新设定参数。你可能是指形状参数吧?它们是通过inspect_pdf_cdf的签名自动推断的,请参见https://github.com/scipy/scipy/blob/master/scipy/stats/_distn_infrastructure.py#L617。 如果要绕过检查,请向实例的构造函数提供shapes参数:

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属性。]

相关问题 更多 >