python中的对数正态分布

Srivatsan

我已经在stackoverflow中看到了几个有关如何适合的问题log-normal distribution我仍然需要知道两个澄清。

我有一个样本数据,其对数遵循正态分布。因此,我可以用拟合数据scipy.stats.lognorm.fit(即log-normal distribution

拟合效果很好,并且还给了我标准偏差。这是我的代码片段及其结果。

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  

在此处输入图片说明 结果

scatter for data is 0.186415047243
mean for data is 1.15731050926

From the image you can clearly see that the mean is around 14.2, but what I get is 1.15??!! 为什么会这样呢? clearly the log(mean) is also not near 14.2!!

此帖子此问题中,提到的log(mean)是实际均值。

但是您可以从我上面的代码中看到,我获得的拟合度是使用the sample = log(data),它似乎也很合适。但是当我尝试

sample = data
pdf_fitted = stats.lognorm.pdf(x_fit,scatter,loc,np.log10(mean))

适合似乎不起作用。

1)为什么平均值不是14.2?

2)如何绘制显示1 sigma置信区域的填充/垂直线?

沃伦·韦克瑟

你说

我有一个样本数据,其对数遵循正态分布。

假设data是包含样本的数组。要使用将该数据拟合为对数正态分布scipy.stats.lognorm,请使用:

s, loc, scale = stats.lognorm.fit(data, floc=0)

现在假设mu和sigma是基础正态分布的均值和标准差。要从此拟合中获得这些值的估计值,请使用:

estimated_mu = np.log(scale)
estimated_sigma = s

(这些不是对中样本的均值和标准差的估计data。有关对数正态分布的均值和方差,以mu和sigma表示,请参见Wikipedia页面。)

要将直方图和PDF结合起来,可以使用例如

import matplotlib.pyplot as plt.

plt.hist(data, bins=50, normed=True, color='c', alpha=0.75)
xmin = data.min()
xmax = data.max()
x = np.linspace(xmin, xmax, 100)
pdf = stats.lognorm.pdf(x, s, scale=scale)
plt.plot(x, pdf, 'k')

如果要查看数据日志,可以执行以下操作。请注意,此处使用的是正态分布的PDF

logdata = np.log(data)
plt.hist(logdata, bins=40, normed=True, color='c', alpha=0.75)
xmin = logdata.min()
xmax = logdata.max()
x = np.linspace(xmin, xmax, 100)
pdf = stats.norm.pdf(x, loc=estimated_mu, scale=estimated_sigma)
plt.plot(x, pdf, 'k')

顺便说一句,拟合的替代方法stats.lognormlog(data)使用stats.norm.fit

logdata = np.log(data)
estimated_mu, estimated_sigma = stats.norm.fit(logdata)

相关问题:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Python中采样多元对数正态分布?

来自分类Dev

拟合对数正态分布(Python图)

来自分类Dev

绘制对数正态分布

来自分类Dev

绘制对数正态分布

来自分类Dev

在python中创建正态分布

来自分类Dev

将对数正态分布的拟合PDF缩放到python中的直方图

来自分类Dev

Python测试我的数据是否遵循对数正态分布

来自分类Dev

从Java中的数组生成对数正态分布

来自分类Dev

C ++中对数正态分布的累积函数的逆函数

来自分类Dev

从Java中的数组生成对数正态分布

来自分类Dev

C ++中对数正态分布的累积函数的逆函数

来自分类Dev

在Python中从正态分布生成数字

来自分类Dev

如何用Scipy拟合对数正态分布?

来自分类Dev

来自对数正态分布的随机样本

来自分类Dev

scipy kstest,用于 scipy 对数正态分布

来自分类Dev

使用python将“多峰”对数正态分布拟合到数据

来自分类Dev

如何在Excel中以对数正态分布创建随机数?

来自分类Dev

如何在Excel中以对数正态分布创建随机数?

来自分类Dev

如何在Python中创建logit正态分布?

来自分类Dev

Python-计算正态分布

来自分类Dev

Python-计算正态分布

来自分类Dev

在Matlab中绘制正态分布

来自分类Dev

如何从正态分布中采样?

来自分类Dev

如何使用pytorch获取jacobian的多元正态分布的对数概率

来自分类Dev

使用R拟合“多峰”对数正态分布

来自分类Dev

如何使用MATLAB计算对数正态分布的积分

来自分类Dev

生成对数正态分布的随机变量

来自分类Dev

基于正态分布的Python绘图点

来自分类Dev

按顺序生成正态分布python,numpy