在 Numpy 中评估(不是采样)Beta 分布

J.D*_*.D. 5 numpy probability-density

我正在尝试计算Beta(x; a, b)的许多特定值x,以a = 1, b = 25. numpy 中有一个 beta 函数,即numpy.random.beta(a, b). 但它从 beta 分布中采样,而不是评估 的特定值x

有什么快速的方法可以解决这个问题,而不必在 beta 的公式中编码?

Mad*_*ist 5

您很可能正在寻找scipy.stats.beta课程。这使您可以为特定的一对a, b 值创建分布:

dist = scipy.stats.beta(a, b)
Run Code Online (Sandbox Code Playgroud)

然后,您可以获取 PDF 并在任何位置进行评估x

dist.pdf(x)
Run Code Online (Sandbox Code Playgroud)

x可以是任何 numpy 数组,而不仅仅是标量。您可以以类似的方式评估累积分布:

dist.cdf(x)
Run Code Online (Sandbox Code Playgroud)

您甚至不需要创建实例对象。如果您想对函数进行一次评估,这尤其有用。在您的特定用例中,创建一个实例可能会更好:

scipy.stats.beta.pdf(x, a, b)
Run Code Online (Sandbox Code Playgroud)

这同样适用于 CDF。链接的文档显示了您可以使用分发对象执行的许多其他操作。

scipy.stats包含许多其他常见的连续分布,它们都遵循类似的界面。任何时候您有与基本统计相关的问题,都可以从 scipy 开始。