SciPy统计对数正态分布,得到具有给定对数正态平均值和对数正态几何标准差的pdf



我正在处理液滴分布,为了我的工作,我想创建液滴分布图。在这种情况下,我需要lognorm.pdf来代替scipy。不幸的是,scipy构建函数lognorm.pdf有这样一个等式:

lognorm.pdf(x, s) = 1 / (s*x*sqrt(2*pi)) * exp(-1/2*(log(x)/s)**2)

就我的情况而言,我想使用维基百科的公式:

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文档明确指出

上面的概率密度是以"标准化"形式定义的。要移动和/或缩放分布,请使用loc和scale参数。具体地说,lognorm.pdf(x, s, loc, scale)是相同的相当于CCD_ 11与CCD_。

所以它似乎应该被称为

distr = lognorm.pdf(x, s, mu)

以获得期望的效果。

最新更新