【发布时间】:2019-03-05 03:09:28
【问题描述】:
我正在尝试拟合 lognorm 分布,但结果参数似乎有点奇怪。如果我误解了参数,请告诉我我的错误或向我解释。
import numpy as np
import scipy.stats as st
data = np.array([1050000, 1100000, 1230000, 1300000, 1450000, 1459785, 1654000, 1888000])
s, loc, scale = st.lognorm.fit(data)
#calculating the mean
lognorm_mean = st.lognorm.mean(s = s, loc = loc, scale = scale)
得到的平均值是:945853602904015.8。
但这没有任何意义。
平均值应该是:
data_ln = np.log(data)
ln_mean = np.mean(data_ln)
ln_std = np.std(data_ln)
mean = np.exp(ln_mean + np.power(ln_std, 2)/2)
这里得到的平均值是 1391226.31。这应该是正确的。
你能帮我解决这个问题吗?
最好的问候
诺比
【问题讨论】:
-
对数正态的平均值是 $\exp(\mu + \sigma^2/2)$。
-
是的。这就是我在第二部分中计算的内容。我不知道为什么我在第一部分没有得到相同的结果。
标签: python scipy statistics distribution data-fitting