scipy中的分布以通用的方式通过两个参数的位置和比例进行编码,因此位置是loc
将分布向左或向右移动的参数(),scale
而是压缩或拉伸分布的参数。
对于两个参数的对数正态分布,“均值”和“ std dev”对应于log(scale
)和shape
(可以让loc=0
)。
下面说明了如何拟合对数正态分布以找到感兴趣的两个参数:
In [56]: import numpy as np
In [57]: from scipy import stats
In [58]: logsample = stats.norm.rvs(loc=10, scale=3, size=1000) # logsample ~ N(mu=10, sigma=3)
In [59]: sample = np.exp(logsample) # sample ~ lognormal(10, 3)
In [60]: shape, loc, scale = stats.lognorm.fit(sample, floc=0) # hold location to 0 while fitting
In [61]: shape, loc, scale
Out[61]: (2.9212650122639419, 0, 21318.029350592606)
In [62]: np.log(scale), shape # mu, sigma
Out[62]: (9.9673084420467362, 2.9212650122639419)