Что такое Python-эквивалент бета-версии Excel?

Что такое Python-эквивалент бета-распределения в Excel? В Excel формула выглядит так:

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

Это дает бета-функцию плотности вероятности для данных параметров, и мы получаем результат в виде некоторого десятичного значения.

Но ссылка на Python SciPy не дает параметры функции и ее определение в форме, аналогичной Excel.

Я не понимаю, как это сделать в SciPy и правильно передать параметр.


person suraj    schedule 03.04.2017    source источник


Ответы (2)


как вы можете видеть здесь, вероятность Функция плотности бета-распределения в scipy имеет те же три параметра, что и excel (документы Excel).

ALPHA эквивалентен a и представляет собой параметр распределения.

BETA эквивалентен b и представляет собой параметр распределения.

X эквивалентно x и значению, при котором должно оцениваться распределение.

Погода или нет, параметр Cumulativ в excel равен 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) 
person Chris    schedule 03.04.2017

Для функции 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 как длину интервала.

Например, документация для 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
person Warren Weckesser    schedule 03.04.2017