LOGNORM.INV функция Excel в Python Scipy - PullRequest
0 голосов
/ 26 апреля 2019

Мне нужно реализовать нижеприведенную функцию Excel в Python, и мне нужно создать 10 тыс. Таких вычислений. Как я могу реализовать эту логику в scipy? Могу ли я использовать lognormal api scipy для получения логнормального обратного?

B10 - Probability event will happen C10 - Lower bound D10 - Upper bound

=IF(RAND()<B10,LOGNORM.INV(RAND(),(LN(D10)+LN(C10))/2, (LN(D10)-LN(C10))/3.29),0)

1 Ответ

0 голосов
/ 26 апреля 2019

Параметризация SciPy lognorm реализация логарифмического нормального распределения отличается от реализации функций LOGNORM в Excel. Excel использует среднее значение и стандартное отклонение основного нормального распределения. Чтобы преобразовать их в форму SciPy s, местоположение loc и масштаб scale, используйте:

s = standard_dev
loc = 0
scale = np.exp(mean)

LOGNORM.INV(p, mean, standard_dev) вычисляет обратное значение CDF. Соответствующий метод объекта lognorm SciPy - ppf ( функция процентной точки ; прокрутите страницу вниз, чтобы найти обсуждение функции процентной точки).

Таким образом, чтобы вычислить эквивалент LOGNORM.INV(p, mean, standard_dev), вы можете использовать

lognorm.ppf(p, standard_dev, loc=0, scale=np.exp(mean))

См. Рассчитайте Scipy LOGNORM.CDF () и получите тот же ответ, что и в MS Excel LOGNORM.DIST для аналогичного вопроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...