直方图的Scipy-lognorm拟合

2024-04-20 14:49:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我用对数正态pdf拟合一些二进制数据,但我的曲线与数据不太匹配,见下图。我的代码是:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import lognorm

data = genfromtxt('data.txt')
data = np.sort(data)

# plot histogram in log space

ax.hist(data, bins=np.logspace(0,5,200),normed=1)
ax.set_xscale("log")

shape,loc,scale = lognorm.fit(data)

print shape, loc, scale

pdf = sp.stats.lognorm.pdf(data, shape, loc, scale)

ax.plot(data,pdf)

plt.show()

它看起来是这样的:

enter image description here

我是否需要对形状、位置和比例进行合理的猜测?在

谢谢!在


Tags: 数据importlogdatapdfplotasstats
1条回答
网友
1楼 · 发布于 2024-04-20 14:49:07

您试图拟合的数据看起来不像对数正态分布。对数正态分布,当以对数x标度绘制时,应该看起来像正态分布。你展示的情节不是这样的。当分布不适合数据时,会得到奇怪的参数。在

您需要先了解数据是如何分布的(严格地说,这与SO无关),然后才能尝试适合某些内容。在

这是我们使用从对数正态分布随机抽取的数据时得到的结果:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import lognorm

np.random.seed(42)

data = lognorm.rvs(s=0.5, loc=1, scale=1000, size=1000)

# plot histogram in log space
ax = plt.subplot(111)
ax.hist(data, bins=np.logspace(0,5,200),normed=1)
ax.set_xscale("log")

shape,loc,scale = lognorm.fit(data)

x = np.logspace(0, 5, 200)
pdf = lognorm.pdf(x, shape, loc, scale)

ax.plot(x, pdf, 'r')

plt.show()

histogram and PDF of lognorm distribution look like normal distribution when the x-axis is logarithmic

相关问题 更多 >