【问题标题】:lognormal fitting with scipyscipy 的对数正态拟合
【发布时间】:2021-10-23 06:59:34
【问题描述】:
import scipy.stats as st

samp=st.lognorm(0.6,loc=2,scale=1).rvs(size=2000) # sample
param=st.lognorm.fit(samp, floc = 0) # fit the sample data
print(param) # does not coincide  with shape, loc, scale above!
x=np.linspace(0,10,100)
pdf_fitted = st.lognorm.pdf(x, param[0], loc=param[1], scale=param[2]) # fitted distribution
print(pdf_fitted)
pdf = st.lognorm.pdf(x, 0.5, loc=0, scale=1) # original distribution
plt.plot(x,pdf_fitted,'r-',x,pdf,'g-', color = "red")
plt.hist(samp,bins=30,normed=True,alpha=.3)

我想做对数正态拟合。 当我使用上面的代码时,绘制了“两个”拟合曲线。第一个(峰值约为 0.5)可能是错误的。第二条(峰值在 3 左右)是我想要的唯一曲线。

我该怎么办? 我已经破解了the similar question,但我不明白如何解决它。

使用了 Python 3.7.2、scipy 1.7.1、Mac 10.14.5。

【问题讨论】:

  • 要生成samp,您使用了loc=2。在下一行中,您使用floc=0,它告诉fitloc 参数固定为0。所以它当然不会匹配。尝试从fit 的调用中删除floc=0
  • 感谢您的评论。我尝试了下面的代码,得到了理想的图表。但是,为什么我总是得到两条曲线,而我不得不通过设置“loc = 10”来隐藏不理想的曲线? samp=st.lognorm(0.6,loc=2,scale=1).rvs(size=2000) # sample param=st.lognorm.fit(samp) # 拟合样本数据・・・ pdf = st.lognorm.pdf (x, 0.5, loc = 10, scale=1) # 原始分布···

标签: python scipy scipy.stats


【解决方案1】:

我知道下面的代码不正确。

pdf = st.lognorm.pdf(x, 0.5, loc=0, scale=1) # 原始分布

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-15
    • 2018-08-21
    • 2012-06-07
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多