from math import exp
from scipy import stats
def lognorm_cdf(x, mu, sigma):
shape = sigma
loc = 0
scale = exp(mu)
return stats.lognorm.cdf(x, shape, loc, scale)
x = 25
mu = 2.0785
sigma = 1.744
p = lognorm_cdf(x, mu, sigma) #yields the expected 0.74341
Подобно Excel и R, функция lognorm_cdf , приведенная выше, параметризует CDF для нормального логарифмического распределения с использованием mu и sigma .
Хотя SciPy использует параметры shape , loc и scale для характеристики своих вероятностных распределений, для нормального логарифмического распределения мне кажется, что это немного легче представить эти параметры на уровне переменных, а не на уровне распределения. Вот что я имею в виду ...
Логнормальная переменная X связана с нормальной переменной Z следующим образом:
X = exp(mu + sigma * Z) #Equation 1
что совпадает с:
X = exp(mu) * exp(Z)**sigma #Equation 2
Это может быть украдкой переписано следующим образом:
X = exp(mu) * exp(Z-Z0)**sigma #Equation 3
, где Z0 = 0. Это уравнение имеет вид:
f(x) = a * ( (x-x0) ** b ) #Equation 4
Если вы можете визуализировать уравнения в своей голове, должно быть ясно, что параметры масштаба, формы и местоположения в уравнении 4: a , b и x0 соответственно. Это означает, что в уравнении 3 параметры масштаба, формы и местоположения: exp (mu) , sigma и ноль, соответственно.
Если вы не можете визуализировать это очень четко, давайте перепишем уравнение 2 как функцию:
f(Z) = exp(mu) * exp(Z)**sigma #(same as Equation 2)
, а затем посмотрите на эффекты mu и sigma на f (Z) . На рисунке ниже содержится сигма константа и изменяется му . Вы должны увидеть, что mu по вертикали f (Z) . Однако это происходит нелинейно; эффект изменения mu от 0 до 1 меньше, чем эффект изменения mu от 1 до 2. Из уравнения 2 мы видим, что exp (mu) на самом деле линейный коэффициент масштабирования. Следовательно, «масштаб» SciPy составляет exp (mu) .
Следующая цифра содержит mu константу и изменяется sigma . Вы должны увидеть, что форма f (Z) меняется. То есть f (Z) имеет постоянное значение, когда Z = 0 и sigma влияет на то, как быстро f (Z) изгибается от горизонтальной оси. Следовательно, «форма» SciPy сигма .