Я пытаюсь получить результат lognormal с помощью Scipy. У меня уже есть Му и Сигма, поэтому мне не нужно делать никаких других подготовительных работ. Если мне нужно быть более конкретным (и я стараюсь быть с ограниченным знанием статистики), я бы сказал, что я ищу кумулятивную функцию (cdf под Scipy). Проблема в том, что я не могу понять, как это сделать с помощью только среднего и стандартного отклонения по шкале 0-1 (т.е. Возвращаемый ответ должен быть чем-то от 0-1). Я также не уверен, какой метод из dist, я должен использовать, чтобы получить ответ. Я пробовал читать документацию и просматривал SO, но соответствующие вопросы (например, this и this) казалось, не предоставили ответы, которые я искал.
Вот пример кода, с которым я работаю. Спасибо.
from scipy.stats import lognorm
stddev = 0.859455801705594
mean = 0.418749176686875
total = 37
dist = lognorm.cdf(total,mean,stddev)
UPDATE:
Итак, после небольшой работы и небольшого исследования, я получил немного дальше. Но я все еще получаю неправильный ответ. Новый код приведен ниже. Согласно R и Excel, результат должен быть 0,7434, но это явно не то, что происходит. Есть ли недостаток логики, который мне не хватает?
dist = lognorm([1.744],loc=2.0785)
dist.cdf(25) # yields=0.96374596, expected=0.7434
ОБНОВЛЕНИЕ 2: Выполнение работы lognorm, которое дает правильный результат 0,7434.
def lognorm(self,x,mu=0,sigma=1):
a = (math.log(x) - mu)/math.sqrt(2*sigma**2)
p = 0.5 + 0.5*math.erf(a)
return p
lognorm(25,1.744,2.0785)
> 0.7434