Excel 的 Beta 发行版的 Python 等价物是啥?

Posted

技术标签:

【中文标题】Excel 的 Beta 发行版的 Python 等价物是啥?【英文标题】:What is the Python equivalent of Excel's Beta distribution?Excel 的 Beta 发行版的 Python 等价物是什么? 【发布时间】:2017-08-28 08:42:34 【问题描述】:

什么是 Python 中与 Excel 中的 Beta 发行版等效的版本? 在 Excel 中,公式为:

=BETA.DIST(A2,A3,A4,FALSE,A5,A6).

这给出了给定参数的 Beta 概率密度函数, 我们得到一些十进制值的结果。

但Python SciPy reference does not give的函数参数及其定义形式与Excel类似。

我不知道如何在 SciPy 中执行此操作并正确传递参数。

【问题讨论】:

【参考方案1】:

如你所见here,scipy中beta分布的概率密度函数与excel(excel docs)的三个参数完全相同。

ALPHA等价于a,代表分布的一个参数。

BETA 等价于b,表示分布的一个参数。

X 等价于 x 和应评估分布的值。

excel中Cumulativ参数是否为True,在scipy中调用不同的函数来表示。如果你想要累积分布 (Cumulativ = True),你只需调用 myBeta.cdf(<myParams>),如果你想要概率密度函数 (Cumulativ = False),你调用 myBeta.pdf(<myParams>)。 这意味着:

BETA.DIST(X,Alpha,Beta,TRUE) <=>
scipy.stats.beta.cdf(x,a,b)

BETA.DIST(X,Alpha,Beta,FALSE) <=>
scipy.stats.beta.pdf(x,a,b) 

【讨论】:

【参考方案2】:

对于带有签名的 Excel BETA.DIST 函数

BETA.DIST(x,alpha,beta,cumulative,[A],[B])

cumulative = FALSE,使用函数scipy.stats.beta.pdf如下:

from scipy import stats
p = stats.beta.pdf(x, alpha, beta, loc=A, scale=B-A)

换句话说,将loc设置为支持区间[A,B]的下限,并将scale设置为区间的长度。

例如,documentation for BETA.DIST 包含示例

=BETA.DIST(A2,A3,A4,FALSE,A5,A6)

其中A2=2A3=8A4=10A5=1A6=3。该函数的值被报告为1.4837646。使用scipy对应的表达式为:

In [59]: from scipy import stats

In [60]: x = 2

In [61]: alpha = 8

In [62]: beta = 10

In [63]: a = 1

In [64]: b = 3

In [65]: stats.beta.pdf(x, alpha, beta, loc=a, scale=b-a)
Out[65]: 1.4837646484375009

对于cumulative=TRUE 的情况,使用函数scipy.stats.beta.cdf。上面给出的相同示例报告 PDF 的值为0.6854706。这是使用 scipy 的计算:

In [66]: stats.beta.cdf(x, alpha, beta, loc=a, scale=b-a)
Out[66]: 0.6854705810546875

【讨论】:

以上是关于Excel 的 Beta 发行版的 Python 等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中集成 beta 发行版

华为OD机试真题 Python 实现Linux发行版的数量2022.11 Q4 新题

华为OD机试真题 JS 实现Linux发行版的数量2023 Q1 | 100分

华为OD机试真题 Java 实现Linux发行版的数量2022.11 Q4 新题

华为OD机试真题 C++ 实现Linux发行版的数量2022.11 Q4 新题

Anaconda--科学计算的Python发行版