我已经在stackoverflow中看到了几个关于如何适合log-normal distribution
的问题。仍然有两个澄清我需要知道。
我有一个样本数据,其对数服从正态分布。因此,我可以使用scipy.stats.lognorm.fit
(即log-normal distribution
)拟合数据。
拟合工作得很好,也给出了标准差。这是我的一段代码和结果。
import numpy as np
from scipy import stats
sample = np.log10(data) #taking the log10 of the data
scatter,loc,mean = stats.lognorm.fit(sample) #Gives the paramters of the fit
x_fit = np.linspace(13.0,15.0,100)
pdf_fitted = stats.lognorm.pdf(x_fit,scatter,loc,mean) #Gives the PDF
print "scatter for data is %s" %scatter
print "mean of data is %s" %mean
x1c 0d1x结果
scatter for data is 0.186415047243
mean for data is 1.15731050926
为什么会这样?
在THIS POST和THIS QUESTION中,提到log(mean)
是实际平均值。
但是你可以从我上面的代码中看到,我得到的fit是使用了一个**sample = log(data)
**,它看起来也很适合。但是当我尝试
sample = data
pdf_fitted = stats.lognorm.pdf(x_fit,scatter,loc,np.log10(mean))
配合似乎不起作用。
1)为什么平均值不是14.2?
2)如何绘制填充/绘制显示1 sigma置信区间的垂直线?
1条答案
按热度按时间uemypmqf1#
你说
我有一个样本数据,其对数服从正态分布。
假设
data
是包含样本的数组。若要使用scipy.stats.lognorm
将此数据拟合为对数正态分布,请用途:现在假设mu和sigma是基础正态分布的平均值和标准差。要从该拟合中获得这些值的估计值,请用途:
(这些 * 不是 *
data
中样本的平均值和标准差的估计值。关于μ和σ形式的对数正态分布的平均值和方差的公式,请参见wikipedia page。)要合并直方图和PDF,您可以使用,例如,
如果你想查看数据的日志,你可以做如下的事情。注意这里使用的是 * 正态 * 分布的PDF。
顺便说一下,使用
stats.lognorm
拟合的另一种方法是使用stats.norm.fit
拟合log(data)
:相关问题: