scipy,对数正态分布 - 参数

新手上路,请多包涵

我想使用 python scipy.stats.lognormal.fit 使对数正态分布适合我的数据。根据 手册fit 返回 形状、位置、比例 参数。但是,对数正态分布通常只需要 两个参数:均值和标准差。

如何解释 scipy fit 函数的结果?如何获得均值和标准差?

原文由 Jakub M. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

scipy 中的分布以通用方式编码,有两个参数位置和比例,因此位置是参数( loc ),它将分布向左或向右移动,而 scale 是压缩或拉伸分布的参数。

对于二参数对数正态分布,“mean”和“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)

原文由 ars 发布,翻译遵循 CC BY-SA 3.0 许可协议

我只是花了一些时间解决这个问题并想在这里记录它:如果你想从 --- 的三个返回值中获得概率密度(在点 x lognorm.fit (让我们打电话他们 (shape, loc, scale) ),你需要使用这个公式:

 x = 1 / (shape*((x-loc)/scale)*sqrt(2*pi)) * exp(-1/2*(log((x-loc)/scale)/shape)**2) / scale

So as an equation that is ( loc is µ , shape is σ and scale is α ):

x = \frac{1}{(x-\mu)\cdot\sqrt{2\pi\sigma^2}} \cdot e^{-\frac{log(\frac{x-\mu}{\alpha })^2}{2\sigma^2}}

原文由 Chronial 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题