如何解决SciPy stats 对数正态分布获得具有给定对数正态分布均值和对数正态分布几何标准差的 pdf
我正在研究液滴分布,为了我的工作目的,我想创建液滴分布图。在这种情况下,我需要 lognorm.pdf
来表示 scipy
。不幸的是,scipy
构建函数 lognorm.pdf
有一个这样的等式:
lognorm.pdf(x,s) = 1 / (s*x*sqrt(2*pi)) * exp(-1/2*(log(x)/s)**2)
就我而言,我想使用公式形式 Wikipedia:
pdf = 1 / (s*x*sqrt(2*pi)) * exp(-1/2*((log(x)-mu)/s)**2)
最好的方程式是这样的:
(np.exp(-(np.log10(x) - np.log10(mu))**2 / (2 * np.log10(s)**2)) / ( np.log10(s) * np.sqrt(2 * np.pi)))*N
我确实有一个遵循 lest 方程的代码,但我只是想知道是否有任何方法可以使用 scipy
或任何其他 python 库来做到这一点?
解决方法
最简单的方法,如果 x
不太消耗内存:
tempX = x / np.exp(mu)
distr = lognorm.pdf(tempX,s)
甚至定义你自己的函数:
def lognormMu(x,mu,s):
tempX = x / np.exp(mu)
return lognorm.pdf(tempX,s)
#EDIT
另外,lognorm docs 明确声明
以上概率密度以“标准化”形式定义。
要移动和/或缩放分布,请使用 loc 和 scale
参数。具体来说,lognorm.pdf(x,s,loc,scale)
是相同的
相当于 lognorm.pdf(y,s) / scale
和 y = (x - loc) / scale
。
所以它似乎应该被称为
distr = lognorm.pdf(x,mu)
获得想要的效果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。