Python的Beta版本分布是什么?

时间:2017-04-03 13:01:34

标签: python excel scipy beta-distribution

Excel中的Beta版本的Python等价物是什么? 在Excel中,公式为:

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

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

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

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

2 个答案:

答案 0 :(得分:4)

你可以看到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) 

答案 1 :(得分:0)

对于带有签名的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