我一直在尝试使用Scipy获取lognormal分布的结果。 我已经拥有Mu和Sigma,所以我不需要做任何其他准备工作。如果我需要更具体(而我正试图用有限的统计知识变得更具体),我会说我正在寻找累积函数(Scipy下的cdf)。问题是,我无法弄清楚如何仅使用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)
更新:
经过一些工作和一点研究,我有了一些进展。但是我仍然得到了错误的答案。新代码如下。根据 R 和 Excel,结果应该是0.7434,但显然不是这样的。我是否遗漏了逻辑上的缺陷?
dist = lognorm([1.744],loc=2.0785)
dist.cdf(25) # yields=0.96374596, expected=0.7434
更新2: 工作日志正态实现,可得到正确的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