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=2
、A3=8
、A4=10
、A5=1
和 A6=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 等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章
华为OD机试真题 Python 实现Linux发行版的数量2022.11 Q4 新题
华为OD机试真题 JS 实现Linux发行版的数量2023 Q1 | 100分
华为OD机试真题 Java 实现Linux发行版的数量2022.11 Q4 新题